微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 以编程方式为Spring创建JNDI数据源

我有一个基于Spring的基于Web的应用程序,它具有使用JNDI定义的数据源,我正在尝试创建一个独立的应用程序来使用bean.如何在独立应用程序中以编程方式创建JNDI条目和数据库属性

diobjectfactorybean">
    sspathXmlApplicationContext ctx = new  ClasspathXmlApplicationContext("applicationContext.xml");

    UserService userService = ctx.getBean(UserService.class);
    User user = userService.findUserById("jdoe");

    System.out.println("display name: " + user.getdisplayName());
}

编辑:

我尝试过类似的东西,但现在收到错误“javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名”

public static void main(String[] args) {
    setupJNDI();

    ClasspathXmlApplicationContext ctx = new  ClasspathXmlApplicationContext("applicationContext.xml");

    UserService userService = ctx.getBean(UserService.class);
    User user = userService.findUserById("jdoe");

    System.out.println("display name: " + user.getdisplayName());
}


private static void setupJNDI() {
    InitialContext ic;
    try {
        ic = new InitialContext();
        ic.createSubcontext("java:");
        ic.createSubcontext("java:/comp");
        ic.createSubcontext("java:/comp/env");
        ic.createSubcontext("java:/comp/env/jdbc");
        sqlServerConnectionPoolDataSource myDS = new sqlServerConnectionPoolDataSource();
        opaDS.setServerName("myserver");
        opaDS.setPortNumber(1433);
        opaDS.setUser("user");
        opaDS.setPassword("password");

        ic.bind("java:/comp/env/jdbc/MyDS",myDS);
    } catch (NamingException e) {
        e.printstacktrace();
    }
}
最佳答案
org.springframework.test依赖项通过SimpleNamingContextBuilder支持

// First create the mock JNDI tree and bind the DS
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
DataSource ds = new ComboPooledDataSource();
ds.setDriverClass( ... ); // etc. for uid,password,url
builder.bind( "java:comp/env/jdbc/MyDS",ds );
builder.activate();

// Then create the Spring context,which should Now be able 
// to resolve the JNDI datasource
ApplicationContext context = new ClasspathXmlApplicationContext( "..." );

这应该工作.

干杯,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐