होली कमिन्स के लिए धन्यवाद और शोध के घंटों के एक और गुच्छा के बाद, मैं अपनी समस्या का हल ढूंढने में सक्षम हूं। मैं इसे नीचे विस्तार से बताऊंगा, यह बहुत लंबा उत्तर होगा।
आप अपाचे मेष (जो मैं सरल परिमाण OSGi के लिए OpenJPA से स्थापित करने के लिए के आदेश को खोजने क्योंकि यह केवल 5 बंडलों में निहित है) के साथ EclipseLink का उपयोग करना चाहते हैं, तो आप EclipseLink चेकआउट करना होगा - मेष एडाप्टर सीधे अपाचे से क्योंकि यह अभी तक जारी नहीं किया गया है।
एक उचित फ़ोल्डर में जाओ और निम्न आदेश निष्पादित इसे पाने के लिए:
svn checkout https://svn.apache.org/repos/asf/aries/trunk/jpa/jpa-container-eclipselink-adapter/
आप एक फ़ोल्डर जेपीए-कंटेनर-eclipselink-अनुकूलक नामित किया जाना चाहिए। अब, यह सोचते हैं कि आप लिनक्स का उपयोग कर रहे हैं और 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
आपको इस बंडल को दूसरों के साथ तैनात करना होगा (इसे बंडल फ़ेलिक्स के लिए फ़ोल्डर में कॉपी करना होगा)।
तो यह एक्लिप्ससेंक भाग के लिए था, अब आपके दृढ़ता को वास्तव में काम करने के लिए आपको मेष के साथ ब्लूप्रिंट का उपयोग करना होगा। यहाँ सभी बंडलों की सूची आप [http://aries.apache.org/downloads/currentrelease.html](Apache मेष डाउनलोड पृष्ठ से प्राप्त करना होगा)
- org.apache है .aries.blueprint
- org.apache.aries.proxy
- org.apache.aries.jndi.api
- org.apache.aries.jndi
- org.apache.aries.blueprint
- ऑर्ग .apache.aries.jpa.api
- org.apache.aries.jpa.container.context
- org.apache.aries.jpa.container
- org.apache.aries.transaction.blueprint
- org.apache.aries.transaction.manager (यह एक अपनी साइट पर दोहराया गया है या, यह सिर्फ एक डुप्लिकेट)
- org.apache.aries.util
एक बार जब आप मेष डाउनलोड का काम कर रहे हैं, तो आप अभी भी निर्भरता (उनमें SpringSource से मिलता है) की जरूरत है। एसएलएफ 4 जे, लॉग 4 जे, एसएलएफ 4 जे लॉग 4 जे बाइंडिंग और जावैक्स.ट्रांसेक्शन 1.1 एपीआई के लिए ये बंडल हैं।
- http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.slf4j.api&version=1.6.1
- http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.slf4j.log4j&version=1.6.1
- http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.transaction&version=1.1.0
- 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/
ओपन ज़िप और निम्न फ़ाइलों को मिलती है:
- org.eclipse.persistence.antlr
- org.eclipse.persistence।एएसएम
- org.eclipse.persistence.core
- org.eclipse.persistence.jpa
- javax.persistence
अंत में, यह सोचते हैं कि आप एक MySQL डेटाबेस का उपयोग करना चाहते हैं, तो आप की आवश्यकता होगी MySQL JDBC ड्राइवर (Springsource से डाउनलोड)
- http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.com.mysql.jdbc&version=5.1.6
- http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.org.apache.commons.logging&version=1.1.1
के लिए बंडलों
एक बार जब आप उन सभी बंडलों स्थापित है, तो आप एक गैर JTA-डेटा स्रोत कि आप JNDI के माध्यम से मिल जाएगा उपयोग करने के लिए की जरूरत है।
<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>
गैर JTA-डेटा-स्रोत टैग में javax.sql.Datasource देखें: यहाँ एक persistence.xml फ़ाइल है कि आप अपनी आवश्यकताओं के लिए बदल सकते हैं? यही वह है जिसे हम ब्लूप्रिंट एक्सएमएल का उपयोग करके परिभाषित करेंगे। ऐसा करने के लिए, आपको सबसे पहले अपने दृढ़ता बंडल में ओएसजीआई-आईएनएफ/ब्लूप्रिंट/ फ़ोल्डरों को जोड़ने की आवश्यकता होगी (जिसमें आपके डीएओ और संस्थाएं होंगी)। यह डिफ़ॉल्ट फ़ोल्डर है जहां ब्लूप्रिंट xml फ़ाइलें स्थित हैं, यहां स्थित कोई भी 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>
, हम दो बातें कर रहे हैं: एक बार यह हो, blueprint.xml फ़ाइल (नाम बदला जा सकता है) और पेस्ट बनाने (और संशोधित) निम्नलिखित कोड। सबसे पहले, हम मेष को उपयोगकर्ता प्रबंधक डेटासोर्स बनाने और जेडीबीसी चालक, यूआरएल, उपयोगकर्ता और पासवर्ड के साथ कॉन्फ़िगर करने के लिए कहते हैं। यह वही डेटासोर्स है जिसे हमने persistence.xml फ़ाइल में उपयोग किया था।
फिर, हम हमारे डीएओ में EntityManagerFactory इंजेक्ट करते हैं। हमारा डीएओ com.example.dao.beans.UserDAOBean वर्ग है, हमें इसका नाम बीन टैग में जोड़ना होगा। इस कक्षा को एक इंटरफ़ेस लागू करना होगा और हमें इस इंटरफ़ेस को सेवा टैग में जोड़ना होगा। अब अंतिम जेपीए: यूनिट टैग मेष को एंटीटी मैनेजर फैक्ट्री इंजेक्ट करने के लिए बताती है जिसे उपयोगकर्ता प्रबंधक (उसी नाम का उपयोग हम persistence.xml में उपयोग करते हैं) UserDAOBean के पहले कन्स्ट्रक्टर का उपयोग करके। यह इंडेक्स = "0" विशेषता का उपयोग करके किया जाता है। यह भी मतलब है आप अपने डीएओ में निम्नलिखित की तरह कुछ कोड होना चाहिए:
private EntityManager em;
private EntityManagerFactory emf;
public UserDAOBean(EntityManagerFactory emf) {
this.emf = emf;
this.em = emf.createEntityManager();
}
यह भी एक सेटर का उपयोग कर ईएमएफ इंजेक्षन करना संभव है।यहाँ आप खाका का उपयोग करने में मदद करने के लिए आगे संसाधन हैं:
वैकल्पिक: सावधान रहो, अगर आप फेलिक्स उपयोग कर रहे हैं, javax.transaction बंडल जोड़ने "बाधा उल्लंघन का उपयोग" का कारण बनता है क्योंकि सिस्टम बंडल (बंडल 0) भी इस एपीआई को निर्यात करता है। आप यहाँ सभी संकुल है कि पिछले बंडल की सूची में डाल करना होगा
#org.osgi.framework.system.packages=
: आप config.properties में निम्न पंक्ति बदलकर निर्यात से इसे रखने के लिए होगा निर्यात किया। दुर्भाग्यवश, पैकेज को "निकालने" का कोई तरीका नहीं है, आपको निर्यात किए जाने वाले पैकेजों की पूरी सूची को फिर से परिभाषित करना होगा। यहाँ मेरा है, मुझे आशा है कि यह मदद करता है (हाँ यह है बहुत, बहुत लंबे): जब मिथुन खाका dbAccess प्लगइन (http://www.eclipse.org/gemini/dbaccess/) है, जो मुझे लगता है कि रूप में अच्छी तरह मेष के लिए काम करेगा का उपयोग कर
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