OpenJPA в OSGi не находит MySQL JDBC Connector Bundle

В настоящее время я работаю над проектом OSGi на Felix (v4.0.3 ). Мне нужно использовать JPA, поэтому я установил пакеты Apache Aries JPA. Я также установил OpenJPA, и мне нужно, чтобы он подключался к базе данных MySQL с помощью пакета MySQL Connector. К сожалению, это не работает, OpenJPA говорит, что не может найти класс MySQL JDBC, и я не могу понять, что не работает, возможно, я делаю что-то не так. Ниже я объясню, что именно я установил вместе с файлом persistence.xml и фактическим исключением, которое я получаю.

Вот список пакетов Apache Aries, которые я установил:

  1. org.apache.aries.jpa.api -0.3.jar
  2. org.apache.aries.jpa.container.context -0.3.jar
  3. org.apache.aries.jpa.container -0.3.jar
  4. org.apache.aries.util -0.4.jar

Затем я установил зависимости этих пакетов Apache Aries JPA.Я скачал их из Springsource:

  1. com.springsource.javax.transaction -1.1.0.jar
  2. com.springsource.org.apache.log4j -1.2.16.jar
  3. com.springsource.slf4j.api -1.6.1.jar
  4. com.springsource.slf4j.log4j -1.6.1.jar
  5. javax.persistence _2.0.4.v201112161009.jar (это из EclipseLink, если это имеет значение)

Я также установил OpenJPA и все его зависимости. Я нашел связки от 2 до 5(commons -*)в папке lib загруженной папки apache -openjpa -2.2.0 . Я скачал Serp здесь , потому что jar, найденный в папке lib, не был пакетом OSGi. Наконец я нашел два последних пакета (#7 и #8 )в Springsource:

  1. openjpa -2.2.0.jar
  2. общие -коллекции -3.2.1.jar
  3. общие -dbcp -1.4.jar
  4. общие -язык -2.4.jar
  5. общие ресурсы -пул -1.5.4.jar
  6. org.apache.servicemix.bundles.serp -1.13.1 _4.jar
  7. com.springsource.javax.servlet -2.5.0.jar
  8. com.springsource.org.objectweb.asm -3.2.0.jar

После того, как я, наконец, установил OpenJPA, мне по-прежнему требовался пакет драйверов MySQL JDBC, который я также получил из репозитория Springsource вместе с его общими -зависимостью ведения журнала :

  1. . com.springsource.com.mysql.jdbc -5.1.6.jar
  2. com.springsource.org.apache.commons.logging -1.1.1.jar

На данный момент список установленных пакетов становится довольно большим. Я сказал, что установил OpenJPA, но это только потому, что я не мог понять, как использовать любой другой провайдер с Aries. Сначала я хотел использовать EclipseLink, но, видимо, Apache Aries не определяет его как провайдера, и согласно этому блогу вам нужно сделать еще один пакет, содержащий собственный активатор, чтобы Aries заметил EclipseLink.Я попробовал это, но это не сработало, поэтому вместо этого я вернулся к использованию OpenJPA.

Итак, теперь у меня есть два вопроса:

  • Как я могу заставить OpenJPA заметить мой MySQL Bundle?

ИЛИ альтернативно:

  • Как заставить Apache Aries заметить EclipseLink?

Вот файл persistence.xml, который я использую:



    org.apache.openjpa.persistence.PersistenceProviderImpl
    org.project.dao.entity.UserEntity
    
        
        
        
                    
    


Ошибка возникает, когда выполняется следующий конструктор моего класса DAO:

    @PersistenceContext(unitName="userManager.model")
private EntityManager em;
private EntityManagerFactory emf;

public UserDAOBean() {
    em = emf.createEntityManager();
}

Вот ошибка, которую я получаю, когда OpenJPA не находит MySQL. Конечно, стоит отметить, что и URL, и имя пользователя/пароль работают :

 org.apache.openjpa.persistence.PersistenceException: There were errors initializing your configuration:  org.apache.openjpa.util.UserException: A connection could not be obtained for driver class "com.mysql.jdbc.Driver" and URL "jdbc:mysql://localhost:3306/usermanager?autoReconnect=true".  You may have specified an invalid URL.
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:255)
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:123)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)
at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:732)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:295)
at org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1671)
at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:646)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
at org.apache.aries.jpa.container.impl.CountingEntityManagerFactory.createEntityManager(CountingEntityManagerFactory.java:64)
at javax.persistence.EntityManagerFactory$$Proxy.createEntityManager(Unknown Source)

. Я вырезал исключение (, оно продолжается и продолжается )до этого момента:

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver not found by org.apache.openjpa [12]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:85)
... 108 more

PS :Я не мог размещать ссылки на Aries, OpenJPA или EclipseLink из-за ограничения на спам, извините :/

7
задан Hyzual 8 August 2012 в 09:21
поделиться