2013-12-20 2 views
4

Я хочу создать Oracle UCP, используя этот код:Не можете найти oracle.ucp.jdbc.PoolDataSourceFactory в Oracle ОГП

import oracle.ucp.jdbc.PoolDataSource; 
import oracle.ucp.jdbc.PoolDataSourceFactory; 

System.out.println("***** OracleDS_UCP -> start init of PoolDataSource"); 

      PoolDataSource pool = PoolDataSourceFactory.getPoolDataSource(); 
      pool.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); 
      pool.setURL("jdbc:oracle:thin:@localhost:1521:XE"); 
      pool.setUser("test"); 
      pool.setPassword("test"); 
      pool.setMaxStatements(10); // the maximum number of statements that may be pooled or cached on a connection. 
      pool.setInitialPoolSize(2); 
      pool.setMinPoolSize(1); 
      pool.setMaxPoolSize(50); 
      pool.setLoginTimeout(60); // one minute 
      pool.setConnectionWaitTimeout(60); // one minute 
      pool.setAbandonedConnectionTimeout(30 * 60); // thirty minutes 
      pool.setMaxIdleTime(60 * 60); // one hour and kill inactive or idle connections 
      pool.setInactiveConnectionTimeout(60 * 60); // one hour and kill inactive or idle connections 
      pool.setConnectionWaitTimeout(0); // do not wait for a used connection to be released by a client. 
      pool.setConnectionHarvestTriggerCount(40); 
      pool.setConnectionHarvestMaxCount(10); 

Я использую

<plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.4.0</version> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Embed-Dependency>ucp,ojdbc6</Embed-Dependency> 
        <Import-Package> 
         org.osgi.framework, 
         javax.sql, 
         javax.naming, 
         oracle.jdbc.pool.OracleDataSource, 
         oracle.ucp.jdbc.PoolDataSourceFactory, 
         oracle.ucp.jdbc.PoolDataSourceImpl, 
         javax.naming.spi, 
         javax.management, 
         javax.management.modelmbean, 
         oracle.jdbc.pool 
        </Import-Package> 
        <Include-Resource> 
         ucp-11.2.0.3.jar, 
         ojdbc6-11.2.0.3.jar 
        </Include-Resource> 
        <Bundle-ClassPath> 
         ucp-11.2.0.3.jar, 
         ojdbc6-11.2.0.3.jar, 
         . 
        </Bundle-ClassPath> 
        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
        <Bundle-Activator>org.test.ucp.activator.Activator</Bundle-Activator> 
       </instructions> 
      </configuration> 
     </plugin> 

Но когда я начинаю код я получаю это сообщение об ошибке:

Test Oracle UCP 
ERROR: Bundle ucpTest [21] Error starting inputstream:ucpTest-1.0.jar (org.osgi.framework.BundleExce 
ption: Activator start error in bundle ucpTest [21].) 
java.lang.IllegalArgumentException: interface oracle.ucp.jdbc.LabelableConnection is not visible fro 
m class loader 
     at java.lang.reflect.Proxy$ProxyClassFactory.apply(Unknown Source) 
     at java.lang.reflect.Proxy$ProxyClassFactory.apply(Unknown Source) 
     at java.lang.reflect.WeakCache$Factory.get(Unknown Source) 
     at java.lang.reflect.WeakCache.get(Unknown Source) 
     at java.lang.reflect.Proxy.getProxyClass0(Unknown Source) 
     at java.lang.reflect.Proxy.newProxyInstance(Unknown Source) 
     at oracle.ucp.jdbc.proxy.ConnectionProxyFactory.createConnectionProxy(ConnectionProxyFactory 
.java:78) 
     at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:919) 
     at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:863) 
     at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:855) 
     at org.test.osgi.ucp.impl.OracleDS_UCP.getConnection(OracleDS_UCP.java:26) 
     at org.test.ucp.activator.Activator.testOracleUCP(Activator.java:41) 
     at org.test.ucp.activator.Activator.start(Activator.java:17) 
     at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) 
     at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977) 
     at org.apache.felix.framework.Felix.startBundle(Felix.java:1895) 
     at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) 
     at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) 
     at java.lang.Thread.run(Unknown Source) 

Возможно, я не настроил UCP правильно. Можете ли вы помочь решить эту проблему?

+0

Является ли это полной стопкой исключения, которое вы получаете? Является ли это веб-приложение или отдельное приложение? –

+0

Сообщение обновлено. Это автономное приложение. –

+0

Включить LabelableConnection в pom.xml – TrungTran05T3

ответ

2

Питер, я не работал над ОГП. Следовательно, я не буду в состоянии дать вам полное решение, но мало советов:

  1. Попробуйте использовать Apache Commons DBCP как OSGi bundle.
  2. Попробуйте удалить директиву Import-Package из конфигурации BND. BND разумно идентифицировать это. Тогда возможно уточнить ваш импорт позже.
  3. Попробуйте положить DynamicImport-Package: * директива конфигурации BND .:

    < DynamicImport-пакет > * </DynamicImport-пакет >

Попробуйте эти шаги, и можно объединить 2 & 3 выше, и отчитаться, если это работает.

+0

шаги 2 и 3 не работают. –

+0

Привет, Питер, я собрал небольшое демо-приложение быстро с драйверами пакетов, ucp и клиентским кодом, все отдельно как проект Maven на http://static.ethomasjoseph.com/osgi-project.zip. Сообщите мне, если это помог бы. –

+0

Почему-то я получаю NPE http://pastebin.com/3ytURu2G –