Understanding benefits of RMI

I am starting out on a new project where one of the key aims is to free up the current hold on application licenses that users have. Users currently log in, grab hold of a license, access the external system the image is for, and don't free up the license until they log out. I want to change this to be a web application with some sort of control over the availability of licenses. I don't know if RMI is what I need but i want to have a central class, with a method to login to the external application, get the object back they need, and logout again, thus freeing up the license again. I want all 400 users to use this one method but 'host it' on another machine not the web server.
The crux of my problem is that I want this class to run more like a pool of licenses that are grabbed, used and freed up immediately. I just don't know the right technology to do it! How would RMI help with this problem?

You seem to be talking about writing a front-end to your licensed server - whatever that is.
As I understand your proposed process, your users make requests resulting in small atomic access to your licensed server. However your users are doing direct login/logout, and they hold a license in the entire interval.
Your users can just as well log into your front-end server. You can allow them to stay logged in as long as they wish, but your front-end server will, in fact, do the actual login/query/logout on the "real" server.
Sounds like a worthy project for RMI.
o Your client programs make RMI requests to your front-end server.
o Your front-end server does whatever authentication is required, returns some kind of a session object to the client.
o Client makes a data request (passing the session object.)
o Front end looks up the session object, uses the authetication data to access the real server, returns to the client the required data.
o Client eventually logs out, passing the session object. Your front-end server eliminates the session from its records.
Those user requests are inherently multi-threaded. You can use either a single license, or manage a pool. You simply block any pending requests until a license is available.
You might want to check if doing this kind of thing invalidates your server license, or violates the licensing terms.

Similar Messages

  • Java Web Services accessing rmi server

    Hi,
    I want to access the rmi server from a java web services.My java web services is running under Sun application server9.The rmi server is not using any application server.Please help me to sort out the problem.
    Bye
    Binay

    What's the problem exactly? I assume you understand that the RMI server has to run like any RMI server, it has to bind itself into a Registry; the Web server acts as an RMI client so it has to look up the Registry to get a remote reference so it can call the required remote methods.

  • How to find out the IP@s of all nodes in a cluster?

    Is there any way to retrieve the IP addresses of all nodes in a cluster?
    The problem is the following. We intend to write an administration program
    that administers all nodes of a cluster using rmi (e.g. tell all singletons
    in the cluster to reload configuration values etc.). My understanding is
    that rmi only talks to a single node in a cluster. It would be a convenient
    feature if the administration program could figure out all nodes in a
    cluster by itself and then administers each node sequentially. So far we're
    planning to pass all IP addresses to the administration program e.g. as
    command line arguments but what if a node gets left out due to human error?
    Thanks for your help.
    Bernie

    There is no public interface to inquire about the IP addresses of the servers in a cluster. If you use WLS 6.0, there is an administrative console that uses JMX to manage the cluster. Perhaps that would be of use to you?
    Bernhard Lenz wrote:
    Is there any way to retrieve the IP addresses of all nodes in a cluster?
    The problem is the following. We intend to write an administration program
    that administers all nodes of a cluster using rmi (e.g. tell all singletons
    in the cluster to reload configuration values etc.). My understanding is
    that rmi only talks to a single node in a cluster. It would be a convenient
    feature if the administration program could figure out all nodes in a
    cluster by itself and then administers each node sequentially. So far we're
    planning to pass all IP addresses to the administration program e.g. as
    command line arguments but what if a node gets left out due to human error?
    Thanks for your help.
    Bernie

  • RemoteException LOCALHOST is non-local host

    Hello RMI gurus,
    I am trying to run an example RMI application to get a better understanding of how RMI works, but I have encountered this problem. The error I am getting is this:
    Error: RemoteException occured in server thread; nested exception is:
    java.rmi.AccessException: Registry.Registry.rebind disallowed;
    origin
    LOCALHOST/127.0.0.1 is non-local host
    I have the rmiregistry running on the default port on the same system that I am trying to run the server part of the program, and am using Java 1.3. Here is how I start the program:
    java -Djava.rmi.server.codebase=file:///java/verify/ -cp /java/verify FibonacciServerAlso, I bind my object to rmi with this call in the FibonacciServer class:
    Naming.bind("fibonacci", f);
    I am guessing it is choking on this.
    Any way...thanks in advance for any help with this!
    C.M.

    Naming.bind("fibonacci", f);
    Naming.bind("//localhost/fibonacci",f);You can add rmi: in front of localhost but it is not essential.

  • What's the recommended guideline on backing up a recovery catalog?

    while I understand "Benefits of Using the Recovery Catalog as the RMAN Repository" as stated in
    http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96566/rcmquick.htm#442214
    as well as things to take note if using control file as the sole rman repository,
    as stated in "Monitoring the Overwriting of Control File Records" in http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96566/rcmrepos.htm#446924
    I do not understand why in Backup and Recovery Advanced User's Guide
    http://download.oracle.com/docs/cd/B14117_01/server.101/b10734/rcmrepos.htm
    "Back Up the Recovery Catalog Often"
    Even if you have to restore the recovery catalog database using a control file autobackup, you can then use the full record of backups in your restored recovery catalog database to restore the target database without using a control file autobackup for the target database.
    =>probably implies that we can use another recovery catalog let's call it backupbackup to restore the recovery catalog
    "Choosing the Appropriate Method for Physical Backups"
    Follow these guidelines when developing an RMAN backup strategy for the recovery catalog database:
    * Run the recovery catalog database in ARCHIVELOG mode so that you can do point-in-time recovery if needed.
    * Set the retention policy to a REDUNDANCY value greater than 1.
    * Back up the database onto two separate media (for example, disk and tape).
    * Run BACKUP DATABASE PLUS ARCHIVELOG at regular intervals, to a media manager if available, or just to disk.
    * Do not use another recovery catalog as the repository for the backups.=> this contradicts the previous statement
    * Configure the control file autobackup feature to ON.
    so may I know what's the recommended guideline on backing up a recovery catalog? should we use another recovery catalog to keep the rman repositories of the the main primary catalog or just use a control file autobackup feature?
    thanks

    I understand the question and the confusion.
    Please note, however, that this forum is for discussing problems and errors with the documentation in general. Your question is related to a specific product and is, as far as I can tell, not a note about a documentation error or a correction.
    The appropriate place to discuss this is the Database (General) forum or - perhaps surprisingly - the RMAN forum. These can both be found by
    1) Clicking on the 'Forum Home' link at the top of this page;
    2) Scrolling down to the category 'Database' (a category is identified by a special row format that does not list the number of topics)
    3) Expanding the category by clicking on the 'More ...' link.
    4) Scrolling down to the "Database - General" or "Recovery Manager" forum and clicking on it's link.
    Note that forums have a search function that may be used to find answers if someone has already asked a similar question.

  • Problem connecting 2 machines

    My application runs ok when i do it localy but when i run server in a different machine i get the follwing error. This happen after i connect to the server :
    Exception in thread "main" java.rmi.RemoteException: connection failed to host: 127.0.0.1; nested exception is:
    java.net.ConnectException: Connection refused
    at gnu.java.rmi.server.UnicastRef.invokeCommon(libgcj.so.7)
    at gnu.java.rmi.server.UnicastRef.invoke(libgcj.so.7)
    at PowerServiceServer_Stub.power(Unknown Source)
    at PowerServiceClient.main(PowerServiceClient.java:76)
    Caused by: java.net.ConnectException: Connection refused
    at gnu.java.net.PlainSocketImpl.connect(libgcj.so.7)
    at java.net.Socket.connect(libgcj.so.7)
    at java.net.Socket.connect(libgcj.so.7)
    at java.net.Socket.<init>(libgcj.so.7)
    at java.net.Socket.<init>(libgcj.so.7)
    at gnu.java.rmi.server.RMIDefaultSocketFactory.createSocket(libgcj.so.7)
    at gnu.java.rmi.server.UnicastConnectionManager.getClientConnection(libgcj.so.7)
    at gnu.java.rmi.server.UnicastConnectionManager.getConnection(libgcj.so.7)
    at gnu.java.rmi.server.UnicastRef.invokeCommon(libgcj.so.7)
    ...3 more
    This is how i call registry in the client code, where args[0] i give as an input before the program runs (for example cs4489.in.cs.xxx.xx)
    PowerService service = (PowerService) Naming.lookup
    ("rmi://" + args[0] + "/PowerService");
    And this is the code in the server code in machine 2
    PowerServiceServer svr = new PowerServiceServer();
    Naming.bind ("PowerService", svr);
    PowerServise is interface class

    I really dont understand java -Djava.rmi.server.hostname=<IP address of server> -Djava.security.policy=<URL of policy file>
    Also why are you trying to setjava.security.policy
    on the command line and in the code?I dont know i read it from another forum. I don't think so. If you did it was rubbish. You either set a property with -D on the command line or in the code. If you set it on both, the setting in the code overrides the setting on the command line.
    What i should doSet java.rmi.server.hostname at the server JVM to the correct public IP address of the server, as shown above.

  • When taking my file on another machine its showing error?

    Following error is coming up.
    Description Resource Path Location Type
    1172: Definition avmplus:FLASH10_FLAGS could not be found. Assignment.mxml /Assignment/src line 17 Flex Problem
    <fx:Script>
    <![CDATA[
    import avmplus.FLASH10_FLAGS;
    ]]>
    </fx:Script>
    This 'import' line is troubling. Please help me out.
    Though i have changed the path of all the other files related to the main mxml file but i cant understand the error

    For RMI you need to run a process on the machine the file is stored at. You need a server and a client process (same as ftp).
    Well you may also use many other client/server protocols for this. Plain TCP/IP has the advantage of generating the lowest network traffic, FTP is designed for File Transfer and is well tested. You need to relogin everytime you get the file. RMI or IIOP have a bigger overhead. For TCP, RMI and IIOP you need to install a server process on the machine the file is on. FTP should be installed already.
    FTP, IIOP/RMI and TCP either keep a open connection or must reconnect every time you want to read the file. Using IIOP/RMI or TCP allows you to implement some push mechanism - so the connection can be made from the server (the machine where the file is) and the file pushed to your machine when changing.
    You need to find the right solution for your case out of these advantages/disadvantages.

  • Which Language is right for the job?

    Currently we have a LabVIEW application that a 3rd party vendor created specifically for our needs. This application handles all data logging and instrument control of a large printing press. There is a secondary program that was developed in-house that acts as the user interface to this LabVIEW program and communicated through DDE. My question centers around the fact the we are currently in the process of upgrading the functions of these two programs and would very much like to maintain only one development language. Should we do everything in LabVIEW or VB/C++ with Measeurement Studio? Can someone please point out some quick easy to understand benefits of using either language and which they feel would be a strong
    er environment for a growing department. Thanks.

    timsorenson wrote in message
    news:[email protected]..
    > Currently we have a LabVIEW application that a 3rd party vendor
    > created specifically for our needs. This application handles all data
    > logging and instrument control of a large printing press. There is a
    > secondary program that was developed in-house that acts as the user
    > interface to this LabVIEW program and communicated through DDE. My
    > question centers around the fact the we are currently in the process
    > of upgrading the functions of these two programs and would very much
    > like to maintain only one development language. Should we do
    > everything in LabVIEW or VB/C++ with Measeurement Studio? Can someone
    > please point out some quick easy to understand benef
    its of using
    > either language and which they feel would be a stronger environment
    > for a growing department. Thanks.
    Well, you asked in a Labview group, so my answer is Labview.
    Of course, it depends on what software you need written.
    Here are my reasons.
    1) If you require instrument control (DAQ etc), etc. labview is very very
    good!
    2) Development time in labview is very short, you can't beat it in the
    speed in which you can go from initial architecture to final application.
    3) It sounds like the majority of the code you mention is already in
    labview.
    It is easier to write "user interface" in labview than to write "instrument
    control"
    in CB/C++.
    4) You can always hire labview programmers on contract. The NI Alliance is
    good for this. (but of course, you can hire anyone you want for c++ too).
    Cheers,
    bob stockwell
    [email protected]
    Sunrise Software, LLC
    7421 Mt. Sherman Rd.
    Longmont, CO 80503

  • Format a WD passport drive for MAC

    Need to understand benefits of partitioning more than 1 partition and format options.  Your help will be appreciated
    Dave

    First of all use Disk Utility to format the disk. If Western Digital included any Mac-compatible utilities, do not use or install any. You don't need them and there have been reports of problems associated with their use.
    If you want to use the WD Passport for a Time Machine backup, format the disk as "Mac OS Extended (Journaled)". Do not specify case-sensitive unless you have good reason to. Encryption is up to you but I find it adds needless complexity.
    You can elect to partition a disk as you see fit. The partitions can have different file formats. If you want to use the disk with Windows computers, format that partition as ExFAT.
    Partitioning has its uses, but remember a mechanical or other catastrophic disk failure means all the disk's partitions will be lost.

  • No SPDIF passthrough when Dolby Digital Live is enabled?

    Hello,
    I have SB Audigy 2 ZS and Logitech Z-5500 speakers connected digitally and I am using Win XP SP3.
    I bought Dolby Digital Li've Pack and I have a problem with not getting SPDIF Passthrough for DTS audio.
    Before I enabled DDL, when I played back content with DTS-encoded audio, audio was passed through SPDIF to the decoder in Logitech speakers and the DTS logo would appear on the display of Z-5500 console. And decoding chain from AC3Filter would look like this:
    Decoding chain:
    (DTS - 48000) -> Spdifer -> (SPDIF 3/2. (5.) 48000) -> Dejitter -> (SPDIF 3/2. (5.) 48000)
    And there is also information: "SPDIF status: SPDIF passthrough"
    This is straightforward - DTS audio stream goes to SPDIF output.
    Of course this would only work if I chose SPDIF Passthrough option in Decoder tab of Audio console.
    But after I enabled Dolby Digital Li've and played back DTS stream, the DTS logo would no longer appear on the console, which meant that the SPDIF passthrough was not working, despite the fact that it was still enabled in the drivers. For contrast, the Decoding chain for DTS after I turned on DDL looks like this:
    (DTS - 48000) -> Decoder -> (Linear PCM 3/2. (5.) 48000) -> Processor -> (PCM24 3/2. (5.) 48000) -> Dejitter -> (PCM24 3/2. (5.) 48000)
    And there is info: "SPDIF status: Disabled (SPDIF output is not supported)" and info of what is happening under the "processor" stage
    Processor:
    (Linear PCM 3/2. (5.) 48000) -> Input levels -> (Linear PCM 3/2. (5.) 48000) -> Equalizer -> (Linear PCM 3/2. (5.) 48000) -> SRC -> (Linear PCM 3/2. (5.) 48000) -> Mixer -> (Linear PCM 3/2. (5.) 48000) -> Bass redirection -> (Linear PCM 3/2. (5.) 48000) -> Dither -> (Linear PCM 3/2. (5.) 48000) -> AGC -> (Linear PCM 3/2. (5.) 48000) -> Delay -> (Linear PCM 3/2. (5.) 48000) -> Spectrum -> (Linear PCM 3/2. (5.) 48000) -> Output levels -> (Linear PCM 3/2. (5.) 48000) -> Linear->PCM converter -> (PCM24 3/2. (5.) 48000)
    Much, much more steps along the way, which probably means inferior quality and also is in disregard of the SPDIF Passthrough that I had enabled.
    Same thing happens when you play "nati've" Dolby Digital stream - instead of being passed through SPDIF to external decoder it is somehow "hijacked" by Dolby Digital Li've and needlessly tampered with.
    My question is - how can this be disabled. I understand benefits of Dolby Digital Li've (that's why I bought it) but they stop being benefits when they interfere with legitimate DTS audio which should not be "down-decoded" into Dolby Digita - it should be passed through to the Decoder.
    Not to mention that DTS Connect is not supported in Windows XP. "Real" digital DD and DTS streams should? be passed through untoched, and ony converted audio (mp3s, games, etc) should be decoded into DD. Otherwise there's degradation of quality.
    The only "benefit" I noticed is that DDL is enabled, the sound is noticably louder, but for increasing loudness I have my volume knob on Z-5500 so I dont need it.
    Does that mean that every time I want to listen something nati'vely encoded in DTS od DD I should disable Dolby Digital Li've? I hope there is some other solution to this.

    Creative just admitted it is a bug - this is information from the "what was fixed" in the latest version of Creative Console Launcher:
    "Unable to select the external decoder option automatically while Dolby Digital Li've or DTS Connect is enabled in the encoder settings."
    Will this ever be fixed for Audigy software?
    Message Edited by Simplex on 06-02-2009 07:02 PM

  • Can anybody help me to understand this RMI registry service code?

    RMI is so difficult to me. please let me know following code what it means.
    If this class is instantiated with 50000 port number,
    Does RMI Registry Service get started with 50000 port number in place of rmiregistry commands?
    And I don't have to execute rmiregistry command?
    thanks in advance.
    import java.rmi.AccessException;
    import java.rmi.AlreadyBoundException;
    import java.rmi.NotBoundException;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    import java.rmi.registry.Registry;
    import java.rmi.server.ObjID;
    import java.rmi.server.RemoteServer;
    import java.util.Enumeration;
    import java.util.Hashtable;
    import sun.rmi.server.UnicastServerRef;
    import sun.rmi.transport.LiveRef;
    * Registry implementation.
    * @version 1.0
    public class RegistryImpl extends RemoteServer implements Registry {
         private static final long serialVersionUID = -7162736590129110751;
         private Hashtable bindings;
        private static ObjID id = new ObjID(0);
         * @param i port number
         * @throws RemoteException
        public RegistryImpl(int i) throws RemoteException {
            bindings = new Hashtable(101);
            LiveRef liveref = new LiveRef(id, i);
            setup(new UnicastServerRef(liveref));
        private void setup(UnicastServerRef unicastserverref) throws RemoteException {
            super.ref = unicastserverref;
            unicastserverref.exportObject(this, null, true);
         * Lookup a remote object.
         * @param name Name of the remote object.
         * @return Remote object of the specified name.
        public Remote lookup(String name) throws RemoteException, NotBoundException {
    //        Logger.debug("NamingService", "lookup: " + name);
            Remote obj;
            synchronized(bindings) {
                obj = (Remote)bindings.get(name);
                if(obj == null)
                    throw new NotBoundException(name);
            return obj;
         * Binds the specified name to a remote object.
         * @param name A URL-formatted name for the remote object.
         * @param obj A reference for the remote object (usually a stub).
        public void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException {
    //        Logger.debug("NamingService", "bind: " + name);
            checkAccess("Registry.bind");
            synchronized(bindings) {
                if(bindings.containsKey(name))
                    throw new AlreadyBoundException(name);
                bindings.put(name, obj);
         * Destroys the binding for the specified name that is associated with a remote object.
         * @param name A URL-formatted name for the remote object.
        public void unbind(String name) throws RemoteException, NotBoundException, AccessException {
    //        Logger.debug("NamingService", "unbind: " + name);
            checkAccess("Registry.unbind");
            synchronized(bindings) {
                if(!bindings.containsKey(name))
                    throw new NotBoundException(name);
                bindings.remove(name);
         * Rebinds the specified name to a new remote object. Any existing binding
         * for the name is replaced.
         * @param name A URL-formatted name for the remote object.
         * @param obj A reference for the remote object (usually a stub).
        public void rebind(String name, Remote obj) throws RemoteException, AccessException {
    //        Logger.debug("NamingService", "rebind: " + name);
            checkAccess("Registry.rebind");
            bindings.put(name, obj);
         * Returns an array of the names bound in the registry.
         * @return An array of the names bound in the registry.
        public String[] list() throws RemoteException {
            String[] names;
            synchronized(bindings) {
                int i = bindings.size();
                names = new String;
    Enumeration e = bindings.keys();
    while(--i >= 0)
    names[i] = (String)e.nextElement();
    return names;
    * TO-DO
    public static void checkAccess(String s) throws AccessException {
    // check if s is in the list of agents.
    if(true)
    else
    throw new AccessException("");
    public static ObjID getID() {
    return id;

    You don't have any need to understand this code. The complication is due to the registry needing a fixed objectID.
    You just need to know the methods of java.rmi.registry.LocateRegistry class. This allows you to start an RMI Registry inside your JVM and give it any TCP port number you like.

  • Can someone explain to me what are the benefits of compound path when it comes to text?  I can understand one or two lines but a whole paragraph?

    Every year we do a fundraiser to help my job, but my co-worker is getting frustrated.  We receive outside files laid out in Illustrator, but the person who does the file sets all of the text using compound path. These aren't one or two lines of text to be manipulated but whole paragraphs of text.  This person does this every year, and it is time consuming if my co-worker can't manipulate a paragraph without going to each individual layer that has a letter. Is there a way to make these compound paths merge as one without altering the document i.e. make some element disappear. Any kind of help is appreciated.

    ikaika,
    As I (mis)understand it, you should simply ask this outside person to keep all text as Live Type, using a font that you have on your machines (in the exact same version) so there will be no font substitution issue(s).
    That way, you could get the job done without silly waste of time.
    Failing to comply would seem quite uncooperative.
    I presume there is no copyright question onvolved in this.

  • Step by Step document on Guided Procedures for Benefits.......Help Needed..

    Hello Gurus,
    We are in process of implementing Benefits and for which we are using Guided Procedures, want to have understanding of the process can you please provide the step by step documentation and an example process that will be of great help.
    Appreciate your help.
    Thanks in advance for your time.
    Kind Regards,
    Pramod

    Hi Pramod,
    Please have a look at the below links. You will probably get some help.
    First of all, see the following thread, see the answer by shen peng in the end, explained CAF in very simple terms:
    https://www.sdn.sap.com/irj/sdn/thread?threadID=470956&tstart=0
    Now have a look at the following links for understanding about CAF, :
    <a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/4277f37b-0601-0010-0597-89e792177e2b">Creating Composite Applications with SAP CAF</a>
    <a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/84df3e36-0301-0010-be9d-b99aad8c81e6">Composite Application Framework in SAP NetWeaver</a>
    <a href="https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1122">CAF training material online</a>
    <a href="https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1231">Additional CAF Training material online</a>
    See the following links for understanding CAF GP in detail:
    <a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/0b1c2eda-0c01-0010-b597-b107502cdc71">CAF Guided Procedures Overview</a>
    <a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/39/198141f906040de10000000a1550b0/frameset.htm">CAF Guided Procedures</a>
    <a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/c7/984942da51690de10000000a155106/frameset.htm">Concepts of the Guided Procedures Framework</a>
    Lastly, see the following links for CAF GP Wiki Home Page and CAF Tutorial Center:
    <a href="https://wiki.sdn.sap.com/wiki/display/BPX/Guided+Procedures">CAF Guided Procedures Wiki Home Page</a>
    <a href="https://www.sdn.sap.com/irj/sdn/nw-composition?rid=/webcontent/uuid/d8dbd703-0801-0010-c9bf-c04bc52f562f">Composite Application Framework Tutorial Center</a>
    You can also have a look at the following thread, you can drill down into many more links:
    https://www.sdn.sap.com/irj/sdn/thread?threadID=405517&tstart=0
    https://www.sdn.sap.com/irj/sdn/thread?threadID=314804&tstart=50
    Bye
    Ankur

  • What is the difference between RMI and JAX-RPC?

    Dear All
    First of all my understanding of RMI and JAX-RPC:
    RMI is JAVA only version of RPC. It can't talk to any other language.
    JAX-RPC is a part of JWSDP and if you implement your client and server with JAX-RPC, client written in any language can talk with JAX-RPC implementation.
    What else makes them different and am I right with my understanding?
    Finally, I would like to develop clients which will have a java class, say httpserver.java, which will act like a http server, listens to a http port. Now, Two such client will run in two different PC and I want to call a module from one client to another which should be accessible via my httpserver.java. For that which should be my choice RMI or JAX-RPC? Can I achive it with http get-post method, as I am expecting to read some value of variables from one client to the another.
    Say class A has variable a, aa, aaa and clas B has variable b, bb, bbb. Now I want to read the value of b, bb, bbb from class A. How do I do that when class B is listening to a http port with my httpserver.java class.
    Lastly, say B is listening to a http port and I want to send a file to B from A. How can I do that? Remember, B didn�t ask for that. How can A send a file to B when B is listening to a http port with my httpserver.java.
    With regards
    Mohammed Jubaer Arif
    Mobile: +61-0411215302
    Personal Web: http://www.geocities.com/jubairarifctg/
    Org. Web.: http://www.geocities.com/halimschamber/

    simply put, RMI allows you to (semi) transparently treat remote objects as if they were local, and your distributed application can be written (more or less) like a "normal" java app. Sockets just give you a "raw" connection to work with, and you get to build up your application from that.
    I hope that helped
    Lee

  • Problem with socket factory in RMI over SSL in proxy setup

    Hi
    The following is the setup I have;
    1. I have an application in which the server is running in https mode and I have exported my remote objects using ServerSocketFactory and ClientSocketFactory which will create SSLServerSocket and SSLSocket respectively.
    2. When I run my connect a client to this server and invoke some method on any of the remote objects, I get the following exception:
    java.lang.NullPointerException
    at sun.rmi.transport.tcp.TCPConnection.getOutputStream(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at com.acme.ems.server.app.main.TestSumImpl_Stub.addOne(Unknown Source)
    at com.acme.ems.client.app.tools.EMSHaSftpSettings.okButtonActionPerformed(EMSHaSftpSettings.java:216)
    at com.acme.ems.client.app.tools.EMSHaSftpSettings.access$000(EMSHaSftpSettings.java:28)
    at com.acme.ems.client.app.tools.EMSHaSftpSettings$1.actionPerformed(EMSHaSftpSettings.java:183)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.Dialog$1.run(Unknown Source)
    at java.awt.Dialog$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Unknown Source)
    at com.acme.ems.client.utility.BasicDialog.showContainerInsideDialog(BasicDialog.java:103)
    at com.acme.ems.client.app.tools.EMSHaSftpSettings.init(EMSHaSftpSettings.java:322)
    at com.adventnet.nms.util.ConsumeKnownEvents.showTheFrame(ConsumeKnownEvents.java:197)
    at com.adventnet.nms.util.ConsumeKnownEvents.actionPerformed(ConsumeKnownEvents.java:103)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    My understanding is, when invoking remote object's method from the client, a the clientSocketFactory implementation will be called and an SSLSocket will be created for communication between remote server and client. In this case,my guess is somehow the createSocket() method of the clientSocketFactory is returning Null.The question is why?????Any help soon is appreciated.
    Note that , we are doing this in a proxy set-up.

    I've made a similer post.
    I was able to get it working by doing the following
    Make sure to add and equals to your RMISocketFactory's
    something at least this
    public boolean equals(Object obj)
    return obj != null && obj.getClass() == this.getClass();
    I had to enable the follong cypher suite SSL_DH_anon_WITH_RC4_128_MD5
    but this leads to a possible man in the middle attack.
    I posted to try and get that resolved. (see ssl lockup on handshake)

Maybe you are looking for

  • System.log check

    Hi I just want someone with system.log skills to take a look at my file. Lately i had some problems with a iMac and i bought a new one and when i was trying to clone back my backup from my earlier iMac I could'n ? always been able to but not this tim

  • Retrieve image out of Photoshop file

    Can anyone help me! I need to pull an image out of a photoshop file I made, I added the image in (jpeg) and have saved the file but did not save the original jpeg that i used, now I cant work out how to get the image out of photoshop so I can use it

  • Function module to get GL account statement

    Is there any function module to get GL account statement .... ..Thanks .Ashish

  • How to use gApp.MenuItemExecute("BatchEdit") then programmatically Run Sequence

    I am attempting to use the Acrobat 9 SDK - IAC API from a VB.NET application to select and run a batch sequence. It is running on Windows XP SP3 with Acrobat 9.1. So far my code :- Dim gApp As Acrobat.CAcroApp      If Not gApp.MenuItemExecute("BatchE

  • DB Polling one process

    Hello Everybody, I have a Database adapter as an exposed service to my BPEL process. My BPEL keeps polling the DB adapter. My configurations of polling options are as follows Polling frequency : 60 seconds no of databse rows per XML document : 1 Data