我尝试在jboss7服务器上部署jboss5 bean项目包。其他开发人员已经对代码在jboss7上工作做了一些改变,比如将jboss-deployment-structure.xml放入项目中。EJB 3.1问题
我创建了两个bean,一个在项目A(BeanA)中,另一个在项目B(BeanB)中。 BeanA不得不查找BeanB。我总是得到“没有与类型的接口 'de.foo.soa.foobar.al.BeanB' 发现EJB绑定de.foo.soa.foobar.ba.ProjectB/BeanB
豆B:
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
@Stateless
@LocalBean
public class NumSrvLocalBean {
public String testNumSrv() {
return "numsrv works";
}
}
bean中的作用:
@EJB private NumSrvLocalBean numSrvLocalBean;
private String numSrvLocalBean_path = "java:module/NumSrvLocalBean!de.foo.soa.foobar.al.NumSrvLocalBean";
ctx = new InitialContext();
numSrvLocalBean = (NumSrvLocalBean) ctx.lookup(numSrvLocalBean_path);
我还添加合适的依赖性到JBoss部署-structure.xml:
<module name="deployment.ProjectB.jar" export="true"/>
所以evertything对我的理解很好,但我总是得到这个例外。我创建了自己的项目,让我们称它为项目X.在那里我可以查找任何其他项目的Bean(大约15)。我不能在项目A中注入项目A以外的任何bean。但是我可以在项目中注入bean。所以必须有东西阻塞项目中的bean。
我有在项目中的此文件:
- 的jboss.xml
- JBoss的部署,structure.xml
- MANIFEST.MF(标准,未填写)
- 持久性。 xml
- seam.properties
- ProjectA.properties(包含一个wsdlUrl,因为此项目也被配置为XML-RPC项目)
我期待了四个你的想法,
问候。
我不确定在这里,但AFAIK'java:module'意味着在_current_模块中查找,这就是为什么您可以从BeanA查找BeanC。您需要将模块名称添加到查找路径。查看管理控制台(默认情况下为端口9990)并检查绑定的JNDI路径。 – Thomas
你是对的,但我也用'global:..'来测试它。 那就是结果: 15:32:38,953错误[stderr](MSC服务线程1-5)javax.naming.NameNotFoundException:ProjectA/ProjectA!de.foo.soa.foobar.ba.BeanA - service jboss.naming .context.java.global.ProjectA。“BeanA!de.foo.soa.foobar.ba.BeanA” 15:32:38,955 ERROR [stderr](MSC service thread 1-5)\t at org.jboss.as .naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97) (和更多行)。 – JeromeC
纠正我,如果我错了,但我不会看到管理控制台中的任何东西,因为没有任何部署错误的原因。 – JeromeC