2010-04-26 4 views
2

두 개의 웹 응용 프로그램이 있습니다.
둘 다 사용 oracle.ucp.UniversalConnectionPool.
내가 보스 I에 이러한 응용 프로그램을 배포 할 때 다음받을 예외 : 데이터 소스 빈의UniversalConnectionPoolManagerMBean이 이미 등록되었습니다.

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> 

사람은이 문제를 해결하는 방법을 알고 있나요

?

+0

나는 Tomcat에 두 번의 전쟁을 전개하려고하는데 같은 문제가있다. ojdbc6.jar 및 ucp.jar 파일을 Tomcat/lib 디렉토리에 복사하고 내 전쟁에서 제거하면 두 앱을 모두 성공적으로로드 할 수 있습니다. 두 단계가 모두 필요합니다. 그러나, 나는 그것이 받아 들일 수있는 해결책을 찾지 못했고 여전히 이것을 다루기위한 더 쉽고/더 나은 방법을 찾고있다. Spring을 사용하여 데이터 소스를 구성하고 oracle.ucp.admin : name = UniversalConnectionPoolManagerMBean과 같이 이름을 변경할 수있는 방법을 찾지 못했습니다. 나는 당신이 이것을 손으로하고 있지만 스프링 컨텍스트 내에서가 아니라면 해결책을 보았습니다. – bjhale

답변

0

웹 응용 프로그램의 일부로 jdbc 드라이버 (ojdbc6.jar)를 배포하지 않을 수 있습니다. 대신 jdbc를 JBoss jvm 클래스 경로의 일부로 한 번만 제공하여 드라이버 병을 <JBOSS_HOME>/server/default/lib

+1

웹 애플리케이션의 일부로 jdbc 드라이버를 배치하지 않았습니다. ojdbc5.jar과 ucp.jar을 모두 $ JBOSS_HOME/server/web/lib에 넣습니다. 그러나 도움이되지 않습니다. –

3

두 개의 풀을 같은 이름 ("oracle.ucp.admin : name = UniversalConnectionPoolManagerMBean")으로 JMX에 등록하려고합니다.

turn off의 JMX 기능을 사용하면 문제가 해결됩니다.

+0

불행히도 블로그 링크가 끊어졌습니다. –

0

당신이 풀 이름을 설정하면 내가이 추가

dms.jar없이 할 수있는 방법 내놓았다

0

이미 오류를의 존재 던졌습니다 같은 이름을 사용 여러분의 빈에서이 속성을 제거 봄 콩 :

콩 ID = "OracleJMXDisabler"클래스 = "yourpackagename.OracleJMXDisabler"초기화 메소드 = "초기화"클래스는 다음과 같습니다

:

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

제 데이터 소스 빈에서 depends-on = "OracleJMXDisabler"를 추가하여 먼저 초기화 될 것입니다. 이것은 UniversalConectionPoolManager가 싱글 톤이고 응용 프로그램 컨텍스트 당 하나의 인스턴스 만 있기 때문에 작동합니다.

관련 문제