[jboss-user] [EJB3] - EJB3 over SSL doesn't work for remote client

Wen Cheng do-not-reply at jboss.com
Thu Aug 25 02:58:39 EDT 2011


Wen Cheng [http://community.jboss.org/people/chengwen] created the discussion

"EJB3 over SSL doesn't work for remote client"

To view the discussion, visit: http://community.jboss.org/message/622861#622861

--------------------------------------------------------------
I read the post:  http://community.jboss.org/thread/148760 http://community.jboss.org/thread/148760
And my situation is similar. But the solution dosen't works.

JBOSS Version: JBoss 6.0.0.0 Final 
OS: Windows XP

I created a stateless bean in my application and configure it to use SSLSocket.

@Stateless
@Remote(ReflectEJB.class)
@RemoteBinding(clientBindUrl="sslsocket://${jboss.bind.address}:3843")
public class ReflectEJBBean implements ReflectEJB{
   public String sayHello(){
          return "hello" ;
     }
}

And I also configured ejb3-connectors-jboss-beans.xml file where I added a MBean:


<bean name="EJB3SSLRemotingConnector" class="org.jboss.remoting.transport.Connector"> 
    <property name="invokerLocator">sslsocket://${jboss.bind.address}:3843</property> 
    <property name="serverConfiguration"> 
      <inject bean="ServerConfiguration" /> 
    </property> 
    <property name="serverSocketFactory"> 
      <inject bean="sslServerSocketFactory" /> 
    </property> 
  </bean>

  <bean name="sslServerSocketFactory" class="org.jboss.security.ssl.DomainServerSocketFactory"> 
     <constructor> 
        <parameter><inject bean="EJB3SSLDomain"/></parameter> 
     </constructor> 
  </bean> 
  <bean name="EJB3SSLDomain" class="org.jboss.security.plugins.JaasSecurityDomain"> 
     <constructor> 
        <parameter>EJB3SSLDomain</parameter> 
     </constructor> 
     <property name="keyStoreURL">../conf/server.keystore</property> 
     <property name="keyStorePass">mypassword</property>    
  </bean>


I start jboss with " -b 0.0.0.0 " on windows,

The bean works pretty well when I running the test code on the machine where jboss running.
However ,when I running the test code on a different machine , an exception is throw,


javax.naming.NamingException: Could not dereference object [Root exception is org.jboss.remoting.CannotConnectException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [sslsocket://0.0.0.0:3843/]]
    at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1508)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:824)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.css.waterbox.server.api.consoleapi.SessionDriver.main(SessionDriver.java:445)
Caused by: org.jboss.remoting.CannotConnectException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [sslsocket://0.0.0.0:3843/]
    at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:831)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:167)
    at org.jboss.remoting.Client.invoke(Client.java:1961)
    at org.jboss.remoting.Client.invoke(Client.java:804)
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.proxy.impl.remoting.IsLocalProxyFactoryInterceptor.invoke(IsLocalProxyFactoryInterceptor.java:104)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    at $Proxy0.createProxyBusiness(Unknown Source)
    at org.jboss.ejb3.proxy.impl.objectfactory.session.SessionProxyObjectFactory.createProxy(SessionProxyObjectFactory.java:129)
    at org.jboss.ejb3.proxy.impl.objectfactory.session.stateless.StatelessSessionProxyObjectFactory.getProxy(StatelessSessionProxyObjectFactory.java:79)
    at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:161)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1483)
    at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1500)
    ... 4 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:519)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
    at org.jboss.remoting.transport.sslsocket.SSLSocketClientInvoker.connect(SSLSocketClientInvoker.java:243)
    at org.jboss.remoting.transport.sslsocket.SSLSocketClientInvoker.createSocket(SSLSocketClientInvoker.java:186)
    at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.getConnection(MicroSocketClientInvoker.java:1165)
    at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:816)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:167)
    at org.jboss.remoting.Client.invoke(Client.java:1961)
    at org.jboss.remoting.Client.invoke(Client.java:804)
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.proxy.impl.remoting.IsLocalProxyFactoryInterceptor.invoke(IsLocalProxyFactoryInterceptor.java:104)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    at $Proxy0.createProxyBusiness(Unknown Source)
    at org.jboss.ejb3.proxy.impl.objectfactory.session.SessionProxyObjectFactory.createProxy(SessionProxyObjectFactory.java:129)
    at org.jboss.ejb3.proxy.impl.objectfactory.session.stateless.StatelessSessionProxyObjectFactory.getProxy(StatelessSessionProxyObjectFactory.java:79)
    at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:161)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1483)
    at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1500)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:824)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.css.waterbox.server.api.consoleapi.SessionDriver.main(SessionDriver.java:445)
    at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
    ... 15 more


I tried the way mentioned in  https://jira.jboss.org/jira/browse/EJBTHREE-1650 https://jira.jboss.org/jira/browse/EJBTHREE-1650 , In another word, I add jboss.xml in META-INF folder in myejb.jar:


<?xml version="1.0" encoding="utf-8"?>

<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
                            http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
             version="5.0">
             
  <enterprise-beans>
     <session>
       <ejb-name>ReflectEJBBean</ejb-name>
       <remote-binding>
           <jndi-name>ReflectEJBBean/remote</jndi-name>
           <client-bind-url>sslsocket://${jboss.bind.address}:3843</client-bind-url>
       </remote-binding>

     </session>
  </enterprise-beans>

</jboss>

But it got no improvement.

I know when I start jboss with "-b the_real_IP_of_the_machine" instead of "-b 0.0.0.0" , I can access ReflectEJBBean in a remote machine.
But I want to keep the "-b 0.0.0.0" for some reason.

Any idea?

Thanks very much in advance.
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/622861#622861]

Start a new discussion in EJB3 at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110825/6fd96b19/attachment-0001.html 


More information about the jboss-user mailing list