2011-11-18 16 views
18

को परिभाषित करने की कोशिश करते समय ईजेबी को प्रोजेक्ट की निर्भरता के रूप में नहीं पहचानता है आज मैंने अपने स्थानीय ग्लासफ़िश सर्वर को 3.1.1 तक अपग्रेड किया है ताकि मेरी कंपनी के सर्वर को उसी संस्करण में अपग्रेड करने की तैयारी हो। मैं अपने वेब सेवा प्रोजेक्ट को नए सर्वर के साथ अच्छा खेलने के लिए परिवर्तित करने का प्रयास कर रहा हूं, और एक रोड ब्लॉक मारा है।मैवेन मॉड्यूल

मेरे कान की पोम फ़ाइल में, मेरे पास पहले वेबपैप और ईजेबी निर्भरता के रूप में सूचीबद्ध था। वेबपैप के पोम में, मैंने ईजेबी को एक निर्भरता के रूप में भी सूचीबद्ध किया था। जब 3.1.1 ग्लासफिश को यह विन्यास तैनात करने के लिए प्रयास कर रहा है, मैं इस त्रुटि प्राप्त:

Error occurred during deployment: Exception while deploying the app [ear] : Cannot resolve reference Local ejb-ref name=name,Local 3.x interface =interface,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface interface. Some of the possible causes: 1. The EJB bean class was packaged in an ear lib library (or through any other library mechanism which makes the library visible to all component modules), this makes all the component modules include this bean class indirectly. 2. The EJB bean class was packaged in a component module which references the EJB, either directly or indirectly through Manifest, WEB-INF/lib. The EJB bean class should only be packaged in the declaring ejb module and not the referencing modules. The referencing modules should only include EJB interfaces.. Please see server.log fo .... msg.seeServerLog

अनिवार्य रूप से मेरा मानना ​​है कि यह कह रही है कि क्योंकि मैं दो अलग-अलग क्षेत्रों में एक निर्भरता, Glassfish 3.1.1 नहीं करता है के रूप में सूचीबद्ध EJB है यह नहीं पता कि किस निर्भरता को देखना है। 2.1.1 में यह कोई मुद्दा नहीं था। इस वजह से, मैंने कान में निर्भरता को हटा दिया, क्योंकि यह अभी भी कान के प्रभावी पोम का हिस्सा होगा।

हालांकि, अब जब कान application.xml फ़ाइल उत्पन्न करता है, तो यह फ़ाइल से सभी ईजेबी जानकारी को छोड़ देता है। मैं अभी एप्लिकेशन को ठीक से तैनात कर सकता हूं, लेकिन जब मैं कुछ भी चलाने की कोशिश करता हूं तो मुझे ejbs के बारे में NameNotFoundExceptions मिलते हैं।

मैं टैग के साथ मैन्युअल रूप से कान पोम के लिए EJB मॉड्यूल जोड़ने का प्रयास किया, लेकिन जब मैं परियोजना बनाने की कोशिश मैं त्रुटि संदेश मिलता है: वास्तव में जब मैं पर देखने के बावजूद

Artifact[ejb] is not a dependency of the project.

यह कान के लिए प्रभावी पोम मैं निर्भरता के रूप में सूचीबद्ध ईजेबी देख सकता हूं।

ग्लासफ़िश 3.1.1 के अधिक कठोर नियमों के अनुरूप होने पर मैं application.xml फ़ाइल को ठीक से कैसे उत्पन्न कर सकता हूं?

मुझे बताएं कि आपको और जानकारी चाहिए, और मदद के लिए धन्यवाद!

+0

मैं वास्तव में इस समस्या में भाग गया हूं, और मैं इसे पोम्स को संशोधित करके ठीक करने में सक्षम था। क्या आप अपना पीओएम पोस्ट कर सकते हैं ताकि मैं एक नज़र डाल सकूं और आपको दिखाऊं कि क्या बदलना है? यदि यह कंपनी संवेदनशील डेटा है तो पैकेज नामों को किसी और चीज़ में बदलें। – EpicOfChaos

उत्तर

24

उत्तर बहुत आसान हो गया, और मैं इसके लिए थोड़ा सा लात मार रहा हूं। मैं कान पोम में EJB निर्भरता रख सकता है, application.xml ठीक से उत्पन्न होते हैं और 3.1.1 ग्लासफिश

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <version>${project.version}</version> 
    <type>ejb</type> 
    <scope>provided</scope> 
</dependency> 
इस के साथ

,: वेब ऐप्लिकेशन की पोम फ़ाइल में, मैं सिर्फ EJB निर्भरता को गुंजाइश पंक्ति जोड़ने के लिए किया था उलझन में नहीं आया कि एक ही नाम के साथ कई ईजीबी कक्षाएं थीं।

संपादित करें: यहाँ EJB निर्भरता कान पोम पर कैसा होता है

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <type>ejb</type> 
</dependency> 

जो मुझे मदद की बाहर के लिए धन्यवाद है।

+2

क्या आप कान पोम कोड में अपनी ईजेबी निर्भरता प्रदान कर सकते हैं। – curious

+1

निश्चित रूप से। देर से प्रतिक्रिया के लिए खेद है, थोड़ी देर में लॉग इन नहीं किया है। – lowell

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