2012-12-17 38 views
14

Tôi đang cố gắng làm theo this hướng dẫn về việc tạo ra một dịch vụ REST web đơn giản, tuy nhiên tôi nhận được để triển khai nó trên tomcat và nó ném một ngoại lệ:Tomcat thất bại trong việc triển khai .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]] 

Tôi đã nhìn xung quanh cho một giải pháp và tìm thấy điều này question và điều này one và họ làm cho tôi nghĩ rằng đó là một vấn đề bản đồ servlet tuy nhiên tôi không chắc làm thế nào để sửa chữa nó!

Đây là tập tin đăng nhập của tôi:

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) 

đây là file web.xml của tôi:

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

và có nguy cơ đem lại cho bạn tất cả các quá nhiều thông tin, đây là một ls của cấu trúc thư mục của tôi:

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

Đây là bài đăng tương tự - http://stackoverflow.com/questions/8512588/tomcat-lifecycleexception-when-deploying – EJK

+0

Có, tôi biết là tôi đã đăng trong câu hỏi của mình '" Tôi đã xem xét giải pháp và tìm thấy câu hỏi này ".' Tôi chỉ không chắc chắn cho dù đó là một) một vấn đề servlet và b) những gì tôi cần phải làm để sửa chữa nó – Pete

+1

Xin lỗi, không theo liên kết bạn đăng. Dù sao, nó có vẻ giống như một vấn đề trong web.xml. Nếu tôi là bạn, tôi sẽ thử những điều sau đây ... Lấy các phần tử servlet và servlet-mapping ra khỏi web.xml. Triển khai lại và xem bạn có gặp lỗi tương tự không. Nếu không, thì bạn có một ý tưởng tốt hơn về nguyên nhân gốc rễ. Bạn cũng có thể muốn xác minh rằng com/sun/jersey/spi/container/servlet/ServletContainer.class tồn tại trong một trong các tệp jar trong thư mục WEB-INF/lib của bạn (bắt đầu với jersey-server-1.16.jar). – EJK

Trả lời

9

Như nhận xét ở trên cho thấy, sự cố hóa ra là ứng dụng web.xml lại ferenced một lớp java trong một định nghĩa servlet. Vấn đề đã được sửa chữa bằng cách đảm bảo ứng dụng thực sự chứa lớp đó. Tệp jar bị thiếu nằm trong thư mục WEB-INF/lib.

Các vấn đề liên quan