在类介体中使用WSO2数据源

时间:2013-12-18 03:13:25

标签: wso2 wso2esb

有没有办法在类调解器中使用WSO2数据源?我试图用Google搜索,但一无所获。有可能这样做吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

为此,将其设为OSGi包并通过声明性服务获取向其注入的数据源服务(编写一个充当bundle激活器的新类)。数据源服务的引用名称为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