UniversalConnectionPoolManagerMBean уже зарегистрирован - PullRequest
2 голосов
/ 26 апреля 2010

У меня есть два веб-приложения.
Оба из них используют oracle.ucp.UniversalConnectionPool .
При развертывании этих приложений на JBoss я получаю следующее исключение:

java.sql.SQLException: Unable to start the Universal Connection Pool: java.sql.SQLException: Unable to start the Universal Connection Pool: oracle.ucp.UniversalConnectionPoolException: MBean exception occurred while registering or unregistering the MBean
    at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:541)
    at oracle.ucp.jdbc.PoolDataSourceImpl.throwSQLException(PoolDataSourceImpl.java:588)
    at oracle.ucp.jdbc.PoolDataSourceImpl.startPool(PoolDataSourceImpl.java:277)
    at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:647)
    at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:614)
    at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:608)
    at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy.afterPropertiesSet(LazyConnectionDataSourceProxy.java:163)
...  
Caused by: java.sql.SQLException: Unable to start the Universal Connection Pool: oracle.ucp.UniversalConnectionPoolException: MBean exception occurred while registering or unregistering the MBean
    at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:541)
    at oracle.ucp.jdbc.PoolDataSourceImpl.throwSQLException(PoolDataSourceImpl.java:588)
    at oracle.ucp.jdbc.PoolDataSourceImpl.startPool(PoolDataSourceImpl.java:248)
    ... 212 more
Caused by: oracle.ucp.UniversalConnectionPoolException: MBean exception occurred while registering or unregistering the MBean
    at oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:421)
    at oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:389)
    at oracle.ucp.admin.UniversalConnectionPoolManagerMBeanImpl.getUniversalConnectionPoolManagerMBean(UniversalConnectionPoolManagerMBeanImpl.java:148)
    at oracle.ucp.jdbc.PoolDataSourceImpl.startPool(PoolDataSourceImpl.java:243)
    ... 212 more
Caused by: java.security.PrivilegedActionException: javax.management.InstanceAlreadyExistsException: oracle.ucp.admin:name=UniversalConnectionPoolManagerMBean already registered.
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.ucp.admin.UniversalConnectionPoolManagerMBeanImpl.getUniversalConnectionPoolManagerMBean(UniversalConnectionPoolManagerMBeanImpl.java:135)
    ... 213 more
Caused by: javax.management.InstanceAlreadyExistsException: oracle.ucp.admin:name=UniversalConnectionPoolManagerMBean already registered.
    at org.jboss.mx.server.registry.BasicMBeanRegistry.add(BasicMBeanRegistry.java:756)
    at org.jboss.mx.server.registry.BasicMBeanRegistry.registerMBean(BasicMBeanRegistry.java:233)
    at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:138)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:90)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:140)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:90)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
    at org.jboss.mx.server.MBeanServerImpl$3.run(MBeanServerImpl.java:1431)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.jboss.mx.server.MBeanServerImpl.registerMBean(MBeanServerImpl.java:1426)
    at org.jboss.mx.server.MBeanServerImpl.registerMBean(MBeanServerImpl.java:376)
    at oracle.ucp.admin.UniversalConnectionPoolManagerMBeanImpl$2.run(UniversalConnectionPoolManagerMBeanImpl.java:141)
    ... 215 more

Определение компонента источника данных:

<bean id="oracleDataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory" factory-method="getPoolDataSource">
    <!-- hard coded properties -->
    <property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
    <property name="validateConnectionOnBorrow" value="true" />
    <property name="connectionPoolName" value="ORACLE_CONNECTION_POOL" />
...
</bean>

Кто-нибудь знает, как решить эту проблему?

Ответы [ 4 ]

3 голосов
/ 28 июня 2010

Оба пула пытаются зарегистрироваться в JMX под тем же именем ("oracle.ucp.admin: name = UniversalConnectionPoolManagerMBean").

Если вы отключите их возможности JMX, все должно работать нормально.

0 голосов
/ 23 апреля 2015

Я нашел способ сделать это без dms.jar

Я добавил этот боб этой весны:

bean id = "OracleJMXDisabler" class = "yourpackagename.OracleJMXDisabler" init-method = "init"

Класс выглядит так:

public class OracleJMXDisabler
{
    public void init() throws UniversalConnectionPoolException
    {
        UniversalConnectionPoolManager manager = UniversalConnectionPoolManagerImpl.getUniversalConnectionPoolManager();
        manager.setJmxEnabled(false);
    }
}

В моих bean-компонентах источника данных я добавил зависящий от = ”OracleJMXDisabler”, чтобы он сначала инициализировался. Это работает, потому что UniversalConectionPoolManager является одноэлементным и существует только один его экземпляр в контексте приложения.

0 голосов
/ 08 января 2015

Удалить это свойство в вашем бобе если вы устанавливаете имя пула, оно принимает то же самое имя, выдает ошибку уже существующего

0 голосов
/ 26 апреля 2010

Вы можете попытаться не развертывать драйвер jdbc (ojdbc6.jar) как часть ваших веб-приложений. Вместо этого предоставьте jdbc только один раз как часть пути к классу JBoss jvm, поместив файл драйвера в <JBOSS_HOME>/server/default/lib

...