我正在关注this JEE 教程的基础知识,该教程提供了创建最小 EJB 部署的说明。
我已完成教程中的步骤,但对以下命令行调用进行了更改
- >设置 CLASSPATH=.;E:\wildfly-10.1.0\wildfly-10.1.0.Final\bin\client\jboss-client.jar; (从教程中的长列表更改)
- >jar -cvf SimpleSessionApp.ear beans*.java (将文件扩展名从 .ejb3 更改为 .ear)
- 复制 SimpleSessionApp.ear E:\wildfly-10.1.0\wildfly-10.1.0.Final\standalone\deployments (复制到 wildfly 部署目录)
我启动了服务器,没有收到任何错误。但是,我没有获得部署 bean 时服务器日志输出的一组标准名称。
我使用教程中的以下命令运行客户端应用程序
- >java -D java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory -D java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces -D java.naming .provider.url=localhost client.SimpleSessionClient 现在是好人的时刻
我得到以下错误作为输出
Error: Could not find or load main class java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
我知道该教程适用于旧版本的 Java 和 JBoss。但是,我修改了旧的引用以指向上面提到的新环境。所以我认为版本控制在这里不是问题?顺便说一句,我刚刚开始学习 EJB。任何见解都会很棒。
我的环境
- Java 1.8.0.212
- Wildfly 10.1.0.Final
- 记事本
最佳答案
您应该查看引用文档 https://docs.wildfly.org/17/Developer_Guide.html#JNDI_Remote_Reference因为您似乎传递了错误的配置参数。
最终属性 env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
//仅当没有加载 ejb 客户端配置时才需要下面的属性(例如
//类路径中的 jboss-ejb-client.properties)并且上下文将用于查找 EJB
env.put("jboss.naming.client.ejb.context", true);
InitialContext RemoteContext = 新的InitialContext(env);
RemoteCalculator ejb = (RemoteCalculator) remoteContext.lookup("wildfly-http-remoting-ejb/CalculatorBean!"
+ RemoteCalculator.class.getName());
关于java - 如何使用命令行部署EJB 3.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061491/