Database 在部署Tomcat 7服务器时未找到org.objectweb.jndi.DataSourceFactory类异常

Database 在部署Tomcat 7服务器时未找到org.objectweb.jndi.DataSourceFactory类异常,database,tomcat,Database,Tomcat,当我启动Tomcat服务器7时,会收到一条警告,其中提到以下消息: 警告:未能在JMX中注册:[javax.naming.NamingException: 无法加载资源工厂类[根异常为 java.lang.ClassNotFoundException: org.objectweb.jndi.DataSourceFactory]] 由于这是一个警告,我将跳过它并继续此过程。一旦创建了数据库连接,就会出现以下异常 javax.naming.NamingException: Could not loa

当我启动Tomcat服务器7时,会收到一条警告,其中提到以下消息:

警告:未能在JMX中注册:[javax.naming.NamingException: 无法加载资源工厂类[根异常为 java.lang.ClassNotFoundException: org.objectweb.jndi.DataSourceFactory]]

由于这是一个警告,我将跳过它并继续此过程。一旦创建了数据库连接,就会出现以下异常

javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.objectweb.jndi.DataSourceFactory]
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:82)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:848)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:836)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:836)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:836)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at se.cambiosys.spider.FHIRServermodule.connection.DBConnectionToolkit.getConnection(DBConnectionToolkit.java:38)
    at se.cambiosys.spider.FHIRServermodule.internalToolkit.WSUserInternalToolkit.isValidUser(WSUserInternalToolkit.java:187)
    at se.cambiosys.spider.FHIRServermodule.toolkit.WSUserToolkit.isValidUser(WSUserToolkit.java:23)
    at se.cambiosys.spider.FHIRServermodule.servlets.AccessTokenServlet.validateCredentials(AccessTokenServlet.java:315)
    at se.cambiosys.spider.FHIRServermodule.servlets.AccessTokenServlet.handlePasswordGrant(AccessTokenServlet.java:139)
    at se.cambiosys.spider.FHIRServermodule.servlets.AccessTokenServlet.handleGrants(AccessTokenServlet.java:86)
    at se.cambiosys.spider.FHIRServermodule.servlets.AccessTokenServlet.doPost(AccessTokenServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
**Caused by: java.lang.ClassNotFoundException: org.objectweb.jndi.DataSourceFactory
    at** org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1928)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1771)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:80)
我是否在Tomcat服务器中使用了错误的jar文件或其他问题

InitialContext ic = new InitialContext();
DataSource da = (DataSource) 
ic.lookup("java:comp/env/jdbc/fhirDB");//error... code snippet.
return da.getConnection();
这里是我的上下文文件

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
<!-- path="/CosmicFHIRService" docBase="CosmicFHIRService.war" reloadable="true" crossContext="true" -->

<Resource name="jdbc/fhirDB" auth="Container"
    type="javax.sql.DataSource" username="spider3" password="spider3"
    factory="org.objectweb.jndi.DataSourceFactory"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://CSLK-DKDB-81-1:1433;DatabaseName=FAROE_SPIDERIII;SelectMethod=cursor;"
    maxActive="8" />
    <Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60" />
</Context>

org.objectweb.jndi.DataSourceFactory
不在Tomcat的类路径上。您必须将包含它的.jar文件放入ApacheTomcat lib文件夹:
$CATALINA\u HOME/lib/

编辑:
根据你的评论,你根本不打算实际使用这个类。是您的
context.xml
文件引用了不存在的类:

factory=“org.objectweb.jndi.DataSourceFactory”

下一个参考可能失败:


您可以简单地将其更改为替代实现,并在必要时更新更多属性,如中所述。

是否要求使用objectweb stuff?当我看和(如果可以到达的话)它看起来有点古老和过时。也许您最好升级到推荐的ApacheTomcat 9和/或使用内置数据源:我不知道这些objectweb内容在哪里引用?我认为问题在于不需要的jar被放在我的lib文件夹中。但是我怎么能找到呢?是您的
context.xml
文件引用了不存在的类:
factory=“org.objectweb.jndi.DataSourceFactory”
,下一次引用可能失败:
。你可以简单地改变这一点。你是个天才。非常感谢。:)不客气。我相应地更新了我的答案。