2

以下を使用して cxf/spring プロジェクトを作成しました。

mvn archetype:create -DarchetypeGroupId=org.apache.cxf.archetype -DarchetypeArtifactId=cxf-jaxws-javafirst

結果のプロジェクトには、@WebService のアノテーションが付けられた HelloWorld.java インターフェースと、endpointInterface=mypackage.HelloWorld のアノテーションが付けられた HelloWorldImpl.java があります。

以下を含む beans.xml ファイルがあります。

<jaxws:endpoint
   id="helloWorld"
   implementor="mypackage.HelloWorldImpl"
   address="/HelloWorld" />

さらにサービスを追加したい場合は、beans.xml に新しいエンドポイントを追加し続ける必要があるようです。クラスには既に @WebService という注釈が付けられているため、一部のパッケージ/検索パス内で新しいサービスを自動検出できないのはなぜですか? このプロジェクトを構成してそれを行う方法はありますか?

基本的に、私は自分自身を繰り返さないようにしています。情報はすでに注釈に含まれているため、サービスを追加するたびに追加のファイルを編集する必要はありません。

beans.xml の jaxws:endpoint タグを削除するとmvn install tomcat:run、localhost:8080/myArtifactId にサービスが定義されていないというページが表示されるだけです。

4

1 に答える 1

1

CXF を使用する場合、追加したすべてのエンドポイントが、Spring コンテキストを使用して検出する CXFServlet によって管理されることを知っておく必要があります。beans.xmlSpring コンテキストの構成ファイルです。したがって、<jaxws:endpoint/>そのファイルからノードを削除すると、Spring コンテキストが削除されるため、CXFServlet はサービス エンドポイントを見つけることができなくなります。

于 2012-08-16T11:01:25.587 に答える