[英]EJB Web Service ClassNotFoundException
服務器:JBoss 7.1.1 EJB 3.0 Eclipse Juno
我正在使用ejb 3.0進行第一個Web服務項目,並且在客戶端上遇到問題。 對於我的客戶,我組成了一個servlet。 問題是當我嘗試:
CalculatorOps calculator = (CalculatorOps)context.lookup("java:global/EJBCalculatorWS/CalculatorImp!math.CalculatorOps");
我在查找中收到ClassNotFoundException。 我從我的JBoss server.log獲得了這個jndi
[org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-3) JNDI bindings for session bean named CalculatorImp in deployment unit deployment "EJBCalculatorWS.war" are as follows:
java:global/EJBCalculatorWS/CalculatorImp!math.CalculatorOps
java:app/EJBCalculatorWS/CalculatorImp!math.CalculatorOps
java:module/CalculatorImp!math.CalculatorOps
我有2個Web項目WS和Client,都已添加到服務器,並且WS在Client的構建路徑中。
- - - - - - -碼 - - - - - -
接口
package math;
@Local
public interface CalculatorOps {
public int add(int a, int b);
public int subtract(int a, int b);
}
類
package math;
@Stateless(mappedName="TheCalc")
@WebService
public class CalculatorImp implements CalculatorOps{
@Override
public int add(int a, int b) {
return a+b;
}
@Override
public int subtract(int a, int b) {
return a-b;
}
}
Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
CalculatorOps calculator = (CalculatorOps)context.lookup("java:global/EJBCalculatorWS/CalculatorImp!math.CalculatorOps");
}
已修復:我最終通過將客戶端和ejb軟件包放到一個項目中,然后使用新的jndi來解決了這個問題。 我仍然想知道為什么在多個項目中不能添加構建路徑,然后使用jndi引用ejb而不拋出ClassNotFoundException。
如果您使用的是eclipse,則需要將EJB項目添加到Web項目的部署程序集中才能使其正常工作。構建路徑僅存在於編譯過程中,但如果運行正確,則會在運行時出現錯誤。
右鍵單擊您的Web項目->屬性->部署程序集->添加
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.