java - 带有JDBC池的tomcat上下文异常

标签 java java-ee tomcat web-applications

我有一个与Tomcat Server一起部署的Web应用程序,但有一个例外。

名称jdbc / _UserRight与上下文无关

这是我的上下文:

<Resource name="jdbc/_UserRight" auth="Container"
    type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"
    username="XXXXX" password="XXXXX" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/userright" />


这是我的连接类:

public class ConnectionUserRight {
private Connection cnx;
private ConnectionPool connectionPool;

public ConnectionUserRight() throws ConfigFileReaderException, IOException,
        SQLException {
    connectionPool = new ConnectionPool();
}

public Connection getCnx() throws SQLException, NamingException {
    if (null == this.cnx) {
        this.cnx = connectionPool.getConnection("jdbc/_UserRight");
    } else {
        // Connexion already open
    }

    return cnx;
}

public void closeCnx() {
    connectionPool.closeConnection(this.cnx);
    this.cnx = null;
}
}


编辑:

这是我的日志(第一行例外是法语):

javax.naming.NameNotFoundException:注释jdbc / _UserRight n'est pasliéàce Contexte
    在org.apache.naming.NamingContext.lookup(NamingContext.java:820)
    在org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    在org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
    在javax.naming.InitialContext.lookup(InitialContext.java:411)
    在fr.la.connection.ConnectionPoolSQL.getConnection(ConnectionPoolSQL.java:30)
    在fr.la.jproductbase.dao.ConnectionPool.getConnection(ConnectionPool.java:67)
    在fr.la.juserright.dao.ConnectionUserRight.getCnx(ConnectionUserRight.java:23)
    在fr.la.juserright.dao.UserDAO.readAll(UserDAO.java:74)
    在fr.la.juserright.service.UserModule.getAllUser(UserModule.java:31)
    在fr.la.juserright.service.ServiceUserRight.getAllUser(ServiceUserRight.java:281)
    在fr.la.juserright.managedbean.utilisateurBean.refreshuserList(utilisateurBean.java:53)
    在fr.la.juserright.managedbean.utilisateurBean。(utilisateurBean.java:49)
    在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
    在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    在java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    在java.lang.Class.newInstance0(Class.java:372)
    在java.lang.Class.newInstance(Class.java:325)
    在com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
    在com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
    在com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
    在com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
    在com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
    在com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
    在com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    在com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    在org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
    在org.apache.el.parser.AstValue.getTarget(AstValue.java:94)
    在org.apache.el.parser.AstValue.getType(AstValue.java:82)
    在org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:172)
    在com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
    在org.primefaces.component.datatable.DataTable.isLazy(DataTable.java:968)
    在org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:191)
    在org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:108)
    在javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
    在javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    在javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    在org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:57)
    在org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45)
    在org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
    在javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    在com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
    在com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    在com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    在com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    在javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)
    在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)
    在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)
    在java.lang.Thread.run(Thread.java:722)

最佳答案

看起来您的connectionPool只是在没有上下文的情况下创建。尝试类似-

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
this.cnx = (DataSource) envCtx.lookup("jdbc/_UserRight").getConnection();

关于java - 带有JDBC池的tomcat上下文异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197099/

相关文章:

java - 解释语法 EditText editText = (EditText) findViewById(R.id.edit_message);

java - 如何使用 Maven 避免 EAR/WAR 中派生依赖项的重复?

java - 使用 GTKLookAndFeel 将图像插入 JTable 单元格

java - Guava:MemoizingSupplier 线程安全

java - JBoss MQ教程

java - 为什么我找不到 SSL 握手的信任库?

java - org.hibernate.exception.SQLGrammarException 不正确的 postgresql sql 查询

java - 我的开发团队应该使用Hibernate吗?

java - 为什么 Tomcat 无法显示实际的堆栈跟踪?