简体   繁体   中英

Getting javax.naming.NameNotFoundException when trying to look up database

I've developed a REST Web Service out of Eclipse with the goal of making a call out to a database which we we've attempted to configure in a standalone-full.xml file in the JBoss server we're using. Problem is, it appears we've configured the database incorrectly or missed some type of step, and so I'm unsure which step I'm missing to fix the issue.

The web service calls this method and fails within the getconnection call:

public List<Object> getObjects(long id){

    List<Objects> objects = new ArrayList<Objects>();

    final StringBuffer query = //query removed here;
    this.logger.info("Get Action: " + query.toString());
    Statement ps = null;
    Connection con = null;
    ResultSet rs = null;        

    try {
        con = this.getConnection("DBNAME2");
        ps = con.createStatement();
        SourceMaterial material = null;
        rs = ps.executeQuery(query.toString());
        while(rs.next()) {
            //fields and object logic here
        }
    } catch (SQLException ex) {
        this.logger.error(ex.getMessage());
    } finally {
        this.cleanUp(rs, ps, con);
    }

    return objects;
}

Which eventually hits this code and throws an exception on the jndiName lookup:

protected void init(String dataSource) throws NamingException {

    String jndiName = "";

    if(dataSource.equals("DBNAME"))     
        jndiName = "java:jboss/datasources/jbpmDS"; 
    else if(dataSource.equals("DBNAME2"))   
        jndiName = "java:jboss/datasources/ondisplayDS";    

    Hashtable<String, String> parms = new Hashtable<String, String>();
    parms.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.as.naming.InitialContextFactory");
    //parms.put(Context.URL_PKG_PREFIXES, urlPkgPrefixes);
    InitialContext ctx = new InitialContext(parms); 
    this.datasource = (DataSource) ctx.lookup (jndiName);
}

The JNDI name is configured in our standalone.xml file like so:

<datasource jndi-name="java:jboss/datasources/ondisplayDS" pool-name="ondisplayDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:sqlserver://ServerNameHere:1931;databaseName=DataBaseNameHere;SendStringParametersAsUnicode=true;SelectMethod=cursor;user=GEN_DW_R;password=Re-KcU814RNWau</connection-url>
                <driver>sql</driver>
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>20</max-pool-size>
                </pool>
            </datasource>

Which throws this stack-trace:

09:22:22,190 ERROR [com.mmm.marketing.dao.utils.DatasourceServiceLocator] (http-localhost/127.0.0.1:8080-1) datasources/ondisplayDS -- service jboss.naming.context.java.jboss.datasources.ondisplayDS: javax.naming.NameNotFoundException: datasources/ondisplayDS -- service jboss.naming.context.java.jboss.datasources.ondisplayDS
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:103)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:197)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:174)
at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:243)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:183)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
at javax.naming.InitialContext.lookup(InitialContext.java:411) [rt.jar:1.7.0_71]
at javax.naming.InitialContext.lookup(InitialContext.java:411) [rt.jar:1.7.0_71]
at com.mmm.marketing.dao.utils.DatasourceServiceLocator.init(DatasourceServiceLocator.java:83) [classes:]
at com.mmm.marketing.dao.utils.DatasourceServiceLocator.<init>(DatasourceServiceLocator.java:149) [classes:]
at com.mmm.marketing.dao.utils.DatasourceServiceLocator.getInstance(DatasourceServiceLocator.java:110) [classes:]
at com.mmm.marketing.dao.DAO.getConnection(DAO.java:40) [classes:]
at com.mmm.marketing.dao.MaterialDAO.getMaterials(MaterialDAO.java:30) [classes:]
at com.mmm.marketing.MaterialResource.material_list(MaterialResource.java:35) [classes:]
at com.mmm.marketing.MaterialResource$Proxy$_$$_WeldClientProxy.material_list(MaterialResource$Proxy$_$$_WeldClientProxy.java) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_71]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_71]
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.8.Final-redhat-3.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:395) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]

Again, I assume there's a simple fix. My only issue is that I don't actually know the correct procedure of configuring our database out of JBoss, am really just guessing.

Does anyone have any insight or can point me in the direction of a procedure with the configuration step I'm missing?

我最终进入了我的服务器的管理控制台,并添加了我在独立文件中配置的数据源,现在代码正常工作。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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