CXF
CXFはXfireに基づいて実装されます。
1)まず第一に、それはまだパッケージの問題です。 http://cxf.apache.org/download.htmlで最新バージョンのCXFをダウンロードできます。もちろん、最新バージョンを使用しています。次はナンセンス、Webプロジェクトを構築し、JARパッケージに入れます。 JARパッケージは選択せず、すべてを入れます。
Springの瓶パッケージが含まれていることがわかります。 CXFをWebプロジェクトとして展開する必要がある場合、Spring構成ファイルを使用する必要があります。これについては後で説明します。
またはインターフェイスクラスと実装クラス:
@webservice public interface ireaderservice {public reader getReader(@webparam(name = "name")string name、@webparam(name = "password")string password);パブリックリスト<Reader> GetReaders(); } @webservice(endpointinterface = "com.cxf.servlet.ireaderservice"、servicename = "readerservice")public class readerservice ireaderservice {@webparam(name = "name")string name、@webparam(name = ""){name reader(name name); } public list <Reader> getReaders(){List <Reader> ReaderList = new ArrayList <Reader>(); readerlist.add(new Reader( "shun1"、 "123")); readerlist.add(new Reader( "shun2"、 "123")); REACORLISTを返します。 }}注釈を追加することを除いて、これらの2つのクラスは昨日言及されたクラスと同じです。ここでは話しません。注釈の説明については、Javaeeのドキュメントを見ることができます。しかし、意味に応じて理解しやすいはずです。
次はJavabean、または読者のクラスです。
パブリッククラスリーダー{private static final long serialversionuid = 1l;プライベート文字列名;プライベート文字列パスワード。 public reader(){} public reader(string name、string password){this.name = name; this.password = password; } // get/setメソッドはpublic string toString(){return "name:"+name+"、password:"+password; }}上記が書かれています。
2)Webプロジェクトとして使用したいですか?心配しないでください、今それを使ってはいけません。 CXFには、IOCコンテナを提供するスプリング自体に相当する軽量コンテナサービスが付属しています。展開が成功したかどうかをテストするために使用できます。
テストクラスを受講しましょう:
public static void main(string [] args){system.out.println( "server is start ..."); ReaderService readerService = new ReaderService(); endpoint.publish( "http:// localhost:8080/readerservice"、readerservice); System.out.println( "サーバーが開始..."); }とてもシンプルです。アドレスを直接公開してから、インターフェイスまたはクラスを指定しても構いません。ここではクラスを使用していますが、インターフェイスを使用してみてください。結局のところ、インターフェイス指向のプログラミングは、実際のオブジェクト指向のアイデアです。
結果を見始めましょう:
スタートアップが完了したことがわかり、その後、ブラウザが成功したかどうかを確認します。
http:// localhost:8080/readerservice?wsdlをブラウザに直接入力してください。
必要なWSDLファイルを生成し、展開に成功したことを示します。
3)展開が成功した後、それを呼び出します。その呼び出しも非常に簡単です。 Xfireに似ています。インターフェイスを取得してから、ローカルクラスのようにメソッドを呼び出すことができます。
public static void main(string [] args){jaxwsproxyfactorybean factorybean = new jaxwsproxyfactorybean(); Factorybean.SetserviceClass(Ireaderservice.class); Factorybean.setAddress( "http:// localhost:8080/readerservice"); iReaderService readerservice =(ireaderservice)factorybean.create(); reader reader = readerservice.getReader( "shun"、 "123"); System.out.println( "Reader:"+reader); }ここではとても簡単です。工場のクラスを取得してから、インターフェイスとアドレスを直接設定し、対応するインターフェイスを取得するために作成できます。 Xfireと同様に、最初にインターフェイスのプロトタイプを定義する必要があります。そうしないと、これらの呼び出しは開始する方法がありません。
結果を得るために走ります:
問題ありませんが、それは私たちが期待した結果と一致しています。
4)しかし、多くの場合、Webサービスとアプリケーションが2つのサーバーを分離することは望ましくありませんが、それらを同じコンテナ、TomcatまたはJBossなどに入れたいので、以前に完了したWebサービスをWebを介して展開する必要があります。
ここでは、Spring定義ファイルを使用する必要があることに注意してください。
最初にweb.xmlを見てください:
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/nns/javaee xmlns:web = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id"バージョン= "3.0 <param-value> web-inf/beans.xml </param-value> </context-param> <リスナー> <リスナークラス> org.springframework.web.context.contextloaderlistener </ristener-class> </ristener> <servlet> <servlet> <servlet </servlet-name> <サーブレットクラス> org.apache.cxf.transport.servlet.cxfservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> cxfservlet </servet-name> <url-pattern>/webervice/*</url-pattern>
ここでは非常に簡単です。Springリスナーと対応する構成ファイルパスを指定し、CXFインターセプトメソッドを指定するだけです。
次に、beans.xmlをご覧ください。
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:jaxws = "http://cxf.apache.org/jaxws" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring/spring http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> <リソース=" classpath:meta-inf/cxf/cxf.xml "/> <Import resource =" class-inf/cxf/cxf-extions-soap.xml "/>リソース= "classpath:meta-inf/cxf/cxf-extension-soap.xml"/> <リソース= "classpath:meta-inf/cxf/cxf-servlet.xml"/> <jaxws:endpoint id = "readerservicce2" emplionmor = "com.cxf.servlet.servlet.readerervete
ここでは非常に簡単です。Jaxws:Endpointを介してWebサービスを定義するだけです。実装者はWebServiceの処理クラスであり、アドレスは以前に書いたReaderServiceと同様に、そのアクセスパスです。
この時点で、Tomcatに展開でき、http:// localhost:8080/cxfwebservice/webservice/readerservice2?wsdlから直接アクセスできます。
何人かの友人は、あなたが今回訪問したURLが前のURLとは異なる理由を尋ねます。実際、以前のアクセスアドレスは自分で定義されており、ここのWebServiceアドレスは構成ファイルで構成され、Webプロジェクトを通じて展開されます。ここではプロジェクト名が必要であり、URLパターンをCXFServletのWebサービスとして構成したため、最終URLは上記と同じです。
私たちは効果を見ることができます:
これは、展開が成功したことを証明しています。
前のテストクラスを使用して再度テストできます。投稿するアドレスを投稿する必要があることに注意してください。
CXFはXfireよりも少し簡潔です。いくつかの注釈を追加しますが、これらは無害です。以前のservices.xmlの情報をクラスに集中するだけで、維持する方が便利です。しかし、これはまだ意見の問題です。構成ファイルが好きな人もいれば、そうでない人もいます。さらに、CXFのコール方法は簡潔であり、Xfireよりもコードボリュームが少ないため、大幅に改善されています。
一部の友人は、建設プロセス中にいくつかの問題を抱えているため、1つずつ返信することを免除されています。コードはここでリリースされます。困っている友達はそれをダウンロードできます。
LIBディレクトリ内のすべてのパッケージは入力されておらず、すべてのパッケージをCXFに配置するだけです。
注:使用されるIDEはアイデアであり、ファイル構造は日食には一般的ではありません。 Eclipseで使用する必要がある場合は、Eclipseで新しく作成されたプロジェクトにコードとファイルを直接コピーできます。
ジャージー
その基本的な使用法を見てみましょう。
プロジェクトを見てみましょう。プロジェクトを開始する前に、パッケージを自分でダウンロードする必要があります:https://maven.java.net/content/repositories/releases/com/sun/jersey/を実行するには、サーバーとクライアントの両方をダウンロードする必要があります。もちろん、私はそれほど多くを見つけたくないので、このzipパッケージを直接ダウンロードできます。 https://maven.java.net/service/local/artifact/maven/redirect?r = releases&g = com.sun.jersey&a = jersey-archive&v=1.10&e = zip
1)Javabeanをするだけです
@xmlrootelementパブリッククラスリーダーは、シリアル化可能{private static final long serialversionuid = 1l;プライベート文字列名;プライベート文字列パスワード。 public reader(){} public reader(string name、string password){this.name = name; this.password = password; } // get/setメソッドpublic string toString(){return "name:"+name+"、password:"+password; }}ここではタグが使用されます。これは、戻るときのタイプを表します。つまり、このリーダークラスはXMLリターンに使用できます。
2)サービスクラスを使用する場合は、過去にCXFやXfireのようなインターフェイスする必要がなくなります。クラスを直接使用するだけです。
@path( "/readerservice/{name}/{password}")public class readerservice {@get @produces(mediatype.application_json)public reader getReader( @pathparam( "name")string name、 @patparam( "password")文字列パスワード) } public static void main(string [] args)throws IllegalargumentException、ioException、urisyntaxexception {httpserver server = httpserverfactory.create( "http:// localhost:8080/"); server.start(); }}この時点で、いくつかのタグが使用されました。 Pathは、SpringMVCを使用した友人がこの書き方を知っている必要があると考えています。これはURLマッチングです。明確でない場合は、最初に行って見てみることができます。 GETタグは、このメソッドにGETメソッドを介してのみアクセスできることを示しますが、生成された結果は生成された結果を示します。つまり、システムはリーダーオブジェクトをJSON結果に囲み、返します。
理解していないかどうかは関係ありません。しばらくすると理解できます。
そして、この時点で主な方法があります、私は大きな質問があると思います。これは、ジャージーが提供する軽量の内部コンテナです。デバッグするために一時的に使用できますが、実際の使用でこれを使用することは絶対に不可能です。
3)テストクラスを書きましょう
public class readerclient {public static void main(string [] args){client client = client.create(); webresource resource = client.resource( "http:// localhost:8080/readerservice/shun/123213"); Reader reader = resource.get(reader.class); System.out.println(Reader); }}非常にシンプルなコード、あなたはそれを理解する必要があります。クライアントオブジェクトは、Webサービスを要求し、リソースを返し、リソースは対応するメソッドを直接呼び出します。もちろん、この方法はURLを介して一致します。
ここでは、最初にそれに付属する軽量サービスでテストします。メインメソッドを含むReaderServiceを直接実行します。実行後、ReaderClientを実行します。結果は次のとおりです。
結果は正しいです。
もちろん、サーバーとして付属する軽量サービスを使用したくありません。 Tomcat、Jbossなど、プロジェクトと同じサーバーに配置する必要があります。
4)もちろん、Web.xmlはWebプロジェクトに不可欠です。
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/nns/javaee xmlns:web = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id"バージョン= "3.0 <Servlet-Class> com.sun.jersey.spi.container.servlet.servletcontainer </servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping <Welcome-FileList> <Welcome-File> index.jsp </welcome-file> </welcome-file-list> </web-app>
この時点で、指定されたすべての休憩経路はジャージーによって傍受されます。
Tomcatに展開して起動してから、ReaderClientを再実行します。最初にリソースパスを変更する必要があることに注意してください。
webresource resource = client.resource( "http:// localhost:8080/jerseywebservice/rest/readerservice/shun/123213");
私のプロジェクト名はJerseyWebserviceです。プロジェクト名に従って変更してください。
変更後、再実行し、結果は次のとおりです。
上記の結果と一致して、展開効果が同じであり、正しいことを意味します。