如何访问在WebLogic 10.3.6定义JNDI数据源(How to access JNDI d

2019-09-01 03:28发布

我已经用我的WebLogic控制台创建JNDI数据源,但我无法从我的web应用程序访问的对象。 以下是详细内容

在WebLogic 10.3.6,我已经给了JNDI名称的数据源为: jdbc/mydb

要想从我在我的web应用程序编写的代码我的web应用程序的数据库连接:

Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb");
jndiConnection = ds.getConnection();

早些时候,我使用Tomcat作为服务器,我能得到数据库连接,当我在文件中配置的资源的详细信息tomcat/conf/server.xml ,但是当我用用,我收到以下错误WebLogic Server的启动:

Cannot establish DB connection to JNDI:java:/comp/env/jdbc/mydb While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702. caused by: javax.naming.NameNotFoundException: While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702.; remaining name '/comp/env/jdbc/mydb'

我试图在这个环节提到的选项: 如何在WebLogic JNDI查找资源? 但还是我面临的问题。

请让我知道我在做错误的,什么是访问JNDI对象的过程。

Answer 1:

参照文章后: Tomcat的VS的Weblogic JNDI查找我修改我的代码。

使用下面的Web应用程序的我的Java程序代码已经解决了我的问题:

Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("jdbc/mydb");
jndiConnection = ds.getConnection();

此外,在WebLogic控制台我已经加入我的JNDI对象,以我的管理服务器(下服务器选项),在我的Web应用程序部署。



Answer 2:

想你的答案在WebLogic 12c中但不工作的..!

当我试图通过使用数据源的唯一名称myDB (除去jdbc/ ),它工作得很好。

Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("myDB");
jndiConnection = ds.getConnection();


Answer 3:

对于WebLogic 12c中相同的解决方案将是

添加下面的依赖关系到你的pom.xml ..创建与当前的中间件房屋价值$ {} oracleMiddlewareHome一个变量,然后...

<dependency>
        <groupId>weblogic</groupId>
        <artifactId>webservices</artifactId>
        <version>12.1.3</version>
        <scope>system</scope>
        <systemPath>
            ${oracleMiddlewareHome}/wlserver/server/lib/weblogic.jar
        </systemPath>
    </dependency>

现在使用下面的代码:

 Hashtable<String, String> h = new Hashtable<String, String>(7);
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://localhost:7001");//add ur url
h.put(Context.SECURITY_PRINCIPAL, "weblogic");//add username
h.put(Context.SECURITY_CREDENTIALS, "welcome1");//add password

    Bundle bundle;
    try {
        InitialContext ctx = new InitialContext(h);
       DataSource dataSource = ((DataSource) ctx.lookup("jdbc/ContextBindingDS"));
        bundle = (Bundle) ctx.lookup(BUNDLE_JNDI_NAME);


    } catch (NamingException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }catch (Exception e){
        e.printStackTrace();
    }


文章来源: How to access JNDI data source defined in weblogic 10.3.6