2012-05-03 7 views
9

मैं नेटबीन्स 7.1.1 और ग्लासफ़िश 3.1.2 सर्वर का उपयोग कर रहा हूं। जेपीए प्रदाता के रूप में मैंने ग्रहण-लिंक 2.3.0 का उपयोग करने का निर्णय लिया जिसे नेटबीन्स के साथ भेज दिया गया है। चूंकि मैं आलसी fetching का उपयोग करना चाहता हूं और मेरी परियोजना में लगभग 45 जेपीए इकाई वर्ग शामिल हैं जिनमें उनके बीच बहुत से संबंध हैं, मैंने स्थिर बुनाई का उपयोग करने का निर्णय लिया। इसके अलावा, @ एंटीटी कक्षाएं एक अलग कक्षा लिब परियोजना में हैं, जबकि persistence.xml ईजेबी परियोजना में रहता है।Netbeans में ग्रहण-लिंक जेपीए के साथ स्टेटिक बुनाई चींटी कार्य कैसे लागू करें?

मैं पहले से ही यहाँ निर्देशों का पालन किया: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

मैं निर्माण impl.xml फ़ाइल (नीचे) में चींटी कार्य डाल दिया। Netbeans का उपयोग करते समय यह सही है?

<target name="-post-jar" description="New task definition for EclipseLink static weaving"> 
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/> 
</target> 
<target name="weaving" description="perform weaving" depends="-post-jar"> 
    <weave source="${dist.jar}\MyProject.jar" 
      target="${dist.jar}\MyProject_Weaved.jar" 
      persistenceinfo="${dist.jar}..\..\MyProjectEE\MyProject-ejb\build\classes\META-INF\persistence.xml" 
      loglevel="FINER"> 
     <classpath> 
      <pathelement path="${dist.jar}\lib\eclipselink-2.3.0.jar"/> 
      <pathelement path="${dist.jar}\lib\javaee-api-6.0.jar"/> 
      <pathelement path="${dist.jar}\lib\jasypt-1.9.0.jar"/> 
      <pathelement path="${dist.jar}\lib\javax.persistence-2.0.jar"/> 
      <pathelement path="${dist.jar}\lib\org.eclipse.persistence.jpa.jpql_1.0.0.jar"/> 
      <pathelement path="${dist.jar}\lib\joda-time-2.1.jar"/> 
      <pathelement path="${dist.jar}\lib\jms.jar"/> 
     </classpath> 
    </weave> 
</target> 

pathelement रास्तों के सभी जार-फ़ाइलों को भी NetBeans आईडीई में पुस्तकालयों के रूप में शामिल किए गए हैं: यहाँ निर्माण impl.xml से स्निपेट है।

D:\workspace\MyProject\nbproject\build-impl.xml:703: taskdef class org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask cannot be found 
using the classloader AntClassLoader[] 

मैं गलत यहाँ क्या कर सकता हूँ: जब "स्वच्छ & बिल्ड" मार, अब मैं निम्नलिखित त्रुटि मिलती है?

उत्तर

4

आपको eclipselink.jar और javax.persistence.jar को एंटी क्लासपाथ में जोड़ने की आवश्यकता है।

नेटबीन्स में टूल्स/विकल्प/विविध/चींटियों पर जाएं, और वहां क्लासपाथ संपादित करें।

+1

बहुत धन्यवाद पीटर:

बेशक

मैं इस तरह मेरी persistence.xml में एक बुनाई परिभाषा है! टैग के भीतर क्लासपाथ को सीधे परिभाषित करना भी संभव है। इसके अलावा, build-impl.xml के बजाय build.xml में अतिरिक्त चींटी लक्ष्यों को परिभाषित किया जाना चाहिए। टेक चलाने के लिए, Netbeans IDE के भीतर फ़ाइल दृश्य में परिभाषित कार्य पर राइट-क्लिक करके शॉर्टकट असाइन करें और "शॉर्टकट बनाएं" चुनें। – salocinx

2

मैं भी org.eclipse.persistence.jpa.jpql_1.0.1.jar और org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar क्रम में बुनाई लाने के लिए शामिल करने के लिए किया था जीना। उम्मीद है की यह मदद करेगा।

3

मैं भी Netbeans 8.0.1 का उपयोग कर रहा TomEE 1.7.0 में Eclipselink 2.4.2 के साथ जावा ईई परियोजनाओं के विकास के लिए और मैं सिर्फ अपनी build.xml में निम्नलिखित डाल (मैं संशोधित कभी नहीं निर्माण impl.xml क्योंकि NetBeans यह अधिलेखित कर सकते हैं जब कुछ विन्यास, इमारत में संशोधित किया गया है):

<target name="--weaving-def" description="New task definition for EclipseLink static weaving" depends="dist"> 
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask" 
      classpath="${j2ee.platform.classpath}"> 
    </taskdef> 
</target> 
<target name="weaving" description="perform weaving" depends="--weaving-def"> 
    <weave source="${build.classes.dir}" 
      target="${build.classes.dir}" 
      loglevel="INFO"> 
     <classpath path="${j2ee.platform.classpath}:${javac.classpath}"/> 
    </weave> 
</target> 

आप देख सकते हैं कि मैं सभी NetBeans जावा ईई चींटी परियोजनाओं में केवल आमतौर पर इस्तेमाल किया चर इस्तेमाल किया है। मैंने किसी भी जार को सीधे परिभाषित नहीं किया है जो पहले से ही प्रोजेक्ट में परिभाषित चर है।

मेरी कार्यान्वयन में मैं विस्फोट निर्देशिका संरचना का उपयोग कर रहा है और मेरे persistence.xml है के तहत

${build.classes.dir}/META-INF/persistence.xml 

सबसे महत्वपूर्ण बात सही ढंग से classpath परिभाषित करने के लिए किया गया था।

अब अगर मैं

ant weaving 

स्थिर बुनाई किया जाएगा चलाते हैं। इसे बनाने में लगभग 15 सेकंड लगते हैं इसलिए मैं केवल इस तरह से परीक्षण सर्वर और उत्पादन सर्वर पर निर्माण कर रहा हूं, न कि मेरे विकास पर्यावरण में।

मैं सिर्फ सरल रन (या Netbeans निर्माण मेनू का उपयोग करें)

ant dist 

इमारत बुनाई के बिना सामान्य हुई किया जाएगा।

<persistence-unit name="MY-PU" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>mydata</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/> 
     <property name="eclipselink.logging.level" value="INFO"/> 
     <property name="eclipselink.weaving" value="static"/> 
    </properties> 
</persistence-unit> 
+0

महान टिप्पणी Miklos के लिए धन्यवाद। मैं शायद अपने संकलन समय में सुधार के लिए आपके सेटअप का पालन करूंगा :-) – salocinx

संबंधित मुद्दे