2013-10-15 2 views
0

Я блокирован, пытаясь переместить старый сервер Webapp, разработанный для сервера Resin (без создания контейнера войны или с ejb-jar.xml) на сервер Tomcat 7. То, что я сделал, - создать динамический веб-проект в Eclipse, включить код и создать ejb-jar с объявлением. Также создан файл web.xml с сервлетом. Как только он скомпилирован правильно, я экспортировал его в файл WAR, который я развертываю в Tomcat.Tomcat не работает и старый webapp

Это ошибка:

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) 

I've проверены на EJB jar.xml, который находится в META-INF, как это должно быть. Также web.xml кажется прекрасным и имеет сервлет. Любая идея, где искать ошибку? Может быть, libs? Спасибо большое!

ответ

2

Tomcat - это не полный сервер приложений, а просто контейнер сервлетов. При этом у Tomcat нет контейнера JAVA EE.

Javax/ejb/EJBObject можно найти в банках Java EE. Таким образом, пользователь может использовать полный сервер приложений, например JBoss, или включать необходимые JAR в Tomcat.

2

Tomcat не поддерживает EJB. Это просто контейнер сервлетов. Вам необходимо использовать полный контейнер приложений Java EE, такой JBoss, Glassfish или WebSphere.

Я бы не рекомендовал добавлять баннеры поддержки EJB к установке Vanilla Tomcat. Это/они не предназначены для использования таким образом, и вы, вероятно, столкнетесь с множеством проблем.

+0

Хех ... сэр, вы первый человек, предлагающий использовать WebSphere :) – WeMakeSoftware

2

Если вы настаиваете на использовании кота, вы можете попробовать развернуть приложение на TomEE

TomEE - это в основном с J2EE кот стероидов. Я уверен, что ваше приложение не будет работать из коробки (обычно приложения так привязаны к серверам приложений, что невозможно изменить сервер приложений).

Предлагаю вам взглянуть на полномасштабный сервер приложений J2EE (JBoss, Glassfish и т. Д.).

Смежные вопросы