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

问题描述 投票:0回答:1

我有一个从ant到maven的项目迁移。 这是一个tomcat应用程序。 但是,如果我现在使用maven编译war文件,则在启动war-file后获得异常。

javax.naming.NameNotFoundException:名称[comp / env]未绑定在此Context中。无法找到[comp]。在Org.apache.namup.NamingContext.lookup(NamingContext.java:817)的org.apache.naming.Nam.deploy.Nam.san上的org.apache.naming.NamingContext.lookup(NamingContext.java:173)(NamingResourcesImpl.java) :994)org.apache.catalina.deploy.NamingResourcesImpl.stopInternal(NamingResourcesImpl.java:976)org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)org.apache.catalina.core。 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)上的StandardContext.stopInternal(StandardContext.java:5476)位于org.apache.catalina.manager.ManagerServlet.undeploy(ManagerServlet.java:1456)org .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.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil) terChain.java:166)atg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)atg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java) :193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)org.apache.catalina.core。 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)上的StandardContextValve.invoke(StandardContextValve.java:96)位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)org .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve。 java:81)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)org.apache.catalina.connector .CoyoteAdapter.service(CoyoteAdapter.java:342)org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org。位于org.apache.tomcat.util.net的org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1463)的apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:800)。 java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)中的SocketProcessorBase.run(SocketProcessorBase.java:49),位于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的.java:834)

当我使用ant编译时,应用程序启动没有问题。

这是我的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>

应用程序正在使用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>

谢谢你的帮助

java hibernate maven tomcat8
1个回答
0
投票

好吧,如果你只更改了构建平台,那么比较两个war文件,看看有什么变化。当您知道更改了什么时,更容易修复它。

我基于类似迁移的猜测是你在源文件夹(src/main/java)中有资源文件。 Maven不会复制源文件夹中的文件,而应该放在资源文件夹(src/main/resources)中。如果移动文件,请务必保留目录结构!

© www.soinside.com 2019 - 2024. All rights reserved.