これはかなり時代遅れの質問であることは認識していますが、あなたの(そして現在の私の)苦境をまだ共有している少数の貧しい魂のために、ここにいくつかの指針があります(さまざまな情報源から、主にhttps://community. jboss.org/thread/192046 ):
Java EE Web サービス
まず、JBoss 4.2.2 を使用するということは、おそらく Java EE5 を使用することを意味します。そこでの Web サービス (SEAM 2 の有無にかかわらず) は、ステートレス セッション Bean の上にのみ作成できます。Java EE 5 のステートレス セッション Bean は、@Local または @Remote のアノテーションが付けられた Service Endpoint Interface を実装する必要があります。これは Java EE6 ではオプションになりましたが、ここではまだ必須です。
そう:
@Local
public interface PluginHandlerInterface {
int processRequest(Account account);
}
@WebService
@Stateless
public PluginHandler implements PluginHandlerInterface { }
POJO Web サービス
Seam で通常の POJO を Web サービスとして使用したい場合、クラスには Handler チェーンを定義する別の特別なアノテーションが必要です。
@WebService
// This here makes all the difference!
@HandlerChain(file = "web-service-handler-chain.xml")
public class PluginHandler {
...
}
これは、/WEB-INF/classes/web-service-handler-chain.xml に配置したハンドラー チェーンです。
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<description>seam request handler</description>
<!-- probably not necessary
<handler-name>org.jboss.seam.webservice.SOAPRequestHandler</handler-name>
-->
<handler-class>org.jboss.seam.webservice.SOAPRequestHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
そして、次のようにサービス クラスを war ファイル web.xml にアナウンスする必要があります。
<listener> <!-- this might already be present in your web.xml -->
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet> <!-- Which class is to be used? -->
<servlet-name>PluginHandler</servlet-name>
<servlet-class>your.package.name.PluginHandler</servlet-class>
</servlet>
<servlet-mapping>
<!-- you'll find it under http://localhost:8080/your-war/PluginHandler?wsdl-->
<servlet-name>PluginHandler</servlet-name>
<url-pattern>/PluginHandler</url-pattern>
</servlet-mapping>
したがって、ハンドラー チェーンの作成、注釈の追加、web.xml へのサービスのアナウンスの 3 つの手順は、SEAM でうまく機能するはずです。