与独立Java应用程序的数据源连接

时间:2017-04-21 08:57:11

标签: java postgresql

我已经能够在网络应用中配置我的数据源,但无法在独立应用中复制它。

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应用程序时的相同代码执行正常。

usernamepassword由于是生产环境而被编辑。

这是 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>

任何人都可以帮我纠正这个例外。

0 个答案:

没有答案