2012-12-17 9 views
14

Ich versuche this Tutorial zu folgen, auf ein einfaches REST-Webservice, jedoch bekomme ich es auf Kater Bereitstellung und es löst eine Ausnahme:Tomcat Fehler zu implementieren .war

FAIL - Application at context path /restful could not be started 
FAIL - Encountered exception org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/restful]] 

Ich habe sehe um für eine Lösung und fand diese question und diese one und sie lassen mich denken, dass es ein Servlet-Mapping-Problem ist, aber ich bin mir nicht sicher, wie man es beheben kann!

Hier ist meine Log-Datei:

18/12/2012 9:57:16 AM org.apache.catalina.startup.HostConfig deployWAR 
SEVERE: Error deploying web application archive /opt/tomcat7/webapps/restful.war 
java.lang.IllegalStateException: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/restful]] 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 

hier ist meine web.xml-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <servlet> 
    <servlet-name>RestfulContainer</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.mcnz.ws</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>RestfulContainer</servlet-name> 
    <url-pattern>/resources/*</url-pattern> 
    </servlet-mapping>  

</web-app> 

und Risiko Sie alle viel zu viele Informationen zu geben, hier ist ein ls von meine Ordnerstruktur:

.: 
WEB-INF 

./WEB-INF: 
classes 
lib 
web.xml 

./WEB-INF/classes: 
com 

./WEB-INF/classes/com: 
mcnz 

./WEB-INF/classes/com/mcnz: 
ws 

./WEB-INF/classes/com/mcnz/ws: 
HelloWorldResource.class 
HelloWorldResource.java 

./WEB-INF/lib: 
asm-3.1.jar 
jackson-core-asl-1.9.2.jar 
jackson-jaxrs-1.9.2.jar 
jackson-mapper-asl-1.9.2.jar 
jackson-xc-1.9.2.jar 
jersey-client-1.16.jar 
jersey-core-1.16.jar 
jersey-json-1.16.jar 
jersey-server-1.16.jar 
jettison-1.1.jar 
jsr311-api-1.1.1.jar 
+0

Hier ist ein ähnlicher Beitrag - http://stackoverflow.com/questions/8512588/tomcat-lifecycleexception-when-deploying – EJK

+0

Ja, ich bin mir bewusst, wie ich in meiner Frage geschrieben habe "" Ich habe nach einer Lösung gesucht und habe diese Frage gefunden ".' Ich bin nur nicht sicher, ob es a) ein Servlet-Problem und b) was ich tun muss, um es zu beheben – Pete

+1

Entschuldigung, folgte nicht dem Link, den Sie gepostet haben. Wie auch immer, es klingt sehr nach einem Problem in web.xml. Wenn ich Sie wäre, würde ich Folgendes versuchen ... Nehmen Sie die Servlet- und Servlet-Mapping-Elemente aus web.xml heraus. Re-deploy und sehen, wenn Sie den gleichen Fehler erhalten. Wenn nicht, dann haben Sie eine bessere Vorstellung von der Ursache. Sie können auch überprüfen, ob com/sun/jersey/spi/container/servlet/ServletContainer.class in einer der JAR-Dateien in Ihrem WEB-INF/lib-Ordner vorhanden ist (beginnen Sie mit jersey-server-1.16.jar). – EJK

Antwort

9

Wie die obigen Kommentar zeigt, wandte sich das Problem sein, dass die Anwendung web.xml re Eine Java-Klasse in einer Servlet-Definition. Das Problem wurde behoben, indem sichergestellt wurde, dass die Anwendung tatsächlich diese Klasse enthielt. Die fehlende JAR-Datei wurde gefunden und in das Verzeichnis WEB-INF/lib gestellt.