我已经能够在网络应用中配置我的数据源,但无法在独立应用中复制它。
Datasource在config文件夹中的tomcat服务器中配置为server.xml
文件。如何在独立的Java应用程序中从此文件加载数据源?
如果我尝试
Context initialContext = new InitialContext();
DataSource dataSource = (DataSource) csDBEnvContext.lookup(DATASOURCE_NAME);
它给出了以下例外:
javax.naming.NoInitialContextException:需要在中指定类名 环境或系统属性,或作为applet参数,或在 应用程序资源文件:java.naming.factory.initial
尝试使用Web应用程序时的相同代码执行正常。
username
,password
由于是生产环境而被编辑。
这是 jdbc.java :
public static void main(String[] args) throws Exception {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/haryana");
//Connection conn = ds.getConnection();
try {
DatabaseMetaData dataSource = null;
conn = ds.getConnection();
} catch (Exception e) {
System.out.println("Exception while getting local JDBC Connection getLogsJdbcConnection(): " + e.getMessage());
}
Context.xml :
<Context crossContext="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/haryana" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="postgres"
password="postgres"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/fps_ws_db_feb17"/>
</Context>
web.xml 文件:
<resource-ref>
<description>Database connection resource</description>
<res-ref-name>jdbc/haryana</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
任何人都可以帮我纠正这个例外。