1

私は Web 開発の初心者であり、独立した war ファイルとしてパックされ、tomcat 7 にデプロイされる jersey を使用して単純な REST Web サービスを作成するのに苦労しています。

シンプルな hello world の安らかな Web サービスを作成するために、このチュートリアルに従いました。war ファイル (war ファイルとその展開バージョンの両方) を作成するために intelij を使用し、それらを tomcat\webapps フォルダーにデプロイしました。

Tomcat を起動すると、URL ( http://localhost:8080/rest/hello) にアクセスできず、404 が表示されます。

Tomcat のログを見ると、次の一連の行以外に例外やエラーが見つかりません。

INFO: Scanning for root resource and provider classes in the packages:
  sample
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class sample.Hello
εαΘ 30, 2013 11:24:38 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.

私はそれをよく検索し、このエラーのすべての解決策に従おうとしましたが、何もうまくいきませんでした.

初心者のせいで、非常に基本的なことが欠けているような気がします。何を検索するかについてのアイデアはありますか? 私は何が欠けていますか?これはシンプルな Hello World アプリで、私は疲れ果ててイライラしています...

Java クラス

package sample;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("hello")
public class Hello {

  // This method is called if TEXT_PLAIN is requested
  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String sayHelloInPlainText() {
    return "Hello world!";
  }

  // This method is called if HTML is requested
  @GET
  @Produces(MediaType.TEXT_HTML)
  public String sayHelloInHtml() {
    return "<html> " + "<title>" + "Hello world!" + "</title>"
        + "<body><h1>" + "Hello world!" + "</body></h1>" + "</html> ";
  }
}

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/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" version="3.0">

      <display-name>rest</display-name>

      <servlet>
        <servlet-name>Jersey REST Service</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>sample</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>

      <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>

    </web-app>
4

2 に答える 2

3

プロジェクトを eclipse: rest で呼び出した場合、正しいメッセージ "Hello world!" が表示されるはずです。次の URL の tomcat から:

http://localhost:8080/rest/hello.

たとえば、プロジェクトを MyHello と呼んだ場合、投稿したコードで正しい URL は次のようになります。

http://localhost:8080/MyHello/hello

(理由は、Eclipse がデフォルトでプロジェクトの名前として呼び出される war を作成し、構成に追加した tomcat サーバーに公開するためです)

お知らせ下さい

于 2013-06-01T11:02:22.203 に答える