2013-04-26 20 views
7

私はthisチュートリアルに従うことで、Jerseyを使用してREstサービスを作成しています。Jerseyを使用してREstサービスを作成しようとしています

時々私は完全にどのようなチュートリアル手段の著者が、これらは私がこれまで続いてきた手順です理解することができない:

1)動的Webプロジェクトを作成し、それの名前:de.vogella.jersey.first

2)日食

にMavenの依存関係をインストール私は手動でしなくても、ジャージーを使用できるように

3))(その手段は、pom.xmlファイルを作成した)Mavenプロジェクトに

4を自分のプロジェクトにコンバートpom.xmlに必要な依存関係を追加しましたjarファイルを追加します。著者は、Javaクラスを作成することを提案し、いくつかのコードを与える

<dependencies> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.17.1</version> 
    </dependency> 
</dependencies> 

5:私は、次のXMLを追加しました。私はsrcフォルダに新しいパッケージを作成し、de.vogella.jersey.firstという名前をつけてから、Javaクラスを作成してHelloという名前を付けてそこにコードを置くことだけを望んでいると思います。それは私がやったことです。

6)は、それから彼はweb.xmlファイルを開くことを示唆しています。しかし、プロジェクトではそういうファイルではありません。だから私は先に進み、WebContent/WEB-INF/libパスにそのようなファイルを作成します。私は彼が提案するコードを置きます。

7)次は、私が最も理解していないステップです。

「パラメータ 『com.sun.jersey.config.property.packageは、』パッケージジャージは、Webサービスクラスを探しますここで定義されています。彼は、私たちが追加した、より具体的に、彼は述べてweb.xml語ります。このプロパティは、あなたのリソースクラスを指している必要があります。」

8)最後のステップは、私のブラウザでURL http://localhost:8080/de.vogella.jersey.first/rest/hello開かれています。しかし、私は正確にcom.sun.jersey.config.property.packageを交換しなければならないものとHTTP Status 404 - /de.vogella.jersey.first/rest/hello


を取得しますか?

これまでの手順が正しいか、何かを誤解していますか?

+1

*ありません* 'lib'にあります。 – Qwerky

答えて

11

プロパティcom.sun.jersey.config.property.packageは、Webサービスクラスを含むパッケージとして設定する必要があります。チュートリアルではde.vogella.jersey.firstであり、Helloクラスがそのパッケージの下で宣言されていることがわかります。あなたがアプリケーションをデプロイする際言い換えれば

、ジャージーは、パッケージde.vogella.jersey.firstで、Webサービスクラスを探しますが、この場合には、それはHellojavax.ws.rs.Pathアノテーションで宣言されたクラスを見つけて、Webサービスのエンドポイントのリスニングを作成します。 @Pathと宣言されているURLに

しかし、私はジャージープロジェクトにこのようなことを設定したことはありません。私はちょうどsrcフォルダーに私のWebサービスクラスを入れて、ジャージーはそれらを私がそれらを入れたパッケージに関係なくそれらを認識します。あなたは空想のMavenプロジェクトをいない場合も

<servlet> 
    <description>JAX-RS Tools Generated - Do not modify</description> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 

    <!-- 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.your.webservice.classes</param-value> 
    </init-param> 
    --> 

    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

、単純な動的Webプロジェクトを作成し、WebContent/WEB-INF/libJersey JARsをコピーします。これは私がweb.xmlにジャージープロジェクトを持っている最小構成です。 Qwerkyが提案されているよう

また、web.xmlWebContent/WEB-INF/libにコピーする必要がありますWebContent/WEB-INF/.jarファイルにしておく必要があります。

それ以外は、記載されている手順は正常です!以下のようにあなたがジャージー2を使用している場合は、このクラスはjersey.config.server.provider.packagesに置き換えられている情報については

+0

さて、JerseyのJarファイルを手動でインクルードし、Mavenの依存関係を使用しないようにしました。実際には、ここにあるjersey-servlet.jarも含める必要がありました。http://search.maven.org/#search|ga|1|fc%3a%22com.sun.jersey.spi.container.servlet.ServletContainer% 22。私はまた、私のjavaクラスがある私のパッケージにcom.sun.jersey.config.property.packageを置き換えました。これらの情報であなたの答えを更新してください、私はそれを受け入れるでしょう。また、あなたが提供したxmlにはいくつかのエラーがありますか?私はサーブレットタグ内にサーブレットマッピングタグを置くべきですか? –

+0

@DonP提供されている 'web.xml'は問題ないと思います。チュートリアル、第5.3章を見てください。 Define Jersey Servlet dispatcher': ''は ''の後に定義されています! –

9

はので、あなたのリソース構成は次のようになります。web.xmlファイルはWebContentをするの\ WEB-INF` `に行く

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>de.vogella.jersey.todo.resources</param-value> 
</init-param> 
+1

私は与えられたweb.xmlの中で、 'jersey.config.server.provider.packages'というプロパティを使っているのと同じように混乱していましたが、説明では' com.sun.jersey.config.property.packages'について説明していました。あなたの答えはそれをクリアしました.. –

+0

あなたは大歓迎です! –

関連する問題