将jboss迁移到tomcat-javax.naming.NamingException
我们正在将Struts1.2项目从JDK1.6迁移到1.8,将应用服务器jboss5.1迁移到Tomcat8.0。数据库连接工作正常,初始页面正在加载和填充一些数据。但是当我执行任何操作(提交按钮)时,它抛出一个异常将jboss迁移到tomcat-javax.naming.NamingException,java,tomcat,jakarta-ee,jndi,jta,Java,Tomcat,Jakarta Ee,Jndi,Jta,我们正在将Struts1.2项目从JDK1.6迁移到1.8,将应用服务器jboss5.1迁移到Tomcat8.0。数据库连接工作正常,初始页面正在加载和填充一些数据。但是当我执行任何操作(提交按钮)时,它抛出一个异常javax.naming.NamingException:cannotcreate resource instance与JBoss5.1中的代码相同,但在Tomcat 8中出错 但我怀疑出现错误的原因是UserTransaction需要在context.xml中单独定义,但不确定它是
javax.naming.NamingException:cannotcreate resource instance
与JBoss5.1中的代码相同,但在Tomcat 8中出错
但我怀疑出现错误的原因是UserTransaction需要在context.xml中单独定义,但不确定它是否正确。请让我知道
UserTransaction ut = (UserTransaction) myCntxt.lookup("java:comp/UserTransaction");
如果需要定义UserTransaction,请告诉我如何在Tomcat服务器中进行配置
在META-INF/context.xml下的context.xml中添加了数据库配置
<Resource name="jdbc/Test1"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
username="xxxxx"
password="xxxxx"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@xxxx:1527:xxxx" />
<Resource name="jdbc/Test2"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
username="xxxxx"
password="xxxxx"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@xxxx:1527:xxxx" />
堆栈跟踪:
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.logic.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:22 AM org.apache.struts.action.RequestProcessor processException
WARNING: Unhandled Exception thrown: class javax.naming.NamingException
Dec 25, 2019 7:28:22 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [action] in context with path [/policy] threw exception [javax.naming.NamingException: Cannot create resource instance] with root cause
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at org.apache.naming.NamingContext.lookup(NamingContext.java:847)
at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
at org.apache.naming.NamingContext.lookup(NamingContext.java:835)
at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.db.DbQuery.saveAppRejValue(DbQuery.java:798)
at com.actions.PolicyAction.executeDisplay(PolicyAction.java:298)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
2019年12月25日上午7:28:07 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.html.LocalStrings',returnNull=true
2019年12月25日上午7:28:07 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.util.LocalStrings',returnNull=true
2019年12月25日上午7:28:07 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.html.LocalStrings',returnNull=true
2019年12月25日上午7:28:07 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.html.LocalStrings',returnNull=true
2019年12月25日上午7:28:08 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.logic.LocalStrings',returnNull=true
2019年12月25日上午7:28:08 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.html.LocalStrings',returnNull=true
2019年12月25日上午7:28:08 org.apache.struts.util.PropertyMessageResources
信息:正在初始化,config='org.apache.struts.taglib.html.LocalStrings',returnNull=true
2019年12月25日上午7:28:22 org.apache.struts.action.RequestProcessor processException
警告:引发未处理的异常:类javax.naming.NamingException
2019年12月25日上午7:28:22 org.apache.catalina.core.StandardWrapper
严重:路径为[/policy]的上下文中Servlet[action]的Servlet.service()引发了具有根本原因的异常[javax.naming.NamingException:无法创建资源实例]
javax.naming.NamingException:无法创建资源实例
位于org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
位于javax.naming.spi.NamingManager.getObjectInstance(未知源)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:847)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:158)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:835)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:172)
位于org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
位于javax.naming.InitialContext.lookup(未知源)
位于com.db.DbQuery.saveAppRejValue(DbQuery.java:798)
在com.actions.PolicyAction.executeDisplay上(PolicyAction.java:298)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
位于org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
位于org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
位于org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
位于org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
位于org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
位于java.lang.Thread.run(未知源)
如图所示,Tomcat不支持JTA(JSR 907):
你会
public static void dbInit(String test1dataSourceReference,String test2dataSourceReference) throws Exception
{
Context ctx = new InitialContext();
tds =(DataSource) ctx.lookup("java:comp/env/" + test1dataSourceReference);
cds = (DataSource) ctx.lookup("java:comp/env/" + test2dataSourceReference);
}
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:07 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.logic.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:08 AM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
Dec 25, 2019 7:28:22 AM org.apache.struts.action.RequestProcessor processException
WARNING: Unhandled Exception thrown: class javax.naming.NamingException
Dec 25, 2019 7:28:22 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [action] in context with path [/policy] threw exception [javax.naming.NamingException: Cannot create resource instance] with root cause
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at org.apache.naming.NamingContext.lookup(NamingContext.java:847)
at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
at org.apache.naming.NamingContext.lookup(NamingContext.java:835)
at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.db.DbQuery.saveAppRejValue(DbQuery.java:798)
at com.actions.PolicyAction.executeDisplay(PolicyAction.java:298)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)