2013-10-15 2 views
0

Tomcat 7 서버에 Resin 서버 용으로 개발 된 이전 웹 응용 프로그램 (war 컨테이너를 만들거나 ejb-jar.xml을 만들지 않고)을 이동하려고하면 차단됩니다. 내가 한 일은 Eclipse에서 동적 웹 프로젝트를 만들고 코드를 포함하고 선언과 함께 ejb-jar를 만든 것입니다. 또한 서블릿과 함께 web.xml 파일을 만들었습니다. 컴파일이 완료되면 Tomcat에 배포 한 WAR 파일로 내 보냈습니다. I've 그것은해야합니다으로 META-INF에있는 EJB-jar.xml의 체크Tomcat이 배포에 실패하고 이전 웹 응용 프로그램이

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/PortalSavia-Tomcat]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1256) 
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:714) 
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:219) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:212) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
Caused by: java.lang.NoClassDefFoundError: javax/ejb/EJBObject 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) 
    at java.lang.Class.getDeclaredMethods(Class.java:1845) 
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:127) 
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:281) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:143) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:67) 
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:405) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 

:

는 오류입니다. 또한 web.xml은 괜찮아서 서블릿을 갖고있는 것 같습니다. 오류를 찾을 수있는 방법은 무엇입니까? 어쩌면 libs? 감사합니다.

답변

2

Tomcat은 완전한 응용 프로그램 서버가 아니며 단지 서블릿 컨테이너입니다. 즉, Tomcat에는 JAVA EE 컨테이너가 없습니다.

javax/ejb/EJBObject는 Java EE jar에서 찾을 수 있습니다. 따라서 JBoss와 같은 완전한 응용 프로그램 서버를 사용하거나 필요한 JAR을 Tomcat에 포함 시키십시오.

2

Tomcat은 EJB를 지원하지 않습니다. 서블릿 컨테이너 일뿐입니다. Java EE 애플리케이션 컨테이너 (예 : JBoss, Glassfish 또는 WebSphere)를 사용해야합니다.

EJB 지원 jar를 바닐라 Tomcat 설치에 추가하는 것을 권장하지 않습니다. 그것은/그런 식으로 사용되도록 고안되지 않았기 때문에 많은 문제가 발생할 가능성이 있습니다.

+0

heh ... 선생님, 당신은 WebSphere를 사용하라는 첫 번째 사람입니다. :) – WeMakeSoftware

2

당신이 TomEE

TomEE에 응용 프로그램을 배포 할 수 있습니다 바람둥이를 사용하여 주장하는 경우 - J2EE 스테로이드와 기본적으로 바람둥이입니다. 나는 당신의 응용 프로그램이 상자 밖으로 나가지 않을 것이라고 확신한다. (보통 응용 프로그램은 응용 프로그램 서버에 너무 가깝기 때문에 응용 프로그램 서버를 변경할 수 없다.)

본격적인 J2EE 응용 프로그램 서버 (JBoss, Glassfish 등)를 살펴 보시기 바랍니다.

관련 문제