简体   繁体   English

从ant切换到maven后无法在tomcat上部署

[英]Unable to deploy on tomcat after switching from ant to maven

I have a migrate a project from ant to maven. 我将一个项目从ant迁移到了maven。
It is an tomcat application. 这是一个tomcat应用程序。
But if I compile the war file with maven now a get an exception, after starting the war-file. 但是,如果我现在使用maven编译war文件,则在启动war文件之后会出现异常。

javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. javax.naming.NameNotFoundException:名称[comp / env]在此上下文中未绑定。 Unable to find [comp]. 找不到[comp]。 at org.apache.naming.NamingContext.lookup(NamingContext.java:817) at org.apache.naming.NamingContext.lookup(NamingContext.java:173) at org.apache.catalina.deploy.NamingResourcesImpl.cleanUp(NamingResourcesImpl.java:994) at org.apache.catalina.deploy.NamingResourcesImpl.stopInternal(NamingResourcesImpl.java:976) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5476) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226) at org.apache.catalina.manager.ManagerServlet.undeploy(ManagerServlet.java:1456) at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:373) at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil 在org.apache.naming.NamingContext.lookup(NamingContext.java:817)在org.apache.naming.NamingContext.lookup(NamingContext.java:173)在org.apache.catalina.deploy.NamingResourcesImpl.cleanUp(NamingResourcesImpl.java :994),位于org.apache.catalina.core的org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226),位于org.apache.catalina.deploy.NamingResourcesImpl.stopInternal(NamingResourcesImpl.java:976)。 org.org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)的StandardContext.stopInternal(StandardContext.java:5476)org.org的org.apache.catalina.manager.ManagerServlet.undeploy(ManagerServlet.java:1456) .apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:373)在javax.servlet.http.HttpServlet.service(HttpServlet.java:635)在javax.servlet.http.HttpServlet.service(HttpServlet.java:742) )org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil)处的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) terChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve. org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)处的terChain.java:166)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)处的org.apache.tomcat.websocket.server。 org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)处的.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java :193),位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199),位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199),位于org.apache.catalina.core。 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)的org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)的StandardContextValve.invoke(StandardContextValve.java:96) .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve。 java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1463) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread 的org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)处的java:81)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)处的org.apache.catalina.connector org.apache.coyote的.CoyoteAdapter.service(CoyoteAdapter.java:342).org的org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)的http11.Http11Processor.service(Http11Processor.java:803)。 org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1463)处的apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:800)在org.apache.tomcat.util.net处。 java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)上的SocketProcessorBase.run(SocketProcessorBase.java:49),java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)处的java.628 / java.base / java.lang.Thread.run(Thread .java:834) 的.java:834)

When I am compiling with ant the application starts without a problem. 当我使用ant进行编译时,应用程序启动就没有问题了。

This is my context.xml 这是我的context.xml

<?xml version="1.0" encoding="UTF-8"?>
    <Context antiJARLocking="true" path="/AppControlServer">
    <Resource name="jdbc/App" auth="Container"
    type="javax.sql.DataSource" maxActive="50" maxIdle="10" maxWait="4000"
    username="App" password="App"
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://localhost:5432/App"/>
</Context>

The application is using hibernate, this is my hibernate.cfg.xml: 该应用程序正在使用hibernate,这是我的hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.datasource">java:comp/env/jdbc/App</property>
        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
        <property name="hibernate.current_session_context_class">managed</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">false</property>
        <! -- entity mapping -->
    </session-factory>
</hibernate-configuration>

Thanks for your help 谢谢你的帮助

Well, if you have only changed the build platform then compare the two war files and see what has changed. 好吧,如果您仅更改了构建平台,则比较两个war文件,看看有什么变化。 When you know what has changed it is easier to fix it. 当您知道已更改的内容时,更容易修复它。

My guess based on similar migrations is that you have resource files in the source folder ( src/main/java ). 基于类似的迁移,我的猜测是您在源文件夹( src/main/java )中有资源文件。 Maven doesn't copy files from the source folder, they should go in the resource folder ( src/main/resources ) instead. Maven不会从源文件夹复制文件,它们应该放在资源文件夹( src/main/resources )中。 Be sure to preserve the directory structure if you move files! 如果您移动文件,请务必保留目录结构!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM