web-dev-qa-db-ja.com

バンドル内の未解決の制約、要件osgi.wiring.packageがありません

OSGi-(felix)、SpringDM、hibernate、mavenを使用したプロジェクトがあります。バンドルをインストールしたときは問題ありません、実行したときの出力 バンドルID は:

LastModified         1384619994484
Headers              [Manifest-Version=1.0, Bundle-Vendor=NguyenVinhLinh, Bnd-LastModified=1384619954778, Tool=Bnd-2.1.0.20130426-122213, Bundle-Name=DrugManager, Built-By=nguyenvinhlinh, Import-Package=org.hibernate,org.hibernate.classic,org.hibernate.criterion,org.springframework.beans.factory;version="[2.5,3)",org.springframework.core.io;version="[2.5,3)",org.springframework.transaction.annotation;version="[2.5,3)", Bundle-SymbolicName=DrugManagerDAO, Export-Package=drug,drugGroup,model;version="1.0.0", Bundle-Version=1.0.0, Build-Jdk=1.7.0_45, Created-By=Apache Maven Bundle Plugin, Bundle-ManifestVersion=2]
BundleContext        null
Revisions            [169.0]
BundleId             169
SymbolicName         DrugManagerDAO
RegisteredServices   null
ServicesInUse        null
Version              1.0.0
Location             file:/home/nguyenvinhlinh/Projects/felix-framework-4.2.1/bundle/DrugManager-1.0.jar
State                2
Bundle                 169|Installed  |    1|DrugManagerDAO (1.0.0)

このバンドルを開始すると、次のように表示されます。

org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [169]: Unable to resolve 169.0: missing requirement [169.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate)

これは私のbeans.xmlです:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
   http://www.springframework.org/schema/osgi
   ">

    <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mappingDirectoryLocations" ref="mappingProvider"/>
        <property name="hibernateProperties" ref="propertiesProvider"/>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/WOLOLO"/>

        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <bean id="mappingProvider" class="hibernate.config.HibernateMappingProvider"/>
    <bean id="propertiesProvider" class="hibernate.config.HibernatePropertiesProvider"/>

    <bean id="drugDao" class="drug.HibernateDrugDao">
        <property name="clazz" value="model.Drug"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
     <bean id="drugGroupDao" class="drugGroup.HibernateDrugGroupDao">
        <property name="clazz" value="model.DrugGroup"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <osgi:service ref="drugDao" interface="drug.DrugDao"/>
    <osgi:service ref="drugGroupDao" interface="drugGroup.DrugGroupDao"/>
</beans>

これは私のpomファイルです:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>DrugManager</groupId>
    <artifactId>DrugManager</artifactId>
    <version>1.0</version>
    <packaging>bundle</packaging>


    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.8.0.10</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>20030825.184428</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>20030825.183949</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.6.ga</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-Java</artifactId>
            <version>5.1.27</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.Apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.4.0</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>DrugManagerDAO</Bundle-SymbolicName>
                        <Bundle-Vendor>NguyenVinhLinh</Bundle-Vendor>
                        <Export-Package>"drug,drugGroup,model"</Export-Package>
                        <Import-Package>org.hibernate</Import-Package> <!-- this line I try to insert into to fix requirement, but it does'nt work-->
                    </instructions>
                </configuration>

            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>Java.net</id>
            <url>http://download.Java.net/maven/2/</url>
        </repository>
    </repositories>


</project>

また、felixのバンドルの完全なエラーがあります。

g! ERROR: Bundle DrugManagerDAO [190] Error starting file:DrugManager-1.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [190]: Unable to resolve 190.0: missing requirement [190.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate))
org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [190]: Unable to resolve 190.0: missing requirement [190.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate)
    at org.Apache.felix.framework.Felix.resolveBundleRevision(Felix.Java:3974)
    at org.Apache.felix.framework.Felix.startBundle(Felix.Java:2037)
    at org.Apache.felix.framework.Felix.setActiveStartLevel(Felix.Java:1291)
    at org.Apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.Java:304)
    at Java.lang.Thread.run(Thread.Java:744)
6

このバンドルはコンテナ(Felix)にもインストールされていますか?

     <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
    </dependency>

そうでない場合は、インストールしてから、バンドルを開始したときに何が起こるかを確認してください。

4
Tony

要件[Bundle-number] osgi.wiring.packageが欠落しているため、以下に説明するように、pom.xmlにexport-packageとして追加しました。

<Export-Package>
package for which error is thrown
</Export-Package>

そしてそれはうまくいった。したがって、依存関係として宣言した後でも上記のエラーがスローされる場合は、export-packageが役立つ可能性があります

4
user3581653