2012-12-17 6 views
14

Staram się podążać this Kurs tworzenia prostej usługi REST internetowej, jednak dostać się do wdrażania go na Tomcat i zgłasza wyjątek:Tomcat braku wdrożyć .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]] 

szukałem dookoła dla rozwiązania i znalazłem to question i to one i oni każą mi myśleć, że to jest problem mapowania serwletów jednak nie jestem pewien jak to naprawić!

Oto mój plik dziennika:

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) 

tutaj jest mój plik web.xml:

<?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> 

i ryzykując wszystko daje zbyt dużo informacji, tutaj jest z ls moja struktura folderów:

.: 
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

Oto podobny post - http://stackoverflow.com/questions/8512588/tomcat-lifecycleexception-when-deploying – EJK

+0

Tak, wiem o tym, jak napisałem na moje pytanie: "Rozejrzałem się za rozwiązaniem i Znalazłem to pytanie "." Po prostu nie jestem pewien, czy jest to) problem serwletu i b) co muszę zrobić, aby to naprawić. – Pete

+1

Niestety, nie podążałem za opublikowanym linkiem. W każdym razie brzmi to jak problem w web.xml. Gdybym był tobą, chciałbym spróbować następujących rzeczy ... Pobrać elementy serwletu i mapowania serwletów z pliku web.xml. Ponownie wdrożyć i sprawdzić, czy pojawi się ten sam błąd. Jeśli nie, to masz lepszy pomysł na główną przyczynę. Możesz również sprawdzić, czy plik com/sun/jersey/spi/container/servlet/ServletContainer.class istnieje w jednym z plików JAR w folderze WEB-INF/lib (start z jersey-server-1.16.jar). – EJK

Odpowiedz

9

Jak pokazuje powyższy komentarz, problem polegał na tym, że aplikacja web.xml ponownie zafascynował klasę Java w definicji serwletu. Problem został rozwiązany, upewniając się, że aplikacja faktycznie zawiera tę klasę. Brakujący plik jar został zlokalizowany i umieszczony w katalogu WEB-INF/lib.