2013-12-18 35 views

回答

0

爲此,將其設置爲OSGi包,並通過聲明式服務將數據源服務注入到它中(編寫一個充當包激活器的新類)。數據源服務的參考名稱是org.wso2.carbon.ndatasource。服務接口是org.wso2.carbon.ndatasource.core.DataSourceService。一旦服務被注入,您就可以通過它訪問可用的數據源。

Maven的依賴

<dependency> 
     <groupId>org.wso2.carbon</groupId> 
     <artifactId>org.wso2.carbon.ndatasource.core</artifactId> 
     <version>{set.carbon.platform.version.here}</version> 
</dependency> 

當你部署這個OSGi包,把它dropins文件夾內,這樣的碳可識別它作爲一個OSGi包。

一些資源可以實現此會有所幫助:

  1. http://wso2-oxygen-tank.10903.n7.nabble.com/how-does-WSO2-implement-the-Declarative-Service-td9292.html
  2. http://subashsdm.blogspot.com/2013/01/publish-wso2-governance-registry-events.html
1

直接使用JNDI數據源,如果你暴露你的數據源,JNDI,您可以訪問您的數據源數據源。

//imports 
import javax.naming.Context; 
import javax.sql.DataSource; 
import javax.naming.InitialContext; 

try { 
    Hashtable environment = new Hashtable(); 
    environment.put("java.naming.factory.initial", "org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory"); 
    Context initContext = new InitialContext(environment); 
    DataSource ds = (DataSource)initContext.lookup("jdbc/MyCarbonDataSource"); 
    if (result != null) { 
     // Do your work here 
     conn = ds.getConnection(); 

     st = conn.createStatement(); 
     rs = st.executeQuery("SELECT * FROM Customer"); 
    } else { 
     //handle it 
    } 
} catch (NamingException e) { 
    e.printStackTrace(); 
} 

請參考this進一步的細節