2017-04-09 36 views
1

我试图迁移现有的JBoss 5应用程序以在JBoss 7 EAP/WildFly 10中工作。部分应用程序试图通过以下方式远程访问EJB:org.jboss.security.jndi.JndiLoginInitialContextFactory Wildfly中的ClassNotFound 10

Properties properties = new Properties(); 
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory"); 
properties.put(Context.PROVIDER_URL, "jnp://localhost:1099"); 
properties.put(Context.SECURITY_PRINCIPAL, "noone"); 
properties.put(Context.SECURITY_CREDENTIALS, "noone"); 

initContext = new InitialContext(properties); 

当应用程序启动时,WildFly引发错误消息:

引起:抛出java.lang.ClassNotFoundException:org.jboss.security.jndi.JndiLoginInitialContextFactory从[模块“deployment.ear- 1.0.ear.ear-1.0.servlet-1.0.war:main“from Service Module Loader]

我怀疑这是因为JndiLoginInitialContextFactory类不再位于同一个包中,但我不确定在哪里可以找到它。我试过运行WindUp,但它在启动时会引发NullPointerException,并且不会生成报告。

我在哪里可以在Wildfly 10中找到这门课程?我尝试过使用Help4j找到课程,但它对我也没有帮助。 Wildfly 10有没有图书馆?

+0

远程EJB是否部署在同一个JBoss EAP实例或不同的实例中? –

+0

此刻,同一个。但是也需要为不同的实例找到解决方案。我将利用来自不同JB7容器以及Tomcat容器的远程EJB。 –

+0

当我连接到一个WildFly 10实例时,我有'properties.put(Context.INITIAL_CONTEXT_FACTORY,“org.jboss.naming.remote.client.InitalContextFactory”);'。这需要包含在你的WildFly安装中的'jboss-client.jar'('/ bin/client')。 –

回答

0

您是否有从EAP 7到EAP 5的呼叫?如果是这样,你必须在应用程序中打包jbossall-client。

用于在EAP 5上调用EJB的客户端代码将保持不变。

您需要确保所需的EAP 5客户端jar包与应用程序一起打包。 此错误中缺少的类是在EAP 5的$ JBOSS_HOME/client/jbosssx-as-client.jar中。