Im JFUSE परियोजना में डेटाबेस को जोड़ने की कोशिश कर रहा। मैंने pom फ़ाइल में com.mysql.jdbc निर्भरता शामिल की है और प्रोजेक्ट ठीक चलता है। लेकिन फिर मैं इस कष्टप्रद समस्या का सामना करता हूं। जब मैं बंडल को OSGi में स्थापित करने का प्रयास करता हूं, तो स्थापना निम्न त्रुटि के साथ विफल हुई:

बंडल mvan शुरू करने में असमर्थ: com.info.demo / Demo-rest / 1.0: Unresolved const बंडल में बारिश com.info.demo.rest [363]: 363.0 को हल करने में असमर्थ: लापता आवश्यकता [363.0] osgi.wiring.package; ( Osgi.wiring.package = com.mysql.jdbc )

मैं एसओ से सभी उपलब्ध समाधान की कोशिश की, लेकिन वे इस मुद्दे को हल नहीं किया। जब मैं त्रुटि का कारण खोजने की कोशिश कर रहा था, मैंने आईडीई में mysql की निर्भरता घोषणा में चेतावनी देखी जो कहती है:

मावेन निर्भरता OSGi तैयार नहीं है

तो, मुझे लगता है कि मुख्य कारण यह है कि मेरी निर्भरता OSGi कंटेनर के लिए तैयार नहीं है। क्या कोई मेरी मदद कर सकता है मावेन निर्भरता ओएसजी को कैसे तैयार किया जा सकता है?

नीचे मेरा pom.xml कोड है:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

***Project specific declarations here***

<build>    
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.1.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Fragment-Host>org.springframework.jdbc</Fragment-Host>
                    <Import-Package>com.mysql.jdbc</Import-Package>
                </instructions>
            </configuration>                
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>com.mysql.jdbc</groupId>
        <artifactId>com.springsource.com.mysql.jdbc</artifactId>
        <version>5.1.6</version>
    </dependency>
   ***Other Dependencies***
</dependencies>

संपादित करें: मैंने क्रिस्टन के सुझाव का पालन किया और यह बहुत अच्छा है। लेकिन मुझे अन्य निर्भरताएं जोड़ने की आवश्यकता है जो ओएसजीआई तैयार नहीं हैं।

मैं FUSE सर्वर पर गैर OSGi निर्भरता स्थापित करने के माध्यम से चला गया। और निर्भरता को भी लपेटते हुए लेकिन समस्या हल नहीं हुई।

कृपया मुझे विवरण समाधान के साथ मदद करें, Im वास्तव में यहां अटक गया है।

4
Crawler 4 पद 2015, 15:00

4 जवाब

सबसे बढ़िया उत्तर

खोज के कुछ दिनों के बाद मुझे आखिरकार सबसे सरल उपाय मिल गए। गैर OSGi बंडल को केवल इस सरल ओस्गी रैप कमांड का उपयोग करके Karaf या ServiceMix टर्मिनल में तैयार किया जा सकता है:

ऑसगी: रैप को स्थापित करें: mvan: org.jdbi / jdbi / 2.70

निर्भरता फ़्यूज़ सर्वर में स्थापित की जाएगी जिसे कमांड का उपयोग करके सत्यापित किया जा सकता है।

OSGi : सूची

अब बस पोम में निर्भरता जोड़ें।

<dependency>
    <groupId>org.jdbi</groupId>
    <artifactId>jdbi</artifactId>
    <version>2.70</version>
</dependency>

आइडिया अभी भी आपको चेतावनी देगा कि निर्भरता ओएसजीआई तैयार नहीं है, बस इसे अनदेखा करें।

अंत में मावेन बंडल प्लगइन में आवश्यक पैकेज आयात करें और आप कर रहे हैं।

<plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>${version.maven-bundle-plugin}</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Import-Package>
                        org.skife.jdbi.v2,
                        org.skife.jdbi.v2.util,
                        org.skife.jdbi.cglib.proxy,
                        org.skife.jdbi.v2.sqlobject.stringtemplate,
                        org.skife.jdbi.v2.sqlobject,
                        org.skife.jdbi.cglib.core
                    </Import-Package>
                </instructions>
            </configuration>
        </plugin>

आशा है कि यह भविष्य में किसी की मदद करेगा।

3
Crawler 16 पद 2015, 07:42

Mysql ड्राइवर के मामले में आपको खुद को लपेटने की ज़रूरत नहीं है। Mysql कनेक्टर j जो मावेन सेंट्रल से उपलब्ध है, पहले से ही OSGi तैयार है। मावेन निर्देशांक mvan हैं: mysql / mysql-कनेक्टर-जावा / 5.1.34।

चूंकि OSGi में एक सादे jdbc ड्राइवर का उपयोग करना आसान नहीं है। मेरा सुझाव है कि आप pax-jdbc का भी उपयोग करें। यह सिर्फ कुछ कॉन्फिगर की आपूर्ति करके OSGi सेवा के रूप में एक डेटा स्रोत बनाने की अनुमति देता है।

आप इसे इस तरह से स्थापित कर सकते हैं (Karaf> 3 में): फ़ीचर: रेपो-ऐड pax-jdbc 0.7.0 फ़ीचर: ट्रांजैक्शन pax-jdbc-mysql pax-jdbc-config pax-jdbc-pool-dbcp2

यह MySQL के लिए पहले से ही DataSourceFactory प्रदान करता है और कॉन्फ़िगर और पूलिंग समर्थन को सक्षम करता है।

फिर आपको बस pax jdbc डॉक्स

2
Christian Schneider 4 पद 2015, 12:34

उस त्रुटि का मतलब है कि फ्यूज़ को mysql ड्राइवर के लिए बंडल के बारे में नहीं पता है। आपको इसे मैन्युअल रूप से इंस्टॉल करने की आवश्यकता है। चूंकि mysql कनेक्टर बंडल रूप में है इसलिए इसे OSGI वातावरण में स्थापित करना अधिक आसान है। बस ओस्गी का उपयोग करें: स्थापित करें और फिर बंडल का नाम।

इससे बचने के लिए आप Kar आर्काइव भी बना सकते हैं।

वैकल्पिक रूप से ईसाई द्वारा उल्लिखित करफ / फ्यूज के अपने स्वयं के एसक्यूएल चालक का उपयोग करें।

0
Souciance Eqdam Rashti 4 पद 2015, 13:19

मावेन निर्भरता के लिए, जो ओएसजीआई तैयार नहीं हैं, उन्हें ताना देने के लिए एक मावेन प्लगइन है - https: // github। com / Reficio / P2-maven-plugin, एक ट्यूटोरियल - http: // //www.vogella.com/tutorials/EclipseTycho/article.html#d314078e1011। यह दृष्टिकोण सरल घटकों के लिए अच्छी तरह से काम करता है, लेकिन बहुत सारी निर्भरता वाले या बहुत सारे निर्यात पैकेज वाले घटकों के लिए आपको मैन्युअल रूप से एक रैपर बंडल बनाने की आवश्यकता हो सकती है, उदा। मुझे पेगडाउन, सेलेनियम और सेलेन्ड्रोइड के लिए रैपर बंडलों को मैन्युअल रूप से बनाना था।

0
Pavel Vlasov 6 पद 2015, 04:43