[jboss-user] [EJB 3.0] - Fail to lookup EJB3 as JBoss return internal IP
dinnychk
do-not-reply at jboss.com
Sat Jun 30 01:28:11 EDT 2007
Hi,
I wrote a HelloWorld EJB 3 and HelloClient to test remote access JBoss server, but failed as IP changed by firewall.
The server is linux and using JBoss 4.0.4.GA with jdk1.5.0_09.
I tried to start JBoss with "run.sh -c default -b <external IP>" , jboss cannot start with error :
anonymous wrote : 2007-06-30 21:16:12,840 ERROR [org.jboss.remoting.transport.socket.SocketServerInvoker] Error starting ServerSocket. Bind port: 3873, bind address: /202.155.230.102
| 2007-06-30 21:16:12,841 ERROR [org.jboss.remoting.transport.Connector] Error starting connector.
| java.net.BindException: Cannot assign requested address
| at java.net.PlainSocketImpl.socketBind(Native Method)
| at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
| at java.net.ServerSocket.bind(ServerSocket.java:319)
| at java.net.ServerSocket.(ServerSocket.java:185)
| at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:169)
| at org.jboss.remoting.transport.socket.SocketServerInvoker.createServerSocket(SocketServerInvoker.java:186)
| at org.jboss.remoting.transport.socket.SocketServerInvoker.start(SocketServerInvoker.java:136)
| at org.jboss.remoting.transport.Connector.start(Connector.java:316)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:995)
| at $Proxy0.start(Unknown Source)
| at org.jboss.system.ServiceController.start(ServiceController.java:417)
| at org.jboss.system.ServiceController.start(ServiceController.java:435)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
| at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
| at $Proxy4.start(Unknown Source)
| at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
| at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
| at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
| at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
|
then tried to start JBoss with "run.sh -c default -b <internal IP>" , then got below error
anonymous wrote : javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: <internal IP>; nested exception is:
| java.net.ConnectException: Connection timed out: connect]
EJB Source Code
| // HelloWorldBean.java
| package hi;
|
| import javax.ejb.Stateless;
|
| @Stateless(name="HelloWorld")
| public class HelloWorldBean implements HelloWorldRemote {
|
| public String sayHi (){
| System.out.println("sayHi");
| return "Hello world!";
| }
|
| }
| // HelloWorldRemote.java
| package hi;
|
| import javax.ejb.Remote;
|
| @Remote
| public interface HelloWorldRemote {
| public String sayHi ();
| }
|
Client Source code
| // main.java
| package helloclient;
| import hi.HelloWorldRemote;
| import java.sql.SQLException;
|
| public class Main {
| private static HelloWorldRemote helloRemote;
| public Main() {
| }
| public static void main(String[] args) throws SQLException {
| if( args.length > 0 )
| MyContext.setUrl(args[0]);
| try {
| helloRemote = (HelloWorldRemote) MyContext.lookup("HelloWorld/remote");
| System.out.println(helloRemote.sayHi());
| } catch( Exception e ) {
| System.out.println(e);
| }
| System.exit(0);
|
| }
|
| }
|
| // MyContext.java
| package helloclient;
|
| import java.util.Properties;
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
|
| public class MyContext
| {
| private static String url = "localhost:1099";
| private static Context context;
| private static MyContext uniqueInstance;
|
| private MyContext() throws NamingException {
| Properties props = new Properties();
| props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
| props.setProperty("java.naming.provider.url", new String("jnp://" + getUrl()));
| props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
| context = new InitialContext(props);
| }
|
| public static Object lookup( String ejbName ) throws NamingException {
| if( uniqueInstance == null )
| uniqueInstance = new MyContext();
| System.out.println("getUrl " +getUrl());
| System.out.println("ejbName " + ejbName);
| System.out.println(context.toString());
|
| return context.lookup( ejbName);
| }
|
| public static MyContext getInstance() throws NamingException {
| if( uniqueInstance == null )
| uniqueInstance = new MyContext();
| return uniqueInstance;
| }
|
| public static String getUrl() {
| return url;
| }
|
| public static void setUrl(String aUrl) {
| url = aUrl;
| }
|
| }
|
|
|
Please help
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4059363#4059363
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4059363
More information about the jboss-user
mailing list