1

GlassFish JAX-WS Web サービスにデプロイしようとしました。これは、Web サービスが定義されているクラスのスニペットです。EJB エンドポイントに Provider インターフェースを実装したことに注意してください。

@Stateless(name = "HelloWorldEJBWS")
@WebServiceProvider(
    portName = "HelloWorldWSPort", 
    serviceName = "HelloWorldWSService", 
    targetNamespace = "http://ivan.com/",
    wsdlLocation ="HelloWorldEJBProvider.wsdl")

@ServiceMode(value = Service.Mode.PAYLOAD)

public class HelloWorldEJBWS implements Provider<Source> {

public Source invoke(final Source inRequestMessage) {

    ...
}   
}

問題は、GlassFish (3.1.2.2) でのサービスのデプロイに関するものです。F.

[#|2012-09-08T16:39:15.682-0400|INFO|glassfish3.1.2|javax.enterprise.system. container.ejb.com.sun.ejb.containers |_ThreadID=20;_ThreadName=Thread-2;|EJB5181:EJB HelloWorldEJBWS の移植可能な JNDI 名: [java:global/JAX-WS_GreetingEJBMutualAuthProvider/HelloWorldEJBWS, java:global/JAX-WS_GreetingEJBMutualAuthProvider /HelloWorldEJBWS!javax.xml.ws.Provider]|#]

[#|2012-09-08T16:39:15.792-0400|INFO|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=20;_ThreadName=Thread-2;|WS00019: JAX をデプロイした EJB エンドポイント-WS_GreetingEJBMutualAuthProvider はhttp://ABRAMOV1:8088/HelloWorldWSService/com.ivan.wsejb.provider.HelloWorldEJBWS |#]のアドレスでリッスンします。

エンドポイントが展開されていることを示していても、そうではありません。このエンドポイントに到達できず、GlassFish コンソールに表示されません。

比較のために、@WebService を使用してサービスをデプロイしたときのログを提供しますが、@WebServiceProvider は使用しません。

[#|2012-09-08T16:41:50.514-0400|INFO|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=22;_ThreadName=Thread-2;|WS00019: JAX をデプロイした EJB エンドポイント-WS_GreetingEJBMutualAuth リスニング アドレスhttp://ABRAMOV1:8088/HelloWorldEJBWSService/HelloWorldEJBWS|#]

この場合、エンドポイントが正しく展開され、すべてが正常に機能しています。

@WebService を適用すると、コードが省略されます

@Stateless(name = "HelloWorldEJBWS")
@WebService()
public class HelloWorldEJBWS {

public String hello(final String inMessage) {
    ...
}

}

私は何か間違ったことをしましたか?

4

1 に答える 1

0

私はすべてを正しく行いましたが、GlassFish によって誤解されました。バグである可能性があります...エンドポイントがサーブレットとして実装された Web サービスをコンソールにデプロイすると (2 番目のケース)、エンドポイントが表示されますが、エンドポイントが EJB として実装された場合、エンドポイントはコンソールに表示されませんでした。しかし、リンクを使用して WSDL にアクセスし、http://localhost:8088/HelloWorldWSService/com.ivan.wsejb.provider.HelloWorldEJBWS?wsdl 最終的にクライアントで Web サービスをテスト することができました

于 2012-09-21T00:23:54.987 に答える