2016-09-25 70 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標題進行配置。