2012-01-19 19 views
0

私はちょうどCXFの学習を始めました。私はEclipseを使ってMavenのアーキタイププロジェクトを作った。私がMavenをビルドしてJBossにデプロイすると、うまく動作します。eclipseでCXFを使用する

@WebService 
public interface HelloWorld { 
    String sayHi(String text); 
} 

@WebService(endpointInterface = "foo.HelloWorld") 

    public class HelloWorldImpl implements HelloWorld { 

     public String sayHi(String text) { 

      return new "Hello"+text; 
     } 
    } 

次に、ゲッターとセッターのフィールドとして名前と給与を持つEmployeeクラスを作成しました。 HelloWorld sayHiのメソッドの戻り値の型をEmployeeに変更し、HelloWorldimpl sayHiメソッドからEmployeeオブジェクトを返しました。

その後も、それが正常に動作している(私は、コードを変更した後、私は従業員のXMLを取得しています、SOAP UIを使用して、それをチェックする意味)は、この変換コードが書かれている

また、私はコードでcxf.xmlとCXF-servlet.xmlを見つけられませんでした:(ここで、これらのXMLコードに保管されている)

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

私はこれを理解するのに役立ちます。

@ŁukaszBachman私はXMLファイルをCXF * .jarファイルに入れました。

このプロジェクトで拡張機能を作成するにはどうすればよいですか。 Beanをxmlファイルに追加する必要がありますか?

+0

あなたが開発チーム、貢献者、またはあなたが何をやっているかを絶対に知っていない限り、CXFライブラリの一部を変更しないでください;)しかし、SpringとIoCのおかげでいくつかのBeanを拡張できます。たとえば、CXFによって作成され、XImpl1で実装されたインタフェースXがある場合、独自の実装XImpl2を定義して、そのライブラリの作成者が拡張を意図していれば、CXFでワイヤリングすることができます。一般的に、拡張するつもりはないAPIの部分を拡張しないでください。うまく設計されたAPIは、必要に応じて柔軟に使用できます。 –

答えて

0

明らかに、CLASSPATHで定義されたリソースをインポートするには、SpringでCXFを使用しています。つまり、Springは提供された2つのファイル(cxf.xmlとcxf-servlet.xml)で定義されたあらゆる種類のBeansをインポートしようとします。

サーブレットコンテナが起動すると、ClassloaderはWebアプリケーション(/ WEB-INF/libディレクトリ)に定義されたすべてのライブラリをロードします。それから、Springフレームワーク(/WEB-INF/web.xmlで定義されています)を開始します。 springがロードされると、webappに定義されているすべてのBeanを作成しようとします。そのため、自分のアプリケーションコンテキストを分析して、クラスパス上のMETA-INF/cxf/cxf.xmlにあるリソースをインポートする必要があります。だから、/WEB-INF/libにあるすべての図書館でそれをもう一度探します。

そのため、プロジェクトにこれら2つのファイルが表示されないのはこのためです。これらはCXFライブラリー(cxf.jar)によって提供されます。 cxf.jarを通常のZIPファイルとして開き、/META-INFを参照してください。

最終的には、これらの2つのファイルはCXFフレームワークによって提供されるため、おそらく変更する必要はありません。 CXFの内部を理解するのに役立つのであれば、ちょっと見てみてください。

関連する問題