2012-11-08 14 views
13

Apache TomcatでJerseyとmavenを使用して実装されたHelloWorld RESTful Webサービスにヒットしようとすると、次の例外が発生します。com.sun.jersey.api.container.ContainerException:ResourceConfigインスタンスにルートリソースクラスが含まれていません

URL: http://localhost:8080/TestRest/rest/hello/abcd 

com.sun.jersey.api.container.ContainerException:ResourceConfigのインスタンスはどのルートリソースクラスが含まれていません。

私はインターネット上のさまざまな情報源を調べましたが、例外はweb.xmlにあるパッケージ構造にクラスがないために発生すると言いますが、それらがすべて正しいことを確認しました。

これに関するご支援をいただければ幸いです。続き

これは、単純なHelloWorldServiceでのpom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 
     <groupId>my.test.rest</groupId> 
     <artifactId>TestRest</artifactId> 
     <packaging>war</packaging> 
     <version>0.0.1-SNAPSHOT</version> 
     <name>TestRest Maven Webapp</name> 
     <url>http://maven.apache.org</url> 
     <repositories> 
       <repository> 
       <id>maven2-repository.java.net</id> 
       <name>Java.net Repository for Maven</name> 
       <url>http://download.java.net/maven/2/</url> 
       <layout>default</layout> 
     </repository> 
    </repositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>TestRest</finalName> 
    </build> 
</project> 

のコードです。

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Restful Web Application</display-name> 

    <servlet> 
     <servlet-name>HelloServlet</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.rest</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>HelloServlet</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

package com.rest; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.core.Response; 

@Path("/hello") 
public class HelloWorldService { 

    @GET 
    @Path("/{param}") 
    public Response getMsg(@PathParam("param") String msg) { 

     String output = "Hello, " + msg; 

     return Response.status(200).entity(output).build(); 

    } 

} 

そして最後に、web.xmlが私は私のディレクトリ構造は、それがない場合には、あまりにも、私を修正してください正しいことを願っています。

Directory Structure

答えて

16

あなたは間違ったソースフォルダにHelloWorldService.javaを持っています。 src/main/resourcesのではなく、である必要があります。それは大きな大きな違いです!

Javaコードがコンパイルされていないことを意味します。そのため、エラーが発生します。リクエストを処理できるクラスはありません。

Maven Standard Directory Layoutをご覧ください。

+1

... Mavenを使ってEclipseのインディゴにJavaでRESTful Webサービスを開発する上で詳細な説明のためにこれを参照することが私の間違いを指し示すためのおかげで...本当に感謝します! –

8

はい、Eclipse Indigoの問題です.Mavenを使用してJavaでRESTful Webサービスを開発する際に、正しいディレクトリ構造が作成されないためです。ですから、指定されたソースディレクトリを削除し、src/main/javaというソースを@mabaとして追加するのが最善の回避策です。 あなたがhttp://kausalmalladi.blogspot.in/2012/11/developing-restful-java-web-service-in.html

関連する問題