0
我正在用Java创建桌面应用程序NetBean和我想连接glassfish服务器。这是我的代码来获取数据源:从Java中的glassfish服务器获取jdbc资源
private DataSource getDataSourceFromJNDI(String jndiDataSourceName) {
try {
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
p.setProperty(Context.STATE_FACTORIES, "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
p.setProperty(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
InitialContext ic = new InitialContext(p);
return (DataSource) ic.lookup(jndiDataSourceName);
} catch (NamingException e) {
log.error("JNDI error while retrieving " + jndiDataSourceName, e);
throw new AuthorizationException(e);
}
}
我的资源名称是:pooljdnibd。在我的代码设置jdniDataSourceName像不同的方式:
java:comp/env/pooljdnibd
java:global/pooljdnibd
java:jdbc/pooljdnibd
jdbc/pooljdnibd
pooljdnibd
和所有给我一个例外:
javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
你是什么意思'与玻璃鱼服务器连接?你想从Glassfish获取DataSource?为什么?这段代码只能在EJB容器内工作。 – NeplatnyUdaj