我嘗試在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