问题描述
我们拥有当前在WebLogic中运行的Java Web应用程序的所有权。现在,我们正在尝试使用OCP将其部署在Tomcat中。
当我们将.war文件拖放到Tomcat / webapps目录中时,该应用程序未启动,并且收到的错误是:
10/06/20 13:33:02.405 [ main] ERROR ConversationAwarePrimeResourceHandler[72] =
javax.naming.NameNotFoundException: Name [BeanManager] is not bound in this Context. Unable to find [BeanManager].
at org.apache.naming.NamingContext.lookup(NamingContext.java:817)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at pax.XXXNameRemovedXXX.common.web.servlet.ConversationAwarePrimeResourceHandler.getBeanManager(ConversationAwarePrimeResourceHandler.java:60)
at pax.XXXNameRemovedXXX.common.web.servlet.ConversationAwarePrimeResourceHandler.<init>(ConversationAwarePrimeResourceHandler.java:33)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
该错误不是来自Web应用程序,而是来自作为应用程序一部分构建的“自定义” .jar文件。似乎用于生成jar文件的代码无法检索BeanManager。
我找到了有关如何针对Web应用程序执行此操作的说明:Application servers and environments supported by Weld
但是,这似乎不适用于生成.jar文件的代码。 这段代码缺少meta-inf,WEB-INF等内容。
有人可以告诉我如何处理吗?
解决方法
通过将应用程序从spring转换为spring-boot,然后使用嵌入式tomcat来完成任务。 它是由另一位开发人员完成的,因此我不清楚该怎么做,但至少我可以结束这个话题。