jax-wsアノテーションを使用するためにサードパーティのライブラリは必要ありません。J2SE にはjax-wsが同梱されているため、すべての注釈を引き続き使用できます。次のソリューションで軽量の結果を達成できますが、最適化/マルチスレッド化されたものについては、実装するのはあなた自身の頭です:
SEI (サービス エンドポイント インターフェイス) を設計します。これは基本的に、Web サービス アノテーションを備えた Java インターフェイスです。これは必須ではなく、基本的な OOP からの優れた設計のポイントです。
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style = Style.RPC) //this annotation stipulates the style of your ws, document or rpc based. rpc is more straightforward and simpler. And old.
public interface MyService{
@WebMethod String getString();
}
SIB サービス実装 Bean と呼ばれる Java クラスに SEI を実装します。
@WebService(endpointInterface = "com.yours.wsinterface") //this binds the SEI to the SIB
public class MyServiceImpl implements MyService {
public String getResult() { return "result"; }
}
Endpoint
import javax.xml.ws.Endpoint;を使用してサービスを公開します。
public class MyServiceEndpoint{
public static void main(String[] params){
Endpoint endPoint = EndPoint.create(new MyServiceImpl());
endPoint.publish("http://localhost:9001/myService"); //supply your desired url to the publish method to actually expose the service.
}
}
前述のように、上記のスニペットは非常に基本的なものであり、本番環境ではパフォーマンスが低下します。リクエストのスレッド モデルを作成する必要があります。エンドポイント API は、同時要求をサポートするためにExecutorのインスタンスを受け入れます。スレッド化は私の趣味ではないので、アドバイスをすることはできません。