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. Commons-коллекции-3.2.1.jar
  3. Commons-dbcp-1.4.jar
  4. Commons-lang-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, который я использую:

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence
    @PersistenceContext(unitName="userManager.model")
private EntityManager em;
private EntityManagerFactory emf;

public UserDAOBean() {
    em = emf.createEntityManager();
}
0.xsd" version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="userManager.model" transaction-type="RESOURCE_LOCAL"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <class>org.project.dao.entity.UserEntity</class> <properties> <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" /> <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/usermanager?autoReconnect=true" /> <property name="openjpa.ConnectionUserName" value="root" /> <property name="openjpa.ConnectionPassword" value="root" /> </properties> </persistence-unit> </persistence>

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

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

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

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

<openjpa-2.2.0-r422266:1244990 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: There were errors initializing your configuration: <openjpa-2.2.0-r422266:1244990 fatal user error> 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 из-за ограничений на спам, извините :/


person Hyzual    schedule 08.08.2012    source источник


Ответы (3)


Благодаря Холли Камминс и после еще нескольких часов исследований я смог найти решение своей проблемы. Я подробно расскажу об этом ниже, это будет очень длинный ответ.

Если вы хотите использовать EclipseLink с Apache Aries (который, как я считаю, на несколько порядков проще установить, чем OpenJPA для OSGi, поскольку он содержится в всего 5 пакетах), вам придется проверьте адаптер EclipseLink — Aries непосредственно из apache, поскольку он еще не выпущен.

Перейдите в соответствующую папку и выполните следующую команду, чтобы получить ее:

svn checkout https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-eclipselink-adapter/

Вы должны получить папку с именем jpa-container-eclipselink-adapter. Теперь, предполагая, что вы используете Linux и у вас установлен Maven, выполните следующие команды:

cd jpa-container-eclipselink-adapter
mvn clean install

Как только Maven успешно скомпилирует исходный код адаптера, вы найдете его в своем репозитории Maven, используя путь

<maven-repo>/org/apache/aries/jpa/org.apache.aries.jpa.eclipselink.adapter/0.3.1-SNAPSHOT/org.apache.aries.jpa.eclipselink.adapter-0.3.1-SNAPSHOT.jar

Вам нужно будет развернуть этот пакет вместе с другими (скопировав его в папку bundle для Felix).

Итак, это было для части EclipseLink, теперь, чтобы ваша настойчивость действительно работала, вам придется использовать Blueprint с Aries. Вот список всех пакетов, которые вам нужно получить с [http://aries.apache.org/downloads/currentrelease.html] (страница загрузки Apache Aries)

  1. org.apache.aries.blueprint
  2. org.apache.aries.proxy
  3. org.apache.aries.jndi.api
  4. org.apache.aries.jndi
  5. org.apache.aries.blueprint
  6. org.apache.aries.jpa.api
  7. org.apache.aries.jpa.container.context
  8. org.apache.aries.jpa.container
  9. org.apache.aries.transaction.blueprint
  10. org.apache.aries.transaction.manager (этот список указан дважды на их сайте, это просто дубликат)
  11. org.apache.aries.util

Когда вы закончите загрузку Aries, вам все равно понадобятся зависимости (получите их из SpringSource). Это пакеты для SLF4J, Log4J, SLF4J Log4J Binding и javax.transaction 1.1 API.

  1. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.slf4j.api&version=1.6.1
  2. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.slf4j.log4j&version=1.6.1
  3. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.transaction&version=1.1.0
  4. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.org.apache.log4j&version=1.2.16

Вам также понадобятся пакеты от EclipseLink (вам нужна версия пакета OSGi)

http://www.eclipse.org/eclipselink/downloads/

Откройте zip и получите следующие файлы:

  1. org.eclipse.persistence.antlr
  2. org.eclipse.persistence.asm
  3. org.eclipse.persistence.core
  4. org.eclipse.persistence.jpa
  5. javax.persistence

Наконец, если вы хотите использовать базу данных MySQL, вам понадобятся пакеты для драйвера MySQL JDBC (загруженные из Springsource).

  1. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.com.mysql.jdbc&version=5.1.6
  2. http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.org.apache.commons.logging&version=1.1.1

После установки всех этих пакетов вам нужно использовать не-jta-источник данных, который вы получите через JNDI. Вот файл persistence.xml, который вы можете изменить для своих нужд:

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="userManager" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/userManagerDS)</non-jta-data-source>
        <class>com.example.dao.entity.UserEntity</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>  
            <!-- EclipseLink should create the database schema automatically -->
            <!-- <property name="eclipselink.ddl-generation" value="create-tables" /> 
            <property name="eclipselink.ddl-generation.output-mode" value="database" /> -->
        </properties>
    </persistence-unit>
</persistence>

Видите javax.sql.Datasource в теге non-jta-data-source? Это то, что мы определим с помощью Blueprint xml. Для этого вам сначала нужно добавить папки OSGI-INF/blueprint/ в пакет сохраняемости (тот, который содержит ваши DAO и Entities). Это папка по умолчанию, в которой находятся xml-файлы чертежей. Любой xml-файл, расположенный здесь, будет отсканирован. После этого создайте файл blueprint.xml (имя можно изменить) и вставьте (и измените) следующий код:

        <bean id="dataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/usermanager?autoReconnect=true" />
        <property name="user" value="root" />
        <property name="password" value="root" />
    </bean>

    <service id="MySQLDataSource" interface="javax.sql.DataSource" ref="dataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/userManagerDS" />
        </service-properties>
    </service>

    <service id="userDAOService" interface="com.example.dao.remote.UserDAORemote">
        <bean class="com.example.dao.beans.UserDAOBean">
            <jpa:unit index="0" unitname="userManager" />
        </bean>
    </service>
</blueprint>

Здесь мы делаем две вещи. Во-первых, мы говорим Aries создать источник данных userManagerDS и настроить его с помощью драйвера JDBC, URL-адреса, пользователя и пароля. Это тот же источник данных, который мы использовали в файле persistence.xml.

Затем мы внедряем EntityManagerFactory в наш DAO. Наш DAO — это класс com.example.dao.beans.UserDAOBean, нам нужно добавить его имя в тег bean. Этот класс должен будет реализовать интерфейс, и нам нужно будет добавить этот интерфейс в тег service. Теперь последний тег jpa:unit указывает Aries внедрить EntityManagerFactory, связанную с единицей сохраняемости, называемой userManager (имя, которое мы использовали в файле persistence.xml), используя первый конструктор UserDAOBean. Это делается с помощью атрибута index="0". Это также означает, что в вашем DAO должен быть код, подобный следующему:

private EntityManager em;
private EntityManagerFactory emf;

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

Также можно ввести ЭДС с помощью сеттера. Вот дополнительные ресурсы, которые помогут вам использовать Blueprint:

Необязательно: будьте осторожны, если вы используете Felix, добавление пакета javax.transaction вызовет «нарушение ограничений использования», поскольку системный пакет (пакет 0) также экспортирует этот API. Вам придется запретить его экспорт, изменив следующую строку в config.properties :

#org.osgi.framework.system.packages=

Вам нужно будет указать здесь список всех пакетов, экспортированных предыдущим пакетом. К сожалению, "удалить" пакет нельзя, приходится переопределять весь список экспортируемых пакетов. Вот мой, надеюсь, он поможет (да, он очень, очень длинный):

org.osgi.framework.system.packages=org.osgi.framework;version=1.6.0, org.osgi.framework.launch;version=1.0.0, org.osgi.framework.wiring;version=1.0.0, org.osgi.framework.startlevel;version=1.0.0, org.osgi.framework.hooks.bundle;version=1.0.0, org.osgi.framework.hooks.resolver;version=1.0.0, org.osgi.framework.hooks.service;version=1.1.0, org.osgi.framework.hooks.weaving;version=1.0.0, org.osgi.service.packageadmin;version=1.2.0, org.osgi.service.startlevel;version=1.1.0, org.osgi.service.url;version=1.0.0, org.osgi.util.tracker;version=1.5.0, javax.accessibility;version=0.0.0.1_006_JavaSE, javax.activation;version=0.0.0.1_006_JavaSE, javax.activity;version=0.0.0.1_006_JavaSE, javax.annotation.processing;version=0.0.0.1_006_JavaSE, javax.annotation;version=0.0.0.1_006_JavaSE, javax.crypto.interfaces;version=0.0.0.1_006_JavaSE, javax.crypto.spec;version=0.0.0.1_006_JavaSE, javax.crypto;version=0.0.0.1_006_JavaSE, javax.imageio.event;version=0.0.0.1_006_JavaSE, javax.imageio.metadata;version=0.0.0.1_006_JavaSE, javax.imageio.plugins.bmp;version=0.0.0.1_006_JavaSE, javax.imageio.plugins.jpeg;version=0.0.0.1_006_JavaSE, javax.imageio.spi;version=0.0.0.1_006_JavaSE, javax.imageio.stream;version=0.0.0.1_006_JavaSE, javax.imageio;version=0.0.0.1_006_JavaSE, javax.jws.soap;version=0.0.0.1_006_JavaSE, javax.jws;version=0.0.0.1_006_JavaSE, javax.lang.model.element;version=0.0.0.1_006_JavaSE, javax.lang.model.type;version=0.0.0.1_006_JavaSE, javax.lang.model.util;version=0.0.0.1_006_JavaSE, javax.lang.model;version=0.0.0.1_006_JavaSE, javax.management.loading;version=0.0.0.1_006_JavaSE, javax.management.modelmbean;version=0.0.0.1_006_JavaSE, javax.management.monitor;version=0.0.0.1_006_JavaSE, javax.management.openmbean;version=0.0.0.1_006_JavaSE, javax.management.relation;version=0.0.0.1_006_JavaSE, javax.management.remote.rmi;version=0.0.0.1_006_JavaSE, javax.management.remote;version=0.0.0.1_006_JavaSE, javax.management.timer;version=0.0.0.1_006_JavaSE, javax.management;version=0.0.0.1_006_JavaSE, javax.naming.directory;version=0.0.0.1_006_JavaSE, javax.naming.event;version=0.0.0.1_006_JavaSE, javax.naming.ldap;version=0.0.0.1_006_JavaSE, javax.naming.spi;version=0.0.0.1_006_JavaSE, javax.naming;version=0.0.0.1_006_JavaSE, javax.net.ssl;version=0.0.0.1_006_JavaSE, javax.net;version=0.0.0.1_006_JavaSE, javax.print.attribute.standard;version=0.0.0.1_006_JavaSE, javax.print.attribute;version=0.0.0.1_006_JavaSE, javax.print.event;version=0.0.0.1_006_JavaSE, javax.print;version=0.0.0.1_006_JavaSE, javax.rmi.CORBA;version=0.0.0.1_006_JavaSE, javax.rmi.ssl;version=0.0.0.1_006_JavaSE, javax.rmi;version=0.0.0.1_006_JavaSE, javax.script;version=0.0.0.1_006_JavaSE, javax.security.auth.callback;version=0.0.0.1_006_JavaSE, javax.security.auth.kerberos;version=0.0.0.1_006_JavaSE, javax.security.auth.login;version=0.0.0.1_006_JavaSE, javax.security.auth.spi;version=0.0.0.1_006_JavaSE, javax.security.auth.x500;version=0.0.0.1_006_JavaSE, javax.security.auth;version=0.0.0.1_006_JavaSE, javax.security.cert;version=0.0.0.1_006_JavaSE, javax.security.sasl;version=0.0.0.1_006_JavaSE, javax.sound.midi.spi;version=0.0.0.1_006_JavaSE, javax.sound.midi;version=0.0.0.1_006_JavaSE, javax.sound.sampled.spi;version=0.0.0.1_006_JavaSE, javax.sound.sampled;version=0.0.0.1_006_JavaSE, javax.sql.rowset.serial;version=0.0.0.1_006_JavaSE, javax.sql.rowset.spi;version=0.0.0.1_006_JavaSE, javax.sql.rowset;version=0.0.0.1_006_JavaSE, javax.sql;version=0.0.0.1_006_JavaSE, javax.swing.border;version=0.0.0.1_006_JavaSE, javax.swing.colorchooser;version=0.0.0.1_006_JavaSE, javax.swing.event;version=0.0.0.1_006_JavaSE, javax.swing.filechooser;version=0.0.0.1_006_JavaSE, javax.swing.plaf.basic;version=0.0.0.1_006_JavaSE, javax.swing.plaf.metal;version=0.0.0.1_006_JavaSE, javax.swing.plaf.multi;version=0.0.0.1_006_JavaSE, javax.swing.plaf.synth;version=0.0.0.1_006_JavaSE, javax.swing.plaf;version=0.0.0.1_006_JavaSE, javax.swing.table;version=0.0.0.1_006_JavaSE, javax.swing.text.html.parser;version=0.0.0.1_006_JavaSE, javax.swing.text.html;version=0.0.0.1_006_JavaSE, javax.swing.text.rtf;version=0.0.0.1_006_JavaSE, javax.swing.text;version=0.0.0.1_006_JavaSE, javax.swing.tree;version=0.0.0.1_006_JavaSE, javax.swing.undo;version=0.0.0.1_006_JavaSE, javax.swing;version=0.0.0.1_006_JavaSE, javax.tools;version=0.0.0.1_006_JavaSE, javax.transaction.xa;version=0.0.0.1_006_JavaSE, javax.transaction;version=0.0.0.1_006_JavaSE, javax.xml.bind.annotation.adapters;version=0.0.0.1_006_JavaSE, javax.xml.bind.annotation;version=0.0.0.1_006_JavaSE, javax.xml.bind.attachment;version=0.0.0.1_006_JavaSE, javax.xml.bind.helpers;version=0.0.0.1_006_JavaSE, javax.xml.bind.util;version=0.0.0.1_006_JavaSE, javax.xml.bind;version=0.0.0.1_006_JavaSE, javax.xml.crypto.dom;version=0.0.0.1_006_JavaSE, javax.xml.crypto.dsig.dom;version=0.0.0.1_006_JavaSE, javax.xml.crypto.dsig.keyinfo;version=0.0.0.1_006_JavaSE, javax.xml.crypto.dsig.spec;version=0.0.0.1_006_JavaSE, javax.xml.crypto.dsig;version=0.0.0.1_006_JavaSE, javax.xml.crypto;version=0.0.0.1_006_JavaSE, javax.xml.datatype;version=0.0.0.1_006_JavaSE, javax.xml.namespace;version=0.0.0.1_006_JavaSE, javax.xml.parsers;version=0.0.0.1_006_JavaSE, javax.xml.soap;version=0.0.0.1_006_JavaSE, javax.xml.stream.events;version=0.0.0.1_006_JavaSE, javax.xml.stream.util;version=0.0.0.1_006_JavaSE, javax.xml.stream;version=0.0.0.1_006_JavaSE, javax.xml.transform.dom;version=0.0.0.1_006_JavaSE, javax.xml.transform.sax;version=0.0.0.1_006_JavaSE, javax.xml.transform.stax;version=0.0.0.1_006_JavaSE, javax.xml.transform.stream;version=0.0.0.1_006_JavaSE, javax.xml.transform;version=0.0.0.1_006_JavaSE, javax.xml.validation;version=0.0.0.1_006_JavaSE, javax.xml.ws.handler.soap;version=0.0.0.1_006_JavaSE, javax.xml.ws.handler;version=0.0.0.1_006_JavaSE, javax.xml.ws.http;version=0.0.0.1_006_JavaSE, javax.xml.ws.soap;version=0.0.0.1_006_JavaSE, javax.xml.ws.spi;version=0.0.0.1_006_JavaSE, javax.xml.ws.wsaddressing;version=0.0.0.1_006_JavaSE, javax.xml.ws;version=0.0.0.1_006_JavaSE, javax.xml.xpath;version=0.0.0.1_006_JavaSE, javax.xml;version=0.0.0.1_006_JavaSE, org.ietf.jgss;version=0.0.0.1_006_JavaSE, org.omg.CORBA.DynAnyPackage;version=0.0.0.1_006_JavaSE, org.omg.CORBA.ORBPackage;version=0.0.0.1_006_JavaSE, org.omg.CORBA.TypeCodePackage;version=0.0.0.1_006_JavaSE, org.omg.CORBA.portable;version=0.0.0.1_006_JavaSE, org.omg.CORBA;version=0.0.0.1_006_JavaSE, org.omg.CORBA_2_3.portable;version=0.0.0.1_006_JavaSE, org.omg.CORBA_2_3;version=0.0.0.1_006_JavaSE, org.omg.CosNaming.NamingContextExtPackage;version=0.0.0.1_006_JavaSE, org.omg.CosNaming.NamingContextPackage;version=0.0.0.1_006_JavaSE, org.omg.CosNaming;version=0.0.0.1_006_JavaSE, org.omg.Dynamic;version=0.0.0.1_006_JavaSE, org.omg.DynamicAny.DynAnyFactoryPackage;version=0.0.0.1_006_JavaSE, org.omg.DynamicAny.DynAnyPackage;version=0.0.0.1_006_JavaSE, org.omg.DynamicAny;version=0.0.0.1_006_JavaSE, org.omg.IOP.CodecFactoryPackage;version=0.0.0.1_006_JavaSE, org.omg.IOP.CodecPackage;version=0.0.0.1_006_JavaSE, org.omg.IOP;version=0.0.0.1_006_JavaSE, org.omg.Messaging;version=0.0.0.1_006_JavaSE, org.omg.PortableInterceptor.ORBInitInfoPackage;version=0.0.0.1_006_JavaSE, org.omg.PortableInterceptor;version=0.0.0.1_006_JavaSE, org.omg.PortableServer.CurrentPackage;version=0.0.0.1_006_JavaSE, org.omg.PortableServer.POAManagerPackage;version=0.0.0.1_006_JavaSE, org.omg.PortableServer.POAPackage;version=0.0.0.1_006_JavaSE, org.omg.PortableServer.ServantLocatorPackage;version=0.0.0.1_006_JavaSE, org.omg.PortableServer.portable;version=0.0.0.1_006_JavaSE, org.omg.PortableServer;version=0.0.0.1_006_JavaSE, org.omg.SendingContext;version=0.0.0.1_006_JavaSE, org.omg.stub.java.rmi;version=0.0.0.1_006_JavaSE, org.w3c.dom.bootstrap;version=0.0.0.1_006_JavaSE, org.w3c.dom.events;version=0.0.0.1_006_JavaSE, org.w3c.dom.ls;version=0.0.0.1_006_JavaSE, org.w3c.dom;version=0.0.0.1_006_JavaSE, org.xml.sax.ext;version=0.0.0.1_006_JavaSE, org.xml.sax.helpers;version=0.0.0.1_006_JavaSE, org.xml.sax;version=0.0.0.1_006_JavaSE
person Hyzual    schedule 14.08.2012

Возможно, вам повезет больше, используя источник данных JNDI, а не прямое соединение jdbc. В примере блога Aries есть пакет blog.datasource, который регистрирует источник данных, используя Чертеж. Список необходимых пакетов длиннее того, что у вас есть сейчас, но вы можете просто скопировать их все из каталога blog-assembly/target или pom.xml.

Кроме того, у Aries есть org.apache.aries.jpa.eclipselink.adapter, который делает то же самое, что и статья, на которую вы ссылаетесь. Aries использует его для тестирования EclipseLink, так что он определенно должен работать. Вы также можете просмотреть тесты Aries, чтобы узнать, как они используются, и посмотреть, есть ли тест EclipseLink, который вы можете скопировать.

person Holly Cummins    schedule 09.08.2012

Все может быть проще при использовании подключаемого модуля dbAccess от Gemini blueprint (http://www.eclipse.org/gemini/dbaccess/) , который, я думаю, подойдет и для Aries. Для MySQL обязательно включите подключаемый модуль коннектора (например, http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.com.mysql.jdbc&version=5.1.6). Этого должно быть достаточно для запуска базы данных при условии, что файл blueprint.xml (используя приведенный выше пример) настроен правильно, как указано выше.

person keesp    schedule 25.03.2013