cxf-webserviceの足場構築を記録してください。


もっと読む
前はCXFだけでWS-Security/policyのいくつかの仕事を完成しました。CXFはWSS 4 Jを使って関連の機能を完成しました。実はWSS 4 JはCXFから提供されたinterceptorメカニズムでこれらの機能を完成しました。
最近またWS Serverのアプリケーションを実現します。構築してみました。hello WorldプログラムはすでにGithubにアップロードされました。
https://github.com/wwwcomy/cxf_test
pomの中のSpringはspring 4.2の互換性をテストするために加えました。cxf-coreは元々Springに対する引用がありますが、引用方式は全部providedですので、自分でSpringを加えなければなりません。
cxf-coreはcxf-Transports-httpというcomponent以外にも、CXFはHTTP、JMS、Local、さらにはwebSocketなど、多くのTransportsのサポートを提供しています。しかし、実際のアプリケーションではHTTPに基づくものが一般的ですので、ここではこの引用を使いました。他の有名ではない引用も入っています。長い間探してもすべての引用についての紹介が見つかりませんでした。ここでは詳しく見ませんでした。トラックを完全に理解できれば、databindingでいいと思います。
また、cxfのwsdl 2 java機能は直接clientコードまたはserverコードを生成できます。clientはこれは言わないで、直接使用できます。serverのコードは以下のようになります。
wsdl2java -d d:/src -server -impl http://localhost:8080/soap_server/ws/HelloWorld?wsdl
注意そのimplパラメータはCXFにデフォルトの空きを生成させることができます。
以前はwebserviceは容器の中で走らなければならないと思っていましたが、実はそうではないです。もしそのwsdlを現地に落としたら、次のようにコードを生成します。
wsdl2java -d d:/src -server -impl c:/HelloWorld.wsdl
生成されたコードはメーンメソッドを含むもので、メーンメソッドは直接走ることができ、生成されたメーン方法は以下の通りである。

public class IHelloService_HelloServicePort_Server{

    protected IHelloService_HelloServicePort_Server() throws java.lang.Exception {
        System.out.println("Starting Server");
        Object implementor = new HelloServicePortImpl();
        String address = "http://localhost:8081/soap_server/ws/HelloWorld";
        Endpoint.publish(address, implementor);
    }
    
    public static void main(String args[]) throws java.lang.Exception { 
        new IHelloService_HelloServicePort_Server();
        System.out.println("Server ready..."); 
        
        Thread.sleep(5 * 60 * 1000); 
        System.out.println("Server exiting");
        System.exit(0);
    }
}
このほか、javaが持参するwsmaportもclientコードを簡単に生成することができます。具体的な方法は検索できます。