2016-09-25 36 views
0

我已经在Jboss 7.0中部署了一个EJB。无法访问部署在jboss中的EJB 7

以下是部署日志中关于EJB的JNDI绑定的说明。

19:21:43269 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC服务线程1-1)JNDI绑定名为 ManageEmployeeBean在部署单元部署会话bean“是EJBTest1.jar”为 如下:

的java:全球/ EJBTest1/ManageEmployeeBean com.test.ejb.businessimpl.ManageEmployeeBeanRemote 的java:!应用程序/ EJBTest1/ManageEmployeeBean com.test.ejb.businessimpl.ManageEmployeeBeanRemote 的java :module/ManageEmployeeBean!com.test.ejb.businessimpl.ManageEmployeeBeanRemote 的Java:JBoss的/导出/ EJBTest1/ManageEmployeeBean com.test.ejb.businessimpl.ManageEmployeeBeanRemote 的java:全球/ EJBTest1/ManageEmployeeBean 的java:应用程序/ EJBTest1/ManageEmployeeBean的java:模块/ ManageEmployeeBean

这是怎么了我的客户类看起来像。

package com.test.ejb.test; 

import java.util.Hashtable; 
import java.util.Properties; 

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 

import com.test.ejb.bean.Employee; 
import com.test.ejb.businessimpl.ManageEmployeeBean; 
import com.test.ejb.businessimpl.ManageEmployeeBeanRemote; 

public class Client { 

    private static InitialContext initialContext; 

    public static void main(String[] args){ 
     try { 
      getInitialContext(); 
      System.out.println("CTX:"+initialContext); 
     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 

     try { 
      System.out.println("Looking up EJB !!"); 
      ManageEmployeeBeanRemote remote = 
        (ManageEmployeeBeanRemote)initialContext.lookup("/EJBTest1/ManageEmployeeBean!com.test.ejb.businessimpl.ManageEmployeeBeanRemote"); 
      System.out.println("setting employee.............."); 
      Employee employee = new Employee(); 
      employee.setFirstName("Renjith"); 
      employee.setLastName("Ravi"); 

      System.out.println("Adding employee"); 
      remote.addEmployee(employee); 
     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static InitialContext getInitialContext() throws NamingException { 
     if (initialContext == null) { 
      Properties prop = new Properties(); 
      prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); 
      prop.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); 
      prop.put(Context.PROVIDER_URL, "remote://localhost:4447"); 
      prop.put(Context.SECURITY_PRINCIPAL, "renjith"); 
      prop.put(Context.SECURITY_CREDENTIALS, "user"); 
      initialContext = new InitialContext(prop); 
     } 
     return initialContext; 
    } 


} 

当我运行它时,客户端无法找到服务。

CTX:[email protected] 
Looking up EJB !! 
javax.naming.CommunicationException: Could not obtain connection to any of these urls: remote://localhost:4447 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server remote:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server remote:1099 [Root exception is java.net.UnknownHostException: remote: Name or service not known]]] 
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1416) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:596) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:589) 
    at javax.naming.InitialContext.lookup(InitialContext.java:411) 
    at com.test.ejb.test.Client.main(Client.java:29) 
Caused by: javax.naming.CommunicationException: Failed to connect to server remote:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server remote:1099 [Root exception is java.net.UnknownHostException: remote: Name or service not known]] 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:269) 
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1387) 
    ... 4 more 
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server remote:1099 [Root exception is java.net.UnknownHostException: remote: Name or service not known] 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:243) 
    ... 5 more 
Caused by: java.net.UnknownHostException: remote: Name or service not known 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901) 
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293) 
    at java.net.InetAddress.getAllByName0(InetAddress.java:1246) 
    at java.net.InetAddress.getAllByName(InetAddress.java:1162) 
    at java.net.InetAddress.getAllByName(InetAddress.java:1098) 
    at java.net.InetAddress.getByName(InetAddress.java:1048) 
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:76) 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:239) 
    ... 5 more 

谁能告诉我我在这里失踪了什么? 我看到很多关于stackoverflow中类似主题的线程,但他们都没有帮助我!

回答

1

您正在尝试使用JBoss AS 5(或更早版本)中的EJB Remote客户端。

您需要使用JBoss AS 7 EJB远程客户端,并根据AS7 JNDI Reference标题下的Remote JNDI标题进行配置。