Wildfly 13 和 EJB 2.1 兼容性问题以及 RelativeContext Classcast 问题



任何人都可以帮助解决以下问题:

我正在尝试将我的应用程序服务器从JBOSS 6升级到Wildfly 12/13

我的应用程序基于EJB。当我使用Jboss 6时,我正在使用Jdk 1.7

现在对于野蝇,我正在使用jdk 1.8.

而且,在升级到 Wildfly 时,以前的jndi设置不起作用,jndi configurations所以我从

配置文件:

INITIAL_CONTEXT_FACTORY = org.jnp.interfaces.NamingContextFactory
PROVIDER_URL = jnp://localhost:1099
URL_PKG_PREFIXES = org.jboss.naming:org.jnp.interfaces
JNDI_VOOR_DS=java:/VOORSDB

自:

INITIAL_CONTEXT_FACTORY = org.wildfly.naming.client.WildFlyInitialContextFactory
PROVIDER_URL = remote+http://localhost:8080
URL_PKG_PREFIXES = org.jboss.ejb.client.naming
JNDI_VOOR_DS=java:/VOORSDB

现在我收到错误为:

ERROR [com.aithent.voor.service.ServiceLocator] (ServerService ThreadPool -- 79) Exception whichle retrieving the home object for the EJB :UserServiceEJB 
ERROR [com.aithent.voor.service.ServiceLocator] (ServerService Thread Pool -- 79) org.wildfly.naming.client.store.RelativeContext cannot be cast to javax.ejb.EJBHome 
ERROR [com.aithent.voor.service.ServiceFactory] (ServerService Thread Pool -- 79) java.lang.ClassCastException: org.wildfly.naming.client.store.RelativeContext cannot be cast to javax.ejb.EJBHome

这是我的服务定位器类:

private ServiceLocator() throws Exception{
createContext();
}
public void createContext() throws Exception{
Hashtable env = new Hashtable();
cachedObject=new HashMap(10,0.8f);
env.put(Context.INITIAL_CONTEXT_FACTORY, ConfigurationManager.getInstance().getPropertyValue(WebConstants.INITIAL_CONTEXT_FACTORY));
System.out.println(ConfigurationManager.getInstance().getPropertyValue(WebConstants.INITIAL_CONTEXT_FACTORY));
env.put(Context.PROVIDER_URL, ConfigurationManager.getInstance().getPropertyValue(WebConstants.PROVIDER_URL));
env.put(Context.URL_PKG_PREFIXES, ConfigurationManager.getInstance().getPropertyValue(WebConstants.URL_PKG_PREFIXES));
env.put("jboss.naming.client.ejb.context", true);
context = new WildFlyInitialContext(env);
System.out.println("context: "+context);
log.debug("ServiceLocator createContext method ends ");
}    
public EJBHome getHome(String ejbName) throws Exception{
EJBHome ejbHome = null;
log.debug("ServiceLocator getHome() starts ");
try{
System.out.println("Context: "+context);
if(context != null){
Object home = context.lookup("ejb:/"+ejbName);
System.out.println(home);
ejbHome = (EJBHome) home;
System.out.println(ejbHome);
}
}catch(Exception e){
log.error("Exception whichle retrieving the home object for the EJB : " + ejbName);
log.error(e.getMessage());
throw new Exception(e);
}
log.debug("ServiceLocator getHome() ends ");
return ejbHome;
}

我什至从wildfly-13添加了jboss-client--bin/client文件夹。我几乎尝试了其他问答中发布的所有方式,但没有任何效果。

我不明白如何附加文件,如果有人指导我,我将附加服务器.log和独立完整.xml以供审查。

提前感谢您的帮助!

我在EJB的基本HelloWorld项目中遇到了同样的问题。 我正在使用野蝇 14.0.1。

当我从JNDI字符串"ejb:ejbsample-1.0-SNAPSHOT/HelloWorld!com.ejbsample.HelloWorld"中删除"ejb:"时,它神奇地开始工作。

如果有帮助,请检查服务器和客户端代码。

相关内容

  • 没有找到相关文章

最新更新