0 Replies Latest reply on May 14, 2012 3:44 AM by chengwen

    EJB3 over HTTP/HTTPS in AS6

    chengwen

      Hello.

      These days I was trying to configure the ejb3 over http/https in AS 6.0.

      I followed the artical: https://community.jboss.org/wiki/EJB3OverHTTPHTTPSInJBossAS-5

       

      The server and the client are not on the same machine.

      My server IP is 10.26.13.206, and my client IP is 10.26.13.202.

       

      the server code:

       

      @Stateless
      @Remote(UserManager.class)
      @RemoteBindings({
            @RemoteBinding(clientBindUrl = "https://0.0.0.0:8443/servlet-invoker/SSLServerInvokerServlet",jndiBinding="EJBviahttps"),
            @RemoteBinding(clientBindUrl = "http://0.0.0.0:8080/servlet-invoker/ServerInvokerServlet",jndiBinding="EJBviahttp"),
            @RemoteBinding(clientBindUrl = "sslsocket://0.0.0.0:3843", jndiBinding="StatelessSSL"),
            @RemoteBinding(jndiBinding = "StatelessNormal")
           })
      public class UserManagerBean implements UserManager{
               public void addUser(String user){
                         System.out.println("User name: " + user);                 
               }
      }
      

       

      the client code :

       

       

              System.setProperty("javax.net.ssl.trustStore", "D:/console.truststore");
              System.setProperty("javax.net.ssl.trustStorePassword", "mypassword");
              System.setProperty("org.jboss.security.ignoreHttpsHost", "true");
      
              Properties props = new Properties();
              props.put("java.naming.factory.initial", "org.jboss.naming.HttpNamingContextFactory");
              props.put("java.naming.provider.url", "http://10.26.13.206:8080/invoker/JNDIFactory");
              props.put("java.naming.factory.url.pkgs", "org.jboss.naming");
      
              Properties propsHttps = new Properties();
              propsHttps.put("java.naming.factory.initial", "org.jboss.naming.HttpNamingContextFactory");
              propsHttps.put("java.naming.provider.url", "https://10.26.13.206:8443/invoker/JNDIFactory");
              propsHttps.put("java.naming.factory.url.pkgs", "org.jboss.naming");
      
              try{
                  InitialContext ctxhttp = new InitialContext(props);
                  long t001=System.currentTimeMillis();
                  UserManager umhttp = (UserManager)ctxhttp.lookup("EJBviahttp");
                  umhttp.addUser("abc");
      
                  InitialContext ctxhttps = new InitialContext(propsHttps);
                  UserManager umhttps = (UserManager)ctxhttps.lookup("EJBviahttps");
                  umhttps.addUser("abc");
      
              } catch (Exception e) {
                  e.printStackTrace();
              }
      

       

      When I run jboss with -b 10.26.13.206, the test code on the client works fine.

      But if I run jboss with -b 0.0.0.0, I got the following exception:

       

      javax.naming.CommunicationException: Operation failed [Root exception is java.rmi.ServerException: IOE; nested exception is: 
          java.net.ConnectException: Connection refused: connect]
          at org.jboss.naming.interceptors.ExceptionInterceptor.invoke(ExceptionInterceptor.java:65)
          at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:68)
          at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
          at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101)
          at $Proxy0.lookup(Unknown Source)
          at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728)
          at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
          at javax.naming.InitialContext.lookup(InitialContext.java:392)
          at com.test.UserManagerRemoteClient.main(UserManagerRemoteClient.java:37)
      Caused by: java.rmi.ServerException: IOE; nested exception is: 
          java.net.ConnectException: Connection refused: connect
          at org.jboss.invocation.http.interfaces.HttpInvokerProxy.invoke(HttpInvokerProxy.java:133)
          at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
          at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
          at org.jboss.naming.interceptors.ExceptionInterceptor.invoke(ExceptionInterceptor.java:57)
          ... 8 more
      Caused by: java.net.ConnectException: Connection refused: connect
          at java.net.PlainSocketImpl.socketConnect(Native Method)
          at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
          at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:193)
          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
          at java.net.Socket.connect(Socket.java:529)
          at java.net.Socket.connect(Socket.java:478)
          at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
          at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
          at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
          at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
          at sun.net.www.http.HttpClient.New(HttpClient.java:306)
          at sun.net.www.http.HttpClient.New(HttpClient.java:323)
          at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:975)
          at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:916)
          at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:841)
          at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1019)
          at org.jboss.invocation.http.interfaces.Util.invoke(Util.java:163)
          at org.jboss.invocation.http.interfaces.HttpInvokerProxy.invoke(HttpInvokerProxy.java:118)
          ... 11 more
      

       

      I dont know why,  What happened? Is it means that "-b 0.0.0.0"  cannot be used here?

      I really need to start jboss with "-b 0.0.0.0" because the real ip and "127.0.0.1" are both very useful in my project.

       

      Many thanks!