首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jndi中注册在wso2 -Datasource.xml中定义的自定义数据源

问如何在jndi中注册在wso2 -Datasource.xml中定义的自定义数据源
EN

Stack Overflow用户
提问于 2013-07-17 19:33:40
回答 1查看 741关注 0票数 0

我正在使用(v3.0.1),我想知道是否可以在WSO2中自动注册自定义数据源中定义的特定数据源(不使用控制台管理)。

我试图通过以下配置来实现这一点:

代码语言:javascript
复制
    <datasource>
        <name>IPL_DS_IDB</name>
        <description>My custom datasource</description>
        <jndiConfig>
            <name>IPL_DS_DB</name>
            <environment>
                <property name="jndi.use.data.source.factory">true</property>
                <property name="java.naming.factory.initial">com.sun.jndi.rmi.registry.RegistryContextFactory</property>
                <property name="java.naming.provider.url">rmi://localhost:10002</property>
            </environment>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
                <url>jdbc:mysql://192.168.1.5:3306/idb</url>
                <username>wso2user_idb</username>
                <password>XXXXXXX</password>
                <driverClassName>com.mysql.jdbc.Driver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1</validationQuery>
                <validationInterval>30000</validationInterval>
            </configuration>
        </definition>
    </datasource>

但是,当我使用此配置启动Data Services Server时,出现了以下异常:

代码语言:javascript
复制
TID: [0] [DSS] [2013-07-17 12:00:27,671] ERROR {org.wso2.carbon.ndatasource.core.DataSourceRepository} -  Error in registering data source: IPL_DS_IDB - RegistryContext: object to bind must be Remote, Reference, or Referenceable {org.wso2.carbon.ndatasource.core.DataSourceRepository}
java.lang.IllegalArgumentException: RegistryContext: object to bind must be Remote, Reference, or Referenceable
    at com.sun.jndi.rmi.registry.RegistryContext.encodeObject(RegistryContext.java:439)
    at com.sun.jndi.rmi.registry.RegistryContext.rebind(RegistryContext.java:157)
    at com.sun.jndi.rmi.registry.RegistryContext.rebind(RegistryContext.java:164)
    at org.wso2.carbon.context.internal.CarbonContextDataHolder$CarbonInitialJNDIContext.rebind(CarbonContextDataHolder.java:1046)
    at javax.naming.InitialContext.rebind(InitialContext.java:427)
    at org.wso2.carbon.ndatasource.core.DataSourceRepository.registerJNDI(DataSourceRepository.java:260)
    at org.wso2.carbon.ndatasource.core.DataSourceRepository.registerDataSource(DataSourceRepository.java:360)
    at org.wso2.carbon.ndatasource.core.DataSourceRepository.addDataSource(DataSourceRepository.java:474)
    at org.wso2.carbon.ndatasource.core.DataSourceManager.initSystemDataSource(DataSourceManager.java:182)
    at org.wso2.carbon.ndatasource.core.DataSourceManager.initSystemDataSources(DataSourceManager.java:161)
    at org.wso2.carbon.ndatasource.core.internal.DataSourceServiceComponent.initSystemDataSources(DataSourceServiceComponent.java:166)
    at org.wso2.carbon.ndatasource.core.internal.DataSourceServiceComponent.setSecretCallbackHandlerService(DataSourceServiceComponent.java:152)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:367)
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:430)

有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-18 00:57:32

useDataSourceFactory应设置为jndiConfig元素的属性。因此,您的数据源配置应按如下方式更改。

代码语言:javascript
复制
<datasource>
        <name>IPL_DS_IDB</name>
        <description>My custom datasource</description>
        <jndiConfig useDataSourceFactory="true">
            <name>IPL_DS_DB</name>
            <environment>
                <property name="java.naming.factory.initial">com.sun.jndi.rmi.registry.RegistryContextFactory</property>
                <property name="java.naming.provider.url">rmi://localhost:10002</property>
            </environment>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
                <url>jdbc:mysql://192.168.1.5:3306/idb</url>
                <username>wso2user_idb</username>
                <password>XXXXXXX</password>
                <driverClassName>com.mysql.jdbc.Driver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1</validationQuery>
                <validationInterval>30000</validationInterval>
            </configuration>
        </definition>
    </datasource>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17698709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档