代码之家  ›  专栏  ›  技术社区  ›  Jayanthi M

运行客户端类时EJB项目中的CommunicationException:无法获得到以下任何URL的连接:localhost:1099

  •  1
  • Jayanthi M  · 技术社区  · 8 年前

    我用Jboss 5在EJB 3.0中创建了一个helloworld应用程序。当我尝试运行客户端类EjbClientApplication时,它抛出了一个异常。

    我经常出现以下异常。我已经做了很多关于它的rnd,但我找不到它,因为我是EJB新手,请帮助。

    例外情况:

    javax。命名。CommunicationException:无法获取到的连接 以下URL之一:localhost:1099,发现失败,错误为: javax。命名。CommunicationException:接收超时[根异常 是java。网SocketTimeoutException:接收超时][根 javax是个例外。命名。通信异常:连接失败 到服务器localhost/127.0.0.1:1099[根异常为 javax。命名。ServiceUnavailableException:无法连接到服务器 localhost/127.0.0.1:1099[根异常为java.net.ConnectException: 连接被拒绝:连接]]] 组织。jnp。接口。NamingContext。checkRef(NamingContext.java:1763)位于 组织。jnp。接口。NamingContext。查找(NamingContext.java:693) 组织。jnp。接口。NamingContext。查找(NamingContext.java:686) javax。命名。InitialContext。查找(InitialContext.java:392) 通用域名格式。十六进制。客户EJBClient应用程序。main(EjbClientApplication.java:28) 原因:javax。命名。CommunicationException:无法连接到 服务器localhost/127.0.0.1:1099[根异常为 javax。命名。ServiceUnavailableException:无法连接到服务器 localhost/127.0.0.1:1099[根异常为java.net.ConnectException: 连接被拒绝:连接]]位于 组织。jnp。接口。NamingContext。getServer(NamingContext.java:335)位于 组织。jnp。接口。NamingContext。checkRef(NamingContext.java:1734)。。。 4更多原因:javax。命名。ServiceUnavailableException:未能 连接到服务器localhost/127.0.0.1:1099[根异常为 Java语言网连接异常:连接被拒绝:连接]位于 组织。jnp。接口。NamingContext。getServer(NamingContext.java:305)。。。 5更多原因:java。网连接异常:连接被拒绝: 连接java。网PlainSocketImpl。位于的socketConnect(本机方法) Java语言网PlainSocketImpl。doConnect(PlainSocketImpl.java:351) Java语言网PlainSocketImpl。连接到地址(PlainSocketImpl.java:213) Java语言网PlainSocketImpl。连接(PlainSocketImpl.java:200) Java语言网SocksSocketImpl。连接(SocksSocketImpl.java:366) Java语言网插座连接(Socket.java:529) 组织。jnp。接口。TimedSocketFactory。createSocket (TimedSocketFactory.java:97)位于 组织。jnp。接口。TimedSocketFactory。createSocket (TimedSocketFactory.java:82)位于 组织。jnp。接口。NamingContext。getServer(NamingContext.java:301)。。。 5个以上

    Jboss服务器的端口是127.0.0.1:10001,但我试图点击这个url 127.0.0.1:1099,这是ryt吗?

    服务器属性:

    • 地址:127.0.0.1
    • 端口:8080
    • JNDI端口:1099

    MyCode:这些代码包含在单个EJB项目中

    远程接口类:

    package com.hex.statelessbean;
    
    import javax.ejb.Remote;
    
    @Remote
    
    public interface StatelessSessionBeanRemote {
    
        public String displayMessage();
     }
    

    无状态bean:

    /**
     * Session Bean implementation class StatelessSessionBean
     */
    
     package com.hex.statelessbean;
    
     import javax.ejb.Stateless;
    
    @Stateless
    
    public class StatelessSessionBean implements StatelessSessionBeanRemote {
    
    /**
     * Default constructor. 
     */
    public StatelessSessionBean() {
        // TODO Auto-generated constructor stub
    }
    
    @Override
    public String displayMessage() {
        // TODO Auto-generated method stub
        return "Hello world";
    }
    

    }

    客户:

    package com.hex.client;
    
    import java.util.Properties;
    
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    import com.hex.statelessbean.StatelessSessionBeanRemote;
    
    public class EjbClientApplication {
    
    public static void main(String[] args) {
        try {
        Properties props = new Properties();
        props.setProperty("java.naming.factory.initial",
        "org.jnp.interfaces.NamingContextFactory");
        props.setProperty("java.naming.factory.url.pkgs",
        "org.jboss.naming");
        props.setProperty("java.naming.provider.url", "localhost:1099");
    
        InitialContext ctx = new InitialContext(props);
        StatelessSessionBeanRemote bean = (StatelessSessionBeanRemote) ctx
        .lookup("StatelessSessionBean/remote");
        System.out.println("Message from Bean :" + bean.displayMessage());
        } catch (NamingException e) {
        e.printStackTrace();
        }
    
        }
    }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   awagenhoffer    8 年前

    改变 localhost:1099 to jnp://localhost:1099 org.jboss.naming to org.jboss.naming:org.jnp.interfaces 并检查ejb的名称。带有注释 @RemoteBinding 你能给ejb起个名字吗。你有端口偏移吗?

        2
  •  0
  •   Jayanthi M    8 年前
        Corrected Code:
    
        **Interface class:**
    
    
        package com.hex.statelessbean;
    
        import javax.ejb.Remote;
    
        @Remote
        public interface StatelessSessionBeanRemote {
    
            public String displayMessage();
        }
    
    
        **Stateless Bean class:**
    
        package com.hex.statelessbean;
    
        import javax.ejb.Stateless;
    
        /**
         * Session Bean implementation class StatelessSessionBean
         */
        @Stateless
        public class StatelessSessionBean implements StatelessSessionBeanRemote {
    
            /**
             * Default constructor. 
             */
            public StatelessSessionBean() {
                // TODO Auto-generated constructor stub
                System.out.println("************* Calling from Default constructor ******************");
            }
    
            @Override
            public String displayMessage() {
                // TODO Auto-generated method stub
                System.out.println("************* Calling from displayMessage() ******************");
                return "Hello world";
            }
    
        }
    
    
    **Client class:**
    
    
    package com.hex.client;
    
    import java.util.Properties;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    import com.hex.statelessbean.StatelessSessionBeanRemote;
    
    public class EjbClientApplication {
    
        /**
         * @param args
         * @throws NamingException
         */
    
        public static void main(String[] args) {
            try {
                Properties properties = new Properties();
                properties.setProperty("java.naming.factory.initial",
                        "org.jnp.interfaces.NamingContextFactory");
                properties.setProperty("java.naming.factory.url.pkgs",
                        "org.jboss.naming:org.jnp.interfaces");
                properties.setProperty("java.naming.provider.url",
                        "jnp://localhost:1099");
            InitialContext ctx = new InitialContext(properties);
            StatelessSessionBeanRemote bean = (StatelessSessionBeanRemote) ctx
            .lookup("StatelessSessionBean/remote");
            System.out.println("Message from Bean :" + bean.displayMessage());
            } catch (NamingException e) {
            e.printStackTrace();
            }
            }
    }
    
    
    **LookUp:**
    
    Message from Bean :Hello world
    
    推荐文章