RMI and Firewalls

Hi folks,
I have a sun cluster on which I put my RMI server, clients connect to server through a firewall. My problem, since it's a clustered environment we get physical IP addresses and logical IP addresses, clients if they ahve to connect to the server without firewall they have to see only logical IP addresses and not the physical. That works fine, but when there is a firewall the setting is different. If my logical IP is, say 120.30.40.10 and my physical IPs are 120.30.40.6, 120.30.40.7 .... The firewall is configured to let clients connect to, say IP 180.70.40.4 and it transltes that to the logical IP address. When client is trying to make a lookup it connects to 180.70.40.4 which will be translated to 120.30.40.10. It passes this step and manages to get a reference to the server, but when it tries to invoke a method on that server it 's rejected by the Firewall. The cleint is getting RMI exception connection refused to 120.30.40.6, which is the physical IP of the server. After discussion with security team they said that the client is trying to initiate another connection to that physical IP which is not allowed by firewall.
My question is how to avoid the client connecting to the physical IP address. it seems that it's done internally in the RMI protocol.

I solved that problem by setting the property java.rmi.server.hostname=external_IP_address which solved the external client problem. But that raised anothe rproblem, since I have internal clients as well they couldn't connect to the sever becasue it's on an external ip adress it's giving me connection refused to that IP.
What's the solution in this case, I need somebody to help me ...
Thanx

Similar Messages

  • RMI-IIOp  and firewalls

    what support is provided for RMI and IIOP through Firewalls?

    "Scot Hale" <[email protected]> wrote:
    >
    Andy Piper <[email protected]> wrote:
    "Uma Patil" <[email protected]> writes:
    what support is provided for RMI and IIOP through Firewalls?None, right now. We tried to get support into 7.0 for this but
    failed. It will probably be fixed in 7.1. We currently get very few
    requests for this.Is it supported in 8.1? I am in a position where I need it.Yes, it looks like it is fixed, now I just have to test it and see if it works.
    http://e-docs.bea.com/wls/docs81/notes/resolved.html#1011163
    >
    >
    >>
    andy

  • RMI passing firewalls

    I hope anyone can help me with this:
    I am trying to call a RMI server from a Client passing to natting firewalls, meaning my client has a private IP address and the server is installed on a node with a private ip address.
    On the server side the firewall is set up to forward all calls on port 1099 to the private ip address of the server node.
    So when I call the server from the client I use the public ip address of the firewall
    I have done some network tracing and I can see first this stream:
    TCP local ip:2002->public ip:1099 [SYN]
    TCP public ip:1099->local ip:2002 [SYN, ACK]
    TCP local ip:2002->public ip:1099 [ACK]
    RMI local ip:2002->public ip:1099 JRMI, Version: 2, StreamProtocal
    RMI public ip:1099->local ip:2002 JRMI, ProtocolAck
    RMI local ip:2002->public ip:1099 Continuation
    RMI local ip:2002->public ip:1099 JRMI, Call
    RMI public ip:1099->local ip:2002 JRMI, ReturnData
    TCP local ip:2002->public ip:1099 [ACK]
    TCP local ip:2002->public ip:1099 [FIN, ACK]
    TCP public ip:1099->local ip:2002 [ACK]
    TCP public ip:1099->local ip:2002 [FIN, ACK]
    TCP local ip:2002->public ip:1099 [ACK]
    The connection is ended and the RMI client tries again on another port (this is build into the program).
    No data is ever returned.
    In the Protocol Ack I can see that the EndPointIdentifier is pointing to the public ip address of the client side firewall. In the continuation I see the client nodes private ip address.
    Now, if I open a vpn connection to the remote network (the vpn ip address of my host is listed in the hosts file of the server node) then data is returned. Obviously they are returned on the vpn connection, but why?
    The client vpn ip address is not on the same network as the client private ip address.
    A network trace produces the same stream as above except for the connection being closed.
    Can anyone explain the behaviour and - hopefully - point me in a direction how to solve this.
    All help is most appreciated.
    cwolfhagen

    I found the solution myself.
    Reason being that I hadn't quite understood the intricacies of RMI and data communication (I could blame my english - it's not my mother tongue).
    But in order for anyone else who may have the same problem, I will post my solution.
    First it is important to understand that RMI is using two ports - the RMI port to the registry (default 1099 - but you can pass a port number to the contructor) and a 'data' port, the ServerSocket, which is default picked randomly (port 0).
    This port must be fixed so that you can define this to your firewall. You can either do this be modifying the createServerSocket method in your SocketFactory or by (in the newer JSKs) giving the port number as an argument to the exportObject methods or to the UnicastRemoteObject constructors.
    If your firewall/router is using Network Address Translation there is another little trick:
    Specify the public ip address/hostname of the firewall as a parameter to the JVM (-Djava.rmi.server.hostname=public hostname) when you are starting your server application and have your firewall forwarding all requests on your defined RMI port and serverSocket port to the private IP address of the server application machine.
    Of course your outgoing firewall from the client has to allow communication on the same ports.
    AND VOILA - you can connect.
    I hope this can be of assistance to others.
    Happy brewing.
    cwolfhagen

  • 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

  • Please help: RMI and Swing/AWT issue

    Hi guys, I've been having a lot of trouble trying to get a GUI application to work with RMI. I'd appreciate any help. Here's the story:
    I wrote a Java application and its GUI using Netbeans. In a nutshell, the application is about performing searches. I am now at the point where I need exterior programs to use my application's search capabilities, thus needing RMI. Such exterior programs are to call methods currently implemented in my application.
    I implemented RMI, and got the client --> server communication working. However, the GUI just breaks. It starts outputting exceptions, gets delayed, doesn't update properly, some parts of it stop working.... basically hysterical behavior.
    Now take a look at this line within my server class:
    Naming.rebind("SearchProgram", mySearchProgram);
    If I take it out, RMI obviously does not work... but the application and its GUI work flawlessly. If I put it in, the RMI calls work, but the GUI's above symptoms occur again. Among the symptoms are null pointer exceptions which all look similar, are related to "AWT-EventQueue-0", and keep ocurring. Here's just snippet of the errors outputted:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.plaf.metal.MetalScrollBarUI.getPreferredSize(MetalScrollBarUI.java:102)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1615)
    at javax.swing.JScrollBar.getMinimumSize(JScrollBar.java:704)
    at javax.swing.ScrollPaneLayout.minimumLayoutSize(ScrollPaneLayout.java:624)
    at java.awt.Container.minimumSize(Container.java:1598)
    at java.awt.Container.getMinimumSize(Container.java:1583)
    at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
    at java.awt.BorderLayout.minimumLayoutSize(BorderLayout.java:634)
    at java.awt.Container.minimumSize(Container.java:1598)
    at java.awt.Container.getMinimumSize(Container.java:1583)
    at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
    at java.awt.BorderLayout.minimumLayoutSize(BorderLayout.java:634)
    at java.awt.Container.minimumSize(Container.java:1598)
    at java.awt.Container.getMinimumSize(Container.java:1583)
    at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
    at javax.swing.BoxLayout.checkRequests(BoxLayout.java:433)
    at javax.swing.BoxLayout.layoutContainer(BoxLayout.java:375)
    at java.awt.Container.layout(Container.java:1401)
    at java.awt.Container.doLayout(Container.java:1390)
    at java.awt.Container.validateTree(Container.java:1473)
    at java.awt.Container.validateTree(Container.java:1480)
    at java.awt.Container.validateTree(Container.java:1480)
    at java.awt.Container.validateTree(Container.java:1480)
    at java.awt.Container.validateTree(Container.java:1480)
    at java.awt.Container.validate(Container.java:1448)
    at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredMenuItemSize(BasicMenuItemUI.java:400)
    at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:310)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1615)
    at javax.swing.BoxLayout.checkRequests(BoxLayout.java:434)
    at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:251)
    at javax.swing.plaf.basic.DefaultMenuLayout.preferredLayoutSize(DefaultMenuLayout.java:38)
    at java.awt.Container.preferredSize(Container.java:1558)
    at java.awt.Container.getPreferredSize(Container.java:1543)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1617)
    at javax.swing.JRootPane$RootLayout.layoutContainer(JRootPane.java:910)
    at java.awt.Container.layout(Container.java:1401)
    at java.awt.Container.doLayout(Container.java:1390)
    at java.awt.Container.validateTree(Container.java:1473)
    at java.awt.Container.validate(Container.java:1448)
    at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    There are no complaints about anything within my code, it's all GUI related whenever I make a bind() or rebind() call.
    Again, any help here would be great... cause this one's just beating me.
    Thanks!

    Maybe you want to change that worker thread to
    not do RMI but anything else (dummy data) to see if it really is RMI, I doubt it, I think you are updating some structures that have to do with swing GUI and hence you will hang.
    Just check this out.

  • Connection to CRX via RMI and getting WeakReference value..... with an exception!

    Hi there,
    I have the following problem.
    I opened a ticket in Day Care Support system, about CRX users/group membership that got lost while synchronization with our LDAP server.
    Although when the user and the group had been created (and therefore taken from that same LDAP server), the membership was good.... but after some time the membership got lost......
    So what i am trying to do now is a Java program that connects to CRX via RMI.
    And gets the list of all the users from a group (aka membership).
    The idea is to monitor the membership each seconds.
    But when trying to get the property "rep:members" of the group, I have the following exception :
    javax.jcr.ValueFormatException: Unknown value type 10
              at org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:13 9)
              at org.apache.jackrabbit.rmi.server.ServerProperty.getValues(ServerProperty.java:71)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
              at java.lang.reflect.Method.invoke(Method.java:611)
              at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)"
    I searched a little bit and found that "10" is the number for type WeakReference.
    That's normal to me because memberships are stored in the group as a list reference to users linked to that group....
    Anyways, what's not normal to me is that when the type is "10" the API does not let me get the Value (cf. ServerProperty.getValues() method)
    Here is the program:
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import javax.imageio.spi.ServiceRegistry;
    import javax.jcr.Node;
    import javax.jcr.NodeIterator;
    import javax.jcr.Property;
    import javax.jcr.PropertyIterator;
    import javax.jcr.Repository;
    import javax.jcr.RepositoryException;
    import javax.jcr.RepositoryFactory;
    import javax.jcr.Session;
    import javax.jcr.SimpleCredentials;
    import javax.jcr.Value;
    public class Test {
              public static void main(String[] args) {
                        String uri = "rmi://sma11c02.............:1234/crx";
                        String username = "admin";
                        char[] password = {....................};
                        String workspace = "crx.default";
                        String nodePath = "/home/groups/a";
                        Repository repository = null;
                        Session session = null;
                        try {
                                  // Connection to repository via RMI
                                            Map<String, String> jcrParameters = new HashMap<String, String>();
                                            jcrParameters.put("org.apache.jackrabbit.repository.uri", uri);
                                            Iterator<RepositoryFactory> iterator = ServiceRegistry.lookupProviders(RepositoryFactory.class);
                                            while (null == repository && iterator.hasNext()) {
                                                      repository = iterator.next().getRepository(jcrParameters);
                                  if (repository == null) {
                                            throw new IllegalStateException("Problem with connection to the repository...");
                                  // Creation of a session to the workspace
                                  session = repository.login(new SimpleCredentials(username, password), workspace);
                                  if (session == null) {
                                            throw new IllegalStateException("Problem with creation of session to the workspace...");
                                  // Get the targetted node
                                  Node node = session.getNode(nodePath);
                                  System.out.println("Node : " + node.getName());
                                  System.out.println();
                                  PropertyIterator properties = node.getProperties();
                                  System.out.println("List of properties for this node :");
                                  while (properties.hasNext()) {
                                            Property property = properties.nextProperty();
                                            System.out.print("\t"+property.getName() + " : ");
                                            if (property.isMultiple()) {
                                                      Value[] values = property.getValues();
                                                      for (int i = 0; i < values.length; i++) {
                                                                System.out.print(values[i]);
                                                                if (i+1 != values.length) {
                                                                          System.out.print(", ");
                                                      System.out.println();
                                            } else {
                                                      Value value = property.getValue();
                                                      System.out.println(value);
                                  System.out.println();
                                  NodeIterator kids = node.getNodes();
                                  System.out.println("List of children nodes for this node :");
                                  while (kids.hasNext()) {
                                            Node kid = kids.nextNode();
                                            System.out.println("\tChild node : "+kid.getName());
                                            PropertyIterator kidProperties = kid.getProperties();
                                            System.out.println("List of properties for this child :");
                                            while (kidProperties.hasNext()) {
                                                      Property property = kidProperties.nextProperty();
                                                      System.out.print("\t"+property.getName() + " : ");
                                                      if (property.isMultiple()) {
                                                                Value[] values = property.getValues();
                                                                for (int i = 0; i < values.length; i++) {
                                                                          System.out.print(values[i]);
                                                                          if (i+1 != values.length) {
                                                                                    System.out.print(", ");
                                                                System.out.println();
                                                      } else {
                                                                Value value = property.getValue();
                                                                System.out.println(value);
                                            System.out.println();
                        } catch (RepositoryException e) {
                                  e.printStackTrace();
                        } finally {
                                  if (session != null) {
                                            session.logout();
    Here is the output of the below program:
    Node : a
    List of properties for this node :
              jcr:createdBy : admin
              jcr:mixinTypes : mix:lockable
              jcr:created : 2011-10-25T16:58:48.140+02:00
              jcr:primaryType : rep:AuthorizableFolder
    List of children nodes for this node :
              Child node : administrators
    List of properties for this child :
              jcr:createdBy : admin
              rep:principalName : administrators
              rep:members : javax.jcr.ValueFormatException: Unknown value type 10
              at org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:13 9)
              at org.apache.jackrabbit.rmi.server.ServerProperty.getValues(ServerProperty.java:71)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
              at java.lang.reflect.Method.invoke(Method.java:611)
              at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
              at sun.rmi.transport.Transport$1.run(Transport.java:171)
              at java.security.AccessController.doPrivileged(AccessController.java:284)
              at sun.rmi.transport.Transport.serviceCall(Transport.java:167)
              at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:547)
              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:802)
              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:661)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
              at java.lang.Thread.run(Thread.java:736)
              at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
              at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
              at sun.rmi.server.UnicastRef.invoke(Unknown Source)
              at org.apache.jackrabbit.rmi.server.ServerProperty_Stub.getValues(Unknown Source)
              at org.apache.jackrabbit.rmi.client.ClientProperty.getValues(ClientProperty.java:173)
              at Test.main(Test.java:96)
    Here is the list of jar files i'm using with this program:
              2862818581          61388           crx-rmi-2.2.0.jar
              732434195           335603           jackrabbit-jcr-commons-2.4.0.jar
              1107929681           411330           jackrabbit-jcr-rmi-2.4.0.jar
              3096295771           69246           jcr-2.0.jar
              1206850944           367444           log4j-1.2.14.jar
              685167282           25962           slf4j-api-1.6.4.jar
              2025068856           9748           slf4j-log4j12-1.6.4.jar
    Finally, we are using CQ 5.4 (CRX 2.2) with the latest hotfix and under Websphere 7.0
    Best regards,
    Vincent FINET

    Je suis absent(e) du bureau jusqu'au 17/04/2012
    Je suis absent.
    Je répondrai à votre sollicitation à mon retour le 17 avril 2012.
    Cordialement,
    Vincent FINET
    Remarque : ceci est une réponse automatique à votre message  "[CQ5]
    Connection to CRX via RMI and getting WeakReference value..... with an
    exception!" envoyé le 13/4/12 0:32:14.
    C'est la seule notification que vous recevrez pendant l'absence de cette
    personne.
    Le papier est un bien precieux, ne le gaspillez pas. N'imprimez ce document que si vous en avez vraiment besoin !
    Ce message est confidentiel.
    Sous reserve de tout accord conclu par ecrit entre vous et La Banque Postale, son contenu ne represente en aucun cas un engagement de la part de La Banque Postale.
    Toute publication, utilisation ou diffusion, meme partielle, doit etre autorisee prealablement.
    Si vous n'etes pas destinataire de ce message, merci d'en avertir immediatement l'expediteur.

  • RMI and Swing Events

    Hi,
    I have a problem, integrating an application with RMI and a Client side with swing.
    I have un RMI object that does something, and in any time I want to inform to the client side rmi... I did something like:
    // This is the REmote implementation
    public MyRemoteImpl extends Activatable implements MyRemote{
      EventListenerList listeners;
    // code for activation, etc.......
      public void addListener(MyListener l){
        // add the listener in the list...
      public void fireEvent(String msgEvent){
        // in each listener that is MyListener, .doEvent(String msg)
      // Methods that calls fireEvent...
    // Mylistener interface..
    public MyListener implements EventListener{
      public void doEvent(String msg);
    // The swing client side.
    public MyClient extends JPanel implements MyListener{
      MyRemote rem=null;
      // In the start of ui.. Ido:
      rem.addListener(this);
      public void doEvent(String msg){
        // Puts the message at one component....
    }The problem is that when the doEvent of the Swing side is called, it is executing in the rmid... And the UI is not updated...
    What I do wrong??
    Thanks and Best Regards.

    I wrote an application that does something similar, it receives some event and modifies a JTree accordingly. You should try using the java.awt.EventQueue.invokeLater(Runnable) method. Something like this:
    public void doEvent(String msg) {
        // Determine what changes need to be made
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                // Only the GUI component modification calls need to go here
    }

  • RMI and native code

    Hi
    Can anybody send me a sample code(HelloWorld type)that is based on RMI and uses native code(eg. win32).
    SANJAY

    If you're trying to do anything with native code, then you should be familiar with JNI API, windows or not.
    Check out the JNI tutorials on this site and i'm sure they'll provide you with JNI tutorials and samples.

  • Rmi and http

    i know this might sound silly but i am new to rmi ( to java too )
    i want to understand the difference between rmi and other protocols such as http,ftp and so.
    now what i think i know - and sometimes think im not sure i know or
    perhaps im sure i know nothing about - is that rmi is java specific and can only work with java while http is different if im not wrong.. and rmi does not require http r8?
    so how can rmi work over http or ftp ..,( can it in the 1st place ?)

    Which version of WLS you are using?
    Applet should also need to satisfy the version requirements similar to
    standalone java client. With WLS 5.1, it may work. But, it will not work
    with 6.* servers.
    Again, the JRE versions in the Netscape and IExplorer are different. So the
    applet, working in IE may not work on Netscape. It is better to test a
    sample application, than taking assumptions.
    Cheers,
    ..maruthi
    "Andrea Musumeci" <[email protected]> wrote in message
    news:3cb1dcba$[email protected]..
    can an applet written in java 1.1.x work in a browser using weblogic rmiwithout a plugin? I need to create a java chat applet with callback. Tnx in
    advance

  • Does ATS load testing support Java RMI and  T3 protocol?

    Hi Experts,
    Does ATS load testing support Java RMI and T3 protocol or EJB(J2EE)?
    Thanks!

    Joseph,
    Oracle Application Testing Suite is mainly used for testing of applications from a end user perspective and offers an intuitive capture/replay for web, Siebel, EBS, JDE, Fusion apps or SOA based application through WebServices WSDL imports.
    The scripting environment (Oracle OpenScript) does not support script creation by recording JAVA RBI or T3 protocol as we lack a recorder for it, but the scrips are created as pure JAVA code so you could use the JAVA language to write a small RMI cor T3 client for your testing.
    We have customers that have used Application Testing Suite to test non-UI based testing, like: JMS, FTP, Tuxedo and others, but it require a bit of coding.
    Please let me know if you would like to know more or discuss your options
    regards
    Mikael Fries
    Principal Product Manager / Oracle

  • Standard Java RMI and WLS5.1?

     

    I would surmise that the problem you are seeing is the result of the fact
    that we do not except standard Java RMI calls using the functionality in the
    JDK. You must use the WebLogic implementation of RMI. It is exactly the
    same in terms of APIs, but we have gone through and optimize the underlying
    protocol.
    Please see the documentation for more details.
    We offer both RMI over IIOP and RMI over T3.
    Thanks,
    Michael
    Michael Girdley
    Product Manager, WebLogic Server & Express
    BEA Systems Inc
    Mario Felarca <[email protected]> wrote in message
    news:[email protected]..
    Hello,
    I was trying to get a simple callback demo working using standard java
    RMI and the WLS5.1. Unfortunately, although things seemed to compile
    and launch smoothly, when the client started up and tried to talk to the
    WLS I would get the following error:
    weblogic.rmi.server.ExportException: A description for CallbackImpl was
    found but it could not be read due to: [Failed to find a stub for [class
    CallbackImpl] implements at least one interface [interface Callback]
    which extends Remote.]
    weblogic.rmi.StubNotFoundException: Failed to find a stub for [class
    CallbackImpl] implements at least one interface [interface Callback]
    which extends Remote.
    I tried determining if this was a classpath problem, but all my efforts
    kept producing this result.
    On the flip side, if I retool my objects slightly in order to make them
    use weblogic.rmi.*, then everything works perfectly.
    Is there a tradeoff to using weblogic.rmi over java.rmi?
    Also, does anyone have any ideas as to what might be causing my error
    when using standard rmi?
    Thanks so much in advance,
    Mario-

  • RMI and Netbeans

    hello,
    i have develop a simple application using RMI. It was running perfectly from command prompt.
    Then i imported the project into netbeans 6.1. Then when i run it the server looks running normally but when a client try to connect to the server it given an error
    java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
    java.lang.ClassNotFoundException: ........(No security manager: RMI class loader disabled)
    Can someone help suggest a solution
    Thanks

    Hi!
    Please tell me how could you get netbeans 6.1 to recognise an RMI project.
    I have too, tried to import some old java files (two rmi interface files a server implementation and an applet) into netbeans 6.1. As far as i can tell it completely refuses to work with RMI, and i have not found ANY support on the internet so far, to how to do it, or any working rmi modules for netbeans 6.1 ...
    Years old rmi developement, what worked nicely under windows 95 (good old days lol) does not wish to work for me now...
    Should I return to use age old enviroments, or what?
    I would deeply appreciate any help from You, or anyone able.
    Thanks!

  • RMI and concurrency (newbie)

    Hi
    I have a simple question related to RMI and concurrency.
    I have a server and several clients calling remote objects concurrently.
    How is concurrency usually handled when one used RMI ?
    Can we make use of "synchronized" on some method of the remote objects ?
    I have read about risk related to performance and worse, some problems of deadlock if the synchronize is not well organized.
    Is there other ways to deal with that ?
    Thanks in advance for providinge me any information or suggestion.

    RMI is inherently multithreaded. If you have specific remote resources that you want protected from concurrency, then define all of the accessor methods to be synchronized. (I don't think you can get away with making the remote methods synchronized; I would instead figure out what which resources I want to protect, and only protect those particular objects.)
    Could there be problems? Maybe. But these are absolutely standard coding techniques.

  • Rmi and wireless

    Hello!
    I'm using the RMIAdapter sample of Oracle to check the basic mechanism of rmi and wireless.
    Does anybody now, if there are some known problems with wireless regarding this subject?
    I have written both: the adapter and the client code. So far so good. But when I try to point a masterservice
    to this adapter, there are some strange results:
    If I define the RMI Service URL in this way: rmi://localhost:port, ASW accepts the input, but using the
    service returns an IllegalArgumentException in the logfile.
    If I define the RMI Service URL with its ServiceName (= rmi://localhost:port/ServiceName, ASW doesn't accept
    the input.
    So my question is: where's the error? As far as I know, a "correct" RMI URL consists of the following parts:
    rmi://<hostname>[:<port>]/servicename. It would be the second above-mentioned trial.
    Why does ASW rejects this kind of RMI Service URL?
    So it would be great, if someone could help me out with the RMI magic of ASW.
    Thanks a lot in advance,
    Heike Skok

    Hello Heike,
    Here are the values for the RMIAdapter Init Parameters:
    RMI Server URL: rmi://localhost:2099/Sample
    Remote interface: oracle.panama.adapter.rmi.SampleInterface
    (assuming that you didn't make any changes in the sample source code).
    Here are some steps that the documentation does not describe in details (assuming that developers are familiar with RMI).
    1. I copied SampleInterface.class and SampleImpl.class in $ORACLE_HOME/wireless/server/classes/oracle/panama/adapter/rmi directory
    2. I ran
    rmic -d . oracle.panama.adapter.rmi.SampleImpl
    from $ORACLE_HOME/wireless/server/classes directory to generate SampleImpl_Stub.class and SampleImpl_Skel.class
    3. I ran
    java oracle.panama.adapter.rmi.SampleImpl
    from $ORACLE_HOME/wireless/server/classes directory to start my RMI server.
    You have to start the remote RMI server first before you can create the MasterService. The RMIAdapter will connect to the remote RMI server during initialization. The remote RMI server will print out
    "Sample bound in registry" if started correctly.
    If you have problems with the RMI registry then you may have to change JAVA_HOME\jre\lib\security\java.policy file and add the following:
    grant {
    permission java.net.SocketPermission "*:1024-65535",
    "connect,accept";
    permission java.net.SocketPermission "*:80", "connect";
    After doing all that I was able to successfully run RMIAdapter based services.
    Thanks,
    Hristo Tonev

  • Can we use applets as user interfaces with sockets, RMI and J2EE

    Dear Sir or Madam,
    Since I am a TA for software architecture class, some one ask me the following question: I think the answer is "No" based on the document on http://java.sun.com/sfaq/
    How I answer the quesions? Looking forward your help!!!
    1.You may have 2 applets and 2 html files. One applet with one html file may stay at a client PC and run on this PC, and the other applet with the other html file may stay at a server PC and run on this PC. In this case, all the applets are run locally.
    2.Could applets works with sockets, RMI and J2EE?
    3.Can we use applets as user interfaces with sockets, RMI and J2EE?
    Thank you very much!
    Best regards,
    Jing

    The scenario you paint doesn't quite make sense. The "server PC" wouldn't be running an applet, normally, since applets are by definition in a web browser page, and most likely involve user interaction, and "server processes" generally are done without user interaction.
    The security rules around applets are that -- by default -- applets can connect with sockets ONLY to the server from whence the applet was loaded. RMI uses sockets (J2EE is too broad a spec) and hence RMI calls would also be limited to the server from whence the applet was loaded. Within that limitation, an applet could open all the sockets it wants, so long as they are all on the server from whence the applet was loaded.
    If you want two applets on two different systems to communicate with each other, the simplest way is to have them rendevous through a server process on the server(s) from whence each applet was loaded. Maybe it's PC-a <-> server-a <-> server-b <-> PC-b ...? Or maybe PC-a and PC-b both are talking to the same server.
    The limitation is rooted in the security subsystem. You can specify a policy file and override anything in the security subsystem. That does mean signing the applet and then cajoling the user into agreeing to grant greater levels of security than the default. In such a case you can open sockets more broadly and then PC-a could talk directly to PC-b without going through any servers.
    - David

Maybe you are looking for