1

サーバー: JBoss 7.1.1 EJB 3.0 Eclipse Juno

ejb 3.0 を使用して最初の Web サービス プロジェクトに取り組んでいますが、クライアントで問題が発生しています。クライアントのために、サーブレットを作成しました。問題は、私が試みるときです:

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

WS とクライアントの 2 つの Web プロジェクトがあり、どちらもサーバーに追加されており、WS はクライアントのビルド パスにあります。

- - - - - - -コード - - - - - -

インターフェース

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;
    }
}

サーブレット

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

CalculatorOps calculator = (CalculatorOps)context.lookup("java:global/EJBCalculatorWS/CalculatorImp!math.CalculatorOps");

}
4

2 に答える 2

0

Eclipse を使用している場合は、EJB プロジェクトを Web プロジェクトのデプロイメント アセンブリに追加して動作させる必要があります。ビルド パスはコンパイル用にのみ存在しますが、実行時にエラーが発生します。

Web プロジェクトを右クリック -> プロパティ -> 配置アセンブリ -> 追加

于 2013-07-27T14:38:23.030 に答える