JNI method call performance

Hi ,
I need to call C++ from java.
I want to have 10 methods that return primitives and call each one after the other.
Is it better performance (beside the general fact that 10 method calls is more time then 1) to call one method and return a structure of primitives ?
Will it be much worse performance then calling this methods if they were written in java and not in C++ ?

You can create a Java object in JNI (you can use an Object array, a String array if you have only Strings, or a true Java class object if you really do not like referring to fields by indexes) and return it. It is a laborious task, but not a complicated issue.
Performance issues: the java.util.BigInteger was programmed in JNI in earlier versions of the JDK. Today the JIT compiler produces acceptable code, so java.util.BigInteger does not use JNI code anymore - it is Pure Java. It is good enough to produce RSA digital signatures.

Similar Messages

  • "FlushLogFiles" menu command in Forte e-console affects method call performance

    Issue: When calling a Forte Wrapper Service Object of C Library on Unix, the execution of the call seems to be
    affected by executing the "FlushLogFiles" menu command on the service. Without the "flushing", the execution seems
    to take unreasonably long, even "hanging"; with the "flushing", the execution seems to reach expected performance.
    Env Details:
    Forte Verson: 5.0.3
    OS: Unix Solaris 8.0

    I would check the C Library code and make sure you are not writing anything to standard output. That is the only thing I can think about that would cause this problem.

  • JNI static method call fails for the 6th time

    Hello,
    I have a JNI Method which calls the static method which gets reference to singleton class(getReference()), JVM crashes.
    what might be the problem?
    is it due to insufficient memory or any other reason?
    Here is my code.
    eScannerClass = gEnv->FindClass("com/elvista/jscaner/EScanner");
    eScannerContructId = gEnv->GetStaticMethodID(eScannerClass,"getReference","()Lcom/elvista/jscaner/EScanner;");
    eScannerUpdateMethodId = gEnv->GetMethodID(eScannerClass,"updateScanStatus","(Lcom/elvista/jscaner/EScanEvent;)V");
    eScannerObjectRef = gEnv->NewObject(eScannerClass,eScannerContructId);Thanx for any help on this.

    Hi,
    the eScannerContructId is refering a static method, not a constructor. Therefore you must not use gEnv->NewObject, which is only allowed for constructors. Instead you have to use gEnv->CallStaticObjectMethod to call getReference().
    Martin

  • UnsatisfiedLinkError while calling a JNI Method

    Hi everyone,
    I have been struggling with this problem for two weeks now. I have a third party SDK that provides JNI library and all i need to do is implement the SDK, load the JNI library they have provided, and call the JNI methods. I was successfully able to load the JNI library and call the JNI methods when i don't put the classes in the package. But when i put the classes in a package then the library gets loaded successfully but an unsatisfiedLinkError occurs when calling the JNI methods. Please help!!! Please remember that the JNI library is provided by the third party vendor and I don't need to write the C/C++ code or call javah to create a .h file and then a c/c++ file.
    This is the error i get:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: ss.tts.JNILayer.InitDFTTSEngineEx3(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[I[I)V
         at ss.tts.JNILayer.InitDFTTSEngineEx3(Native Method)
         at ss.tts.Speech.test(Speech.java:854)
         at ss.tts.SSMain.main(SSMain.java:13)
    The three classes are SSMain, Speech, and JNILayer. JNILayer has the jni methods, speech calls the jni method, and SSMain is main class.
    Thank you in advance.

    which ever class which contains the "InitDFTTSEngineEx3" method. should not be altered, even its package should not be altered.[same for other class which has the native method declared in them]
    because in native code jni method signatures will be based on the java class's fully qualified name.
    so when you change the package the FQN will change and no matching method for this
    ss.tts.JNILayer.InitDFTTSEngineEx3(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[I[I)V
    will be found in native code.
    i hope u understood.

  • Calling a pure C function from JNI method

    Is it posible to call a pure C function from a JNI method.?
    I am communicating with an external device whose API is written in C language.
    Would it work this way
    If I declare empty native methods in Java and those methods in C call pure C methods?
    Thank You...

    Hello,
    I have a similar problem and I posted it here http://www.velocityreviews.com/forums/t724826-jni-calling-an-outside-function-in-the-c-file-which-is-being-called-by-the-java-file.html. If you can answer the question, it would greatly help me.
    Thanks
    Nick

  • Fastest method call

    Hi,
    All the method calls (instance, static, newObject,...) in JNI come in 3 forms, that are different regarding the lastest argument(s), which are the actual arguments of the method call :
    - one that take a variable number of args
    - one that take a jvalue[]
    - one that take a va_list.
    Is there any one of those that is known to be faster than the others ? Is is known according to experiments or by design?
    (Note : I am currently using Sun's JDK 1.3 & 1.4 on W2K)
    Thanks for your advice...
    C.Dore

    - one that take a variable number of args
    - one that take a jvalue[]
    - one that take a va_list.I can't speak to the middle one, but the 1st and 3rd are variations of the same thing. One might suppose that the first would be slightly slower than the 3rd because a variable assignment would be required in the 1st.
      void doit(char* format, ...)
        va_list vl;
        va_start( vl, format );
    .Of course the only way that I have ever found that increasing the performance of an application is to actually benchmark/profile it.

  • Int not increased when incremented in method call

    Hi,
    Could someone please explain why my int value is not increased in value when the increment is performed within a method call?
    private void printString(int i)
    if( i > 5)
          System.out.println("Greater than 5!");
    else
          printString(i++);
    }Thanks

    jverd wrote:
    masijade. wrote:
    It is incremented, just after the print, as pointed out above.No, it's incremented before the printString method is recursively called, but after the argument's value (the value of the expression i++) has been determined.
    As it stands, if he calls that method with i <= 5, it will recursively call itself with the same value until the stack blows up.Yes, yes, I know. Stupid me. The print just simply doesn't get the incremented value.
    P.S. I didn't realise it was a recursive method. I saw "print" and thought it was simply an SOP (you know what they say, that you see what you expect to see). ;-)

  • A method call question.

    I am trying to check if leg1 is a positive integer, but I method call checkleg, and perform my if statement, but it will not return a 'valid = true' to my public static main. It is always false. please help!
    * TriangleTest.java
    * Created on October 3, 2007, 4:10 PM
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package triangletest;
    * @author Nate
    import java.util.Scanner;
    public class TriangleTest {
        /** Creates a new instance of TriangleTest */
        public TriangleTest() {
         * @param args the command line arguments
        public static void main(String[] args) {
            // TODO code application logic here
         System.out.println ("**Triangle Validation Tool**");
         int leg1 = 0;
         int leg2 = 0;
         int leg3 = 0;
         int sumOfLegs;
         int count = 0;
         Boolean validIs = false;
         Boolean valid = false;
         Scanner input = new Scanner (System.in);
            System.out.println("Please enter the length of leg #1:");
            leg1 = input.nextInt();
            checkleg (leg1);
            System.out.println(valid);
            System.out.println("Please enter the length of leg #2:");
            leg2 = input.nextInt();
            System.out.println("Please enter the length of leg #3:");
            leg3 = input.nextInt();
            sumOfLegs = leg1+leg2+leg3;
            if (sumOfLegs != 180)
                System.out.println("Sorry, legs of lengths " + leg1+ ", "
                        + leg2+ ", and " + leg3 + " do NOT form a triangle!");
            else
                System.out.println("Congrats!");
        public static Boolean checkleg (int leg1){
            Boolean valid = false;
            if (leg1>0){
            valid = true;
            System.out.println(valid);
        return valid;
        }}Thanks

    Yippee!! the code tag button is back!!
    Please see comments:
         Boolean validIs = false;  // probably want to use "boolean" not "Boolean"
         Boolean valid = false;  // ditto
         Scanner input = new Scanner (System.in);
            System.out.println("Please enter the length of leg #1:");
            leg1 = input.nextInt();
            checkleg (leg1); // see my previous post
            sumOfLegs = leg1+leg2+leg3;
            if (sumOfLegs != 180)  // I hope you will correct this logic.
                System.out.println("Sorry, legs of lengths " + leg1+ ", "
                        + leg2+ ", and " + leg3 + " do NOT form a triangle!");
            else
                System.out.println("Congrats!");
        public static Boolean checkleg (int leg1){
            // note that while your local "valid" variable has the same name as the class "valid"
            // variable, they are both different variables and changing one will NOT change the other.
            Boolean valid = false;
            if (leg1>0){
            valid = true;
            System.out.println(valid);
        return valid;
        }}

  • Combine standard task (ABAP method call) and additional UWL Action Handlers

    Hi, i have defined a task with an asynchronous ABAP method call and a terminating event which i want to use "as is" in the universal worklist, that means that the standard action has to be the ABAP method call defined for the task.
    In addition to that i want to add an extra button to the workitem view in the worklist which opens a web dynpro application. The web dynpro needs a parameter from the workitem container. Opening the web dynpro is not required for completing the task, so i do not consider using secondary methods.
    I created an UWLConfiguration for the task type without defining the defaultAction attribute, since defaultAction should not be overwritten. I wanted to use SAPWebDynproABAPLauncher to generate the button since i can easily include values from the workitem container in the call.
    When executing a workitem from the worklist the ABAP method call is not performed, instead a window opens which just displays the workitem. The button to web dynpro is generated and works fine.
    Does anyone have a clue how i can use UWL to define an additional button with SAPWebDynproABAPLauncher without overwriting the standard task definition?
    My definition:
    <ItemTypes>
        <ItemType
    name="uwl.task.webflow.TS95100103"
    connector="WebFlowConnector"
    defaultView="DefaultView">
          <ItemTypeCriteria
    systemId="ED1CLNT100"
    externalType="TS95100103"
    connector="WebFlowConnector"/>
          <CustomAttributes>
            <CustomAttributeSource
    id="WEBFLOW_CONTAINER"
    objectIdHolder="externalObjectId"
    objectType="WebFlowContainer"
    cacheValidity="final">
              <Attribute
    name="HROBJECT_OBJEKTID"
    type="string"
    displayName="HROBJECT_OBJEKTID"/>
            </CustomAttributeSource>
          </CustomAttributes>
          <Actions>
            <Action
    name="launchWebDynPro"
    groupAction=""
    handler="SAPWebDynproABAPLauncher"
    returnToDetailViewAllowed="yes"
    launchInNewWindow="yes"
    launchNewWindowFeatures="resizable=yes,scrollbars=yes,
    status=yes,toolbar=no,menubar=no,
    location=no,directories=no">
              <Properties>
                <Property
    name="WebDynproApplication" value="hr01_app"/>
                <Property
    name="newWindowFeatures"
    value="resizable=yes,scrollbars=yes,status=yes,
    toolbar=no,menubar=no,location=no,directories=no"/>
                <Property
    name="DynamicParameter"
    value="candidacy_id=${item.HROBJECT_OBJEKTID}
    &amp;from_workflow=X"/>
                <Property
    name="openInNewWindow" value="yes"/>
                <Property
    name="System" value="SYSTEM_ALIAS_ERP"/>
                <Property
    name="WebDynproNamespace" value="hr01"/>
              </Properties>
              <Descriptions default="Show"/>
            </Action>
          </Actions>
        </ItemType>
      </ItemTypes>
    Thank you very much, best regards, Martin
    Edited by: Martin Sommer on Dec 1, 2008 5:51 PM

    found a solution with transaction launcher and custom transaction

  • Clarification on application method calls from backing bean.

    Hi Experts ,
    In our application we are using two different ways to call application module methods from backing bean.
    allication module method name : addRowValidUnitInfo
    it has 2 parameters serialNumber,modelNumber
    1.
    BindingContainer bindings1 =
    BindingContext.getCurrent().getCurrentBindingsEntry();
    OperationBinding serialModelDetails =
    bindings1.getOperationBinding("addRowValidUnitInfo");
    serialModelDetails.getParamsMap().put("serialNumber",
    serialNumber.getValue().toString());
    serialModelDetails.getParamsMap().put("modelNumber",
    modelNumber.getValue().toString());
    serialModelDetails.execute();
    String result =serialModelDetails.getResult().toString();
    2.
    EWarrantyAdminModule appModule =(EWarrantyAdminModule)
    Configuration.createRootApplicationModule(amDef,config);
    try {
    String result = appModule.addRowValidUnitInfo(serialNumber.getValue().toString(), modelNumber.getValue().toString());
    } catch (Exception e) {
    finally {
    Configuration.releaseRootApplicationModule(appModule,true);
    Can any one tell me which one gives best performance and which one should be used in which situations.
    For me both are working fine but just want to know whcih is the best practice and which gives best performance.
    Regards
    Gayaz

    The approach 1 is the right way.
    Reasons:
    1) With Approach 2 - you are creating new ApplicationModule on the fly and release it at the end of the request. If you are invoking multiple method calls, you need to the same for each & every call.
    This is not reusing the existing application module.
    2) If the use cases which does calls for maintaining state across requests from the same client - across the application flow, Approach 2 cannot be used.
    Read this blog post from Jobinesh (which indirectly distinguishes both these approaches).
    http://jobinesh.blogspot.com/2010/04/invoking-applicationmodule-from-servlet.html
    Thanks,
    Navaneeth

  • Rendered property equal result of method call ? Can it be done

    Hi Guys
    Is it possible to set the rendered property to the result of a method call.
    So for example I have an Input Text Item and I want to turn it on or off depending on whether the value of the date selected is a saturday.
    I was hoping to add a method to the backing bean called boolean isSaturday() and use the result of that on the Rendered property.
    Does anyone know if this is possible and provide an example of the EL syntax required to perform this function.
    Thanks in advance
    Kris

    Hi Kris,
    off course this is possible using Expression Language. Mention following condition in the rendered attribute of a (Faces) UI component and the method (getter) in the backing bean:
    rendered="#{userInfo.admin}" UserInfo class:
        private boolean admin = false;
        public void setAdmin(boolean admin) {
         this.admin = admin;
        public boolean isAdmin() {
         return admin;
        }The component will render depending on the value of the admin variable.
    Regards,
    Koen Verhulst

  • Retrieving client identity during method call

    Hy,
    I have written an RMI application wich uses JSSE with client authentication. I would like to get the client Identity (Certificate information) each time the client perform a method call.
    Can anybody help me?

    This is rather complicated but it can be done. You need:
    1. an RMIServerSocketFactory which returns
    2. a wrapper ServerSocket implementation around a real ServerSocket, which delegates everything to the real ServerSocket except for the accept method, which does the delegation but then wraps the result in
    3. a wrapper Socket implementation around the real Socket which delegates everything to the real Socket
    except getInputStream, which does the delegation but then wraps the result in
    4. a wrapper InputStream implementation around the real InputStream, which delegates everything to the real input stream but which registers the underlying Socket (the delegate, not your wrapper) in a ThreadLocal when any read method is called.
    Are you with me so far? ;-)
    The registered Socket will really be an SSLSocket. Now, inside your remote method implementation, you can do threadLocal.get() to get the SSLSocket associated with the current client (because you're in the same thread as in (4), because the socket is actually read for the first time in the method despatching thread. You can now do SSLSocket.getSession() and get hold of the client certificates.
    Sample of (2) to get you started:
    public class WrappedServerSocket extends ServerSocket
    SSLServerSocket serverSocket;
    public WrappedServerSocket(int port) throws IOException
    { this.serverSocket = SSLServerSocketFactory.createServerSocket(port); }
    public Socket accept() throws IOException
      Socket socket = serverSocket.accept();
      return new WrappedSocket(socket);
    // all other methods should delegate to serverSocket
    }EJP

  • Understanding Regex replace method call involving delegate

    Hello,
    I am trying to understand the $regex.replace static method call below (I came across this code snippet in the cookbook).
    $replacer = {
    param($match)
    $chars = $match.Groups[0].Value.ToCharArray()
    [Array]::Reverse($chars)
    $chars -join ''
    $regex = [Regex] "\w+"
    $regex.Replace("Hello World wide", $replacer)
    What I do not understand is the below overloaded definitions for replace method do not seem to match the above replace call. So how exactly is this working? The above call has 2 parameters passed where as none of the below overloads have less than
    3 parameters.
    PS C:\WINDOWS> [regex]::replace
    OverloadDefinitions
    static string Replace(string input, string pattern, string replacement)
    static string Replace(string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options)
    static string Replace(string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options, timespan matchTimeout)
    static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator)
    static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options)
    static string Replace(string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options, timespan
    matchTimeout)

    What you are looking at are the static methods ([regex]::) and their appropriate parameters which in this case have a minimum of 3 parameters to properly perform the Replace using the input, pattern and replacement
    value. If you were to use the constructor of [regex] to create a pattern like this:
    $Regex = [regex]'\w'
    You will see that the Replace method here allows for only 2 parameters because you have already satisfied the pattern when you created the Regex object.
    $Regex.Replace
    OverloadDefinitions
    string Replace(string input, string replacement)
    string Replace(string input, string replacement, int count)
    string Replace(string input, string replacement, int count, int startat)
    string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator)
    string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count)
    string Replace(string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count, int startat)
    Boe Prox
    Blog |
    Twitter
    PoshWSUS |
    PoshPAIG | PoshChat |
    PoshEventUI
    PowerShell Deep Dives Book

  • Im new to java can someone please help me with external method calls

    I have only been doing java for a couple of months using bluej, I really dont understand external method calls, this is for an assignment and i have managed the bulk of the code, ineed to make external calls to the other classes to return and input data.
    this is the code i have writen so far.
    class CD
    // The fields.
    public Artist performer;
    private String album;
    private String genre;
    private int numberOfTracks;
    private int yearReleased;
    *Please enter CD details, text entry requires quote marks "Greatest Hits"
    public CD (String album_Name){
    album = album_Name;
    numberOfTracks = 0;
    yearReleased = 0;
    performer = new Artist();
    /**blank constructor*/
    public CD ()
    {album = "";
                genre = "";
                numberOfTracks = 0;
                yearReleased = 0;
                performer = new Artist();}
    * accessor methods
    /** method to return album details to the output window*/
    public void print_albumDetails(){
    System.out.println("Album: " + album);
    System.out.println("Genre: " + genre);
    System.out.println("Number of Tracks: " + numberOfTracks);}
    /** accessor method to return the name of the album*/
    public String show_album(){
    return album;}
    /** accessor method to show artist details from artist class*/
    public void print_details(){
    performer.print_details();}
    * mutator methods
    /** mutator method to change album name please enter name with quotes*/
    public void change_album(String newAlbum){
    album = newAlbum;}
    /**mutator method for adding the album year and checking it correct
    * please enter a year between 1900 and 2005*/
    public void album_year (int year){
    if ((year < 1900) || (year > 2005))
    System.out.println("sorry the year is incorrect please enter a year between 1900 and 2005");
    else yearReleased = year;}
    /** mutator method to alter the number of tracks and check if the ammount is greater
    * than zero*/
    public void change_Number_Of_Tracks(int no_Of_Tracks){
    if (no_Of_Tracks > 0)
    numberOfTracks = no_Of_Tracks;
    else System.out.println("you have not entered a correct number");}
    /** mutator method to change the genre and check it has been entered correctly
    * Please enter 1 for Soul
    * 2 for Blues
    * 3 for Jazz*/
    public void change_Genre(int Change_Genre){
    if ((Change_Genre <= 0) || (Change_Genre > 3)){
    System.out.println("You have not entered the correct available genres");
    System.out.println("which are 1 for Soul,2 for Blues or 3 for Jazz");}
    else if (Change_Genre == 1)
    genre = "Soul";
    else if (Change_Genre == 2)
    genre = "Blues";
    else if (Change_Genre == 3)
    genre = "Jazz";
    to this i need to add an external call to the class Artist to be able to enter firstname and second name, I know that external calls use dot notation
    and the instance of Artist is called performer but i cant get the call to these methods in the Artist class to work
    Artist class
    /** mutator method to change or add artist first name, remember to add quotes*/
    public void cName(String name){
    firstname = name;}
    /** mutator method to change or add artist surname remember to add quotes*/
    public void csurName(String surname){
    lastname = surname;}
    can some please give me some help

    Also, if you can't get them to work, what is the error message you are getting?
    Baron Samedi

  • Native - Java Method Call problem - "Wrong Method ID..."

    I am writing a 3d game engine using c++, with all the game logic code in Java, for the purpose of making the thing extendible, easily modifyable, etc...
    I am using J2SE JDK 1.2.2.
    Most things work fine (engine-wise), but i have a few questions about problems i am having getting the JNI to work correctly with calls to Java Methods.
    1. If I use FindClass() to get a jclass reference to a named class, I get one number back. If I then instantiate this class, and then call GetObjectClass() with the instance, I get another number, **which doesnt appear to work for anything**. What is going on here? Can the JVM give different jclass numbers for the same class? Is GetObjectClass() supposed to work?
    2. Is AllocObject() alright for instantiating Java objects? It does seem to allocate memory, and method calls work to the new object. I am aware that it doesn't call a constructor, but I like that, seeing as the initialization is handled through a different [network-synchronized] means.
    3. Using a jclass retrieved using FindClass(), which I store in a global variable, I am able to call methods on an instance that I created in a certain function. I then make sure (?) that the GC can't reclaim the class or object memory by getting a NewGlobalReference to both of them [just to be safe]. However, in a later function, I am unable to call methods using my stored method IDs, ["Wrong Method ID....JVM has been asked to shut down this application in an unusual manner..."]. I am also unable to acquire new methodIDs, as the system returns 0xCCCCCCCC for all method ID queries. Obviously, attempting to use those bogus method IDs results in a JVM crash, in a segment called [2 deep in the untraceable depths of JVM.dll] from the JNI CallVoidMethodV() function. Why is this happening? Is the GC getting in there despite my best efforts? Is it illegal to cache methodIDs, jclass references or jobject references? aaarrggh! :)
    Thanks
    Chris Forbes
    Lead Programmer
    Sprocket Interactive
    [email protected]

    Hi Chris,
    I hit the same sort of problem, when writing a JVMDI ( VM debugger hook ), in C++.
    My question remained unanswered too
    http://forum.java.sun.com/thread.jsp?forum=47&thread=461503&tstart=30&trange=30
    I didn't try a call to NewGlobalRef, as you did... but it sounds like it could be what I was missing.
    I've a couple of ideas, but nothing definite for you.
    1) maybe there's more than one classloader, so that multiple copies of the class are loaded
    2) ensure you're compiling your DLL with "quad-word" ( 8 byte ) alignment.
    Otherwise all your JNI references will be misaligned !
    Since the JNI reference maps to a C++ pointer, it's possible that you can't cache any JNI references.
    That's my vague feeling on the subject.
    As a workaround, you may have to keep requesting any JNI references, eg. jclass & jmethod's, as you need them.
    regards,
    Owen

Maybe you are looking for

  • Cant delete a theme in Lion!

    I know this has been posted (becuase I did a search) but the soultions dont work for me. Possibly because I am using Lion? Can someone post the instructions how to delete a custome theme in Keynote? I create a bunch and thought that they could easily

  • Where is the official documentation for Wireless OTA Enterprise App Distribution?

    Where is the official documentation for Wireless OTA Enterprise App Distribution? It used to be here: http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_ App_Distribution/Introduction/Introduction.html The above link is p

  • Maximum size param in file channel

    Hello All, What is the parameter to mention in the sender communication channel to restrict huge files I remember there is a paramter that can be configured in channel Maximum File Size Can someone tell me the exact syntax for that THanks, Regards, M

  • Opening Mail attachments

    I have received an attachment on my MacBook Pro Mail program which is a file designated winmail.dat. How do I open it? Many thanks

  • Can't cancel subscription

    I took out a 1 month subscription for 400 minutes to France to call a friend on her mobile phone. I have used all the minutes and tried to cancel the subscription before I get charged for another month. I clicked on the cancel link and all the subseq