EJB3 over HTTP/HTTPS in AS6
chengwen May 14, 2012 3:44 AMHello.
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!