2

私は OSGI、Felix、Maven を始めたばかりで、かなり新しいものです。jenkins を介して Java ビルドをデプロイしていますが、以下の依存関係の問題が発生します。

以下は、依存関係を含む pom ファイルの内容です。正しいかどうかはわかりませんが、それでも問題が発生します。

「javax.jws」を探しており、バージョンは 2.0 から 3.0 の間です

javax.jws;version>="2.0.0",!javax.jws;version>="3.0.0"

以下、ポムの中身です。

                            <Import-Package>!sun.misc,!org.apache.avalon.framework.logger,
    !org.ietf.jgss,!org.apache.log,!org.apache.log.format,!org.apache.log.output.io,!com.werken.xpath,!org.apache.tools.ant,!org.apache.tools.ant.taskdefs,
    !org.jdom,!org.jdom.input,!org.jdom.output,com.mblox.ngp.sal*;
    version="${sal-utils-version}",org.apache.commons.logging;version="1.1",
    javax.jws;version>="2.0.0",!javax.jws;version>="3.0.0",
    com.sun.xml.ws.api.message,*
</Import-Package>

以下は私が得る例外です:

[#|2013-01-29 11:07:44,109|ERROR|NGP-SAL-SALBootstrap-SAL-0|com.mblox.ngp.sal.platform.impl.Sal|172.18.36.38|slodev-rhatf4.mblox.com|sal-1|Unresolved constraint in bundle sap-ws-netcom [24]: Un
able to resolve 24.0: missing requirement [24.0] package; (&(package=javax.jws)(version>=2.0.0)(version>=2.0.0)(!(version>=3.0.0))) - [24.0] package; (&(package=javax.jws)(version>=2.0.0)(versi
on>=2.0.0)(!(version>=3.0.0)))|#]
org.osgi.framework.BundleException: Unresolved constraint in bundle sap-ws-netcom [24]: Unable to resolve 24.0: missing requirement [24.0] package; (&(package=javax.jws)(version>=2.0.0)(version
>=2.0.0)(!(version>=3.0.0))) - [24.0] package; (&(package=javax.jws)(version>=2.0.0)(version>=2.0.0)(!(version>=3.0.0)))
        at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3421)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1754)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:905)
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:892)
        at com.mblox.ngp.sal.platform.impl.Sal.installBundle(Sal.java:608)
        at com.mblox.ngp.sal.platform.impl.Sal.getBundle(Sal.java:481)
        at com.mblox.ngp.sal.platform.impl.Sal.installSap(Sal.java:630)
        at com.mblox.ngp.sal.platform.impl.Sal.initSapBundles(Sal.java:545)
        at com.mblox.ngp.sal.platform.impl.Sal.start(Sal.java:290)
        at com.mblox.ngp.sal.platform.impl.SALBootstrap.call(SALBootstrap.java:64)
        at com.mblox.ngp.sal.platform.impl.SALBootstrap.call(SALBootstrap.java:24)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

この問題を解決するための提案や指針。

4

4 に答える 4

1

また、CQ5 内で Felix を使用して javax.jws の依存関係に問題がありました。解決策は (奇妙なことに)、バンドル マニフェストの Import-Package 部分に javax.jws と javax.jws.soap を明示的に含めないことです。(私のように) maven-bundle-plugin を使用している場合は、手順で次を使用できます。

<plugin>
<groupid>org.apache.felix</groupid>
<artifactid>maven-bundle-plugin</artifactid>
<version>2.1.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<import-package>!javax.jws,!javax.jws.soap,*</import-package> 
</instructions>
</configuration>
</plugin>

また、javax.jws と javax.jws.soap をエクスポートする別個のバンドルを用意する必要もありませんでした。Web サービス クライアント コード (wsimport で生成) を含むバンドルに対して上記を実行するだけで、機能させることができました。

もう1つ、私がしなければならなかったことは、追加することでした

sling.bootdelegation.com.sun=com.sun.*

sling.properties ファイルに。

Web サービスの作成に関する CQ5 チュートリアルでは、次のページで言及されています

"ノート:

このワークフローは Adob​​e CQ で機能します。ただし、次の例外が発生する場合があります。

原因: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl at org.apache.sling.commons.classloader.impl.ClassLoaderFacade.loadClass(ClassLoaderFacade.java:127) at java.lang. ClassLoader.loadClass(Unknown Source) at javax.xml.ws.spi.FactoryFinder.safeLoadClass(Unknown Source) ... 107 詳細記事で、crx-quickstart\conf フォルダーにある sling.properties ファイルを変更します。このファイルに次のコード行を追加します: sling.bootdelegation.com.sun=com.sun.*。次に、サーバーを再起動します。このタスクを実行したら、この記事に従って進めることができます。」

于 2013-05-10T22:35:04.263 に答える
1

javax.jwsパッケージをエクスポートするバンドルはありますか? そうでない場合は、この Maven 依存関係をビルドに追加し、それが Felix にデプロイされていることを確認してください。

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
    <version>1.1.2</version>
</dependency>
于 2013-01-29T11:39:49.707 に答える
0

すべてが期待どおりのようです。sap-ws-netcomjavax.jwsパッケージの必要性を宣言するようにバンドル pom を構成しました。そして、コンテナは依存関係を解決しようとしている間にそれを見つけようとしています。

org.osgi.framework.BundleException: Unresolved constraint in bundle sap-ws-netcom [24]: Unable to resolve 24.0: missing requirement [24.0] package; (&(package=javax.jws)(version>=2.0.0)(version
>=2.0.0)(!(version>=3.0.0))) - [24.0] package; (&(package=javax.jws)(version>=2.0.0)(version>=2.0.0)(!(version>=3.0.0)))
        at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3421)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1754)

問題は単純です。OSGi コンテナーはjavax.jws、少なくとも要求しているバージョンでは利用できません。あなたはそれを利用可能にしたと思いましたか?

利用可能にする方法は、そのパッケージをエクスポートするバンドルをインストールすることです。これは自分で行う必要があります。これは一般に OSGi の場合です。Java パッケージを明示的に使用可能にしないと、そこにはありません。

于 2013-01-29T16:16:33.293 に答える
0

Windows を実行している場合は、C:\G\ または短いパス名に入れてみてください。それは私のために問題を解決しました!

于 2013-07-11T14:25:33.033 に答える