2015-04-29 22 views
0

下面是我的數據源使用的數據源在藍圖中定義的Java訪問Oracle數據庫

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close"> 
    <property name="URL" value="jdbc:oracle:thin:@${host}:${port}:${dbname}"/> 
    <property name="user" value="${user}"/> 
    <property name="password" value="${pass}"/> 
</bean> 
<service ref="dataSource" interface="javax.sql.DataSource"> 
    <service-properties> 
     <entry key="osgi.jndi.service.name" value="jdbc/oracleds"/> 
     <entry key="datasource.name" value="OracleDS"/> 
    </service-properties> 
</service> 
<bean id="LogToOracleDB" class="com.beans.LogToOracleDB"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

我想叫LogToOracleDB

public class LogToOracleDB { 
protected static DataSource dataSource; 

public void test(Exchange exchange) throws SQLException { 
     Connection con = dataSource.getConnection(); 
     Statement stmt = con.createStatement(); 
     ............... 
} 

即時得到空指針異常一些Bean文件使用它而獲得自datasource以來的連接爲空。有人可以幫我查找數據源?

+0

爲什麼是你的DataSource屬性靜態看?如果它是一個bean實例,則應該在該實例上工作並且不需要靜態變量。 – Alexander

回答

1
dataSource = (DataSource)context.lookup(JNDIname); 

你必須使用這樣的,否則創建comboPool並嘗試從