I have a an ear file to be deployed on weblogic 12c.
I have following project structure :
1) prop-application which is an .ear file
2) prop-service which is a .jar file
3) prop-framework which is a .jar file
All are maven project.
- prop-service contains prop-framework as one of its maven dependency.
- prop-application which is an ear contains prop-service
so we can say : prop-application.ear = prop-service.jar + prop-framework.jar
prop-service.jar = more java codes + prop-framework.jar
Now there is a class in prop-framework as :
@Stateless(name = "ServiceCallerBean")
public class ServiceCallerBean implements ServiceCaller
@Local
public interface ServiceCaller
Requirement :
Now i want to lookup(call) this EJB from a from a class in *prop-service* i.e a local look. The point here is to note that prop-service.jar contains prop-framework.jar
Following is the jndi names generated by weblogic 12c server :
java:global/ProposalEngine/prop-service-0.0.1-SNAPSHOT/ServiceCallerBean.>
java:module/ServiceCallerBean.>
java:app/prop-service-0.0.1-SNAPSHOT/ServiceCallerBean.>
java:global/ProposalEngine/prop-service-0.0.1-SNAPSHOT/ServiceCallerBean!com.db.serviceframework.ejb.ServiceCaller.>
java:app/prop-service-0.0.1-SNAPSHOT/ServiceCallerBean!com.db.serviceframework.ejb.ServiceCaller.>
java:module/ServiceCallerBean!com.db.serviceframework.ejb.ServiceCaller.>
I can't use those jndi names which contains jar version(eg 0.0.1-SNAPSHOT) because jar version will keep on changing. But if i use any of the jndi names like java:module/ServiceCallerBean , then there lookup fails with javax.naming.NameNotFoundException: While trying to lookup error
I have tried even :
@EJB
ServiceCaller serviceCaller
在prop service中的必需类中,但serviceCaller在这里显示为null。在这个问题上搜索发现,我们只能在容器管理的类中使用@EJB,而不能在简单的java类中使用。
我已经尝试了一切,但注意似乎是有效的。所以请帮我解决这个问题。
这个博客对JNDI地址的来源有一个很好的解释。prop-service-0.0.1-SNAPSHOT条目取自JAR或WAR的名称,因此您可以使用Maven JAR插件更改JAR的最终名称
您应该可以删除版本号,就像这样。
我使用的是WildFly 8.1.0最终版本。 我的应用程序是一个部署在WAR中的JavaEE web应用程序(没有EJB模块.ear)。 我想使用JNDI以编程方式调用带有他的名字的本地EJB。 EJB只是用@无状态注释(没有本地或远程接口) 我尝试以下功能: 但它不起作用(显然是针对远程EJB的) 但我没有找到任何与WildFly发生战争的本地EJB示例,我也不知道该怎么做,我不经常使用JND
我试图通过ServiceLocator进行EJB查找,而不硬编码JNDI名称,只使用本地接口名称。问题是EJB分布在其他模块(JAR)中。根据示例,我有以下场景: 项目-xxx: 由容器向JNDI注册:
我有一个ear,它包含2个war文件,每个war都包含无状态ejb和rest类。接口位于commons中。jar文件。耳朵结构如下所示: 我试图使用无状态-ejb-2中的无状态-ejb-1和注释,但我在部署期间遇到了错误。当我在stateless-EJB-2中使用@EJB时,就部署了ear,但在调用jersey-rest-2时,我遇到了一个远程查找错误。 这是我的方法调用链: 泽西-rest-1
我有一个Web项目,其中有几个EJB在不同的包中。但是我在查找EJB时遇到了问题。 我的目录结构:有两个包索引。作业和索引。ejb。 --包index.job有一个POJOindex.java --包装索引。ejb有一个由@Stateless(name=“indexEJB”,mappedName=“indexEJB”)和@LocalBean定义的ejb --包装索引。ejb还有一个定义为“本地”的
我试图像下面这样调用这个EJB: 这是我在调用上面的代码时得到的错误: 15:36:10,437信息[org.JBoss.EJB.Client](http-localhost-127.0.0.1-8080-1)JBoss EJB Client version 1.0.5.final 15:36:10,456
问题内容: 我是Java EE的新手,我试图理解本地接口和远程接口的概念。有人告诉我Java EE的一大优点是易于扩展(我相信这意味着您可以在不同的服务器上部署不同的组件)。那是远程和本地接口进入的地方吗?如果您希望应用程序在不同的服务器上具有不同的组件,则应该使用远程接口吗?如果您的应用程序仅驻留在一台服务器上,并使用本地接口? 如果我的上述假设正确,那么您将如何选择对于新应用程序使用本地接口还