TomcatのJava WebアプリケーションからのOSGiバンドルの使用

ニコラ:

Java WebアプリケーションからOSGiバンドルのメソッドを呼び出そうとしています。どちらもTomcat 7で実行することになっています。

このサイト(http://drupal.osgibook.org/node/37)で説明されているように、OSGiバンドルからメソッドを呼び出す通常のJavaアプリケーションをすでに作成しました

Equinox環境のコンテキストを取得するために、アプリケーションから起動し、バンドルを内部からインストールしました。さらに、コンテキストは、実行中のバンドルのサービス参照を取得し、そのサービスを取得するために使用されました。

EquinoxRunnerクラスのrunEquinoxメソッド:

import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;

public BundleContext runEquinox([...]) throws Exception {
    [...]

    BundleContext bundleContext = EclipseStarter.startup(new String[]{"-console"}, null);
    bundleContext.installBundle("file:C:/.../plugins/myosgiclass.interface_1.0.0.201108301327.jar");
    Bundle bundleTranslationImpl =  bundleContext.installBundle("file:C:/.../plugins/myosgiclass.impl_1.0.0.201108301327.jar");
    bundleTranslationImpl.start();

    [...]
    return bundleContext;
}

ServiceRunnerクラスのinvokeMethod:

import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;

[...]

public Object invokeMethod(BundleContext bundleContext, Object value, [...]){
    ServiceReference serviceReference = bundleContext.getServiceReference(MyOSGiClass.class.getName());
    Object result = null;
    if (serviceReference != null) {
        MyOSGiClass myOSGiClass = (MyOSGiClass) bundleContext.getService(serviceReference);
        if (myOSGiClass != null) result = myOSGiClass.method(value);
        bundleContext.ungetService(serviceReference);
    }
    return result;
}

今、Eclipseブリッジを使用するTomcatでは、Equinox環境の正しいコンテキストを取得する方法がわかりません。Equinoxを使用してTomcatで実行しようとすると、NoClassDefFound例外が発生します。この問題を解決する方法についてのアドバイスをいただければ幸いです。

よろしくお願いします。乾杯、ニック

クレメント:

このようなOSGiフレームワークを組み込み、外部環境からOSGiサービスにアクセスする場合、サービスインターフェースがOSGiの内部と外部で同じであることを確認する必要があります

そのため、サービスインターフェースのパッケージをTomcatからOSGiにエクスポートするようにOSGiコンテナーを構成します。これを実現するには、 'FRAMEWORK_SYSTEMPACKAGES_EXTRA'プロパティを使用してOSGiフレームワークを構成します。

http://felix.apache.org/site/apache-felix-framework-launching-and-embedding.html#ApacheFelixFrameworkLaunchingandEmbedding-hostservicesの詳細(Apache Felixの場合でも、埋め込みAPIは標準化されています)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jspのweb.xmlからのJava Webアプリケーショングローバルパラメータ

分類Dev

Tomcat Java Webアプリケーションの2要素認証

分類Dev

Webアプリケーションからのバックグラウンドでのジョブ処理

分類Dev

EclipseからのOSGIアプリケーションのエクスポート

分類Dev

アプリケーションのバージョン番号をpom.xmlからアプリケーションバンドルに含める

分類Dev

TomcatのWebアプリケーションから外部アプリケーションへのSSL(双方向ハンドシェイク)を有効にする

分類Dev

C#:MSIXバンドルからの参照コンソールアプリケーションの開始

分類Dev

OSGIアプリケーションでの非OSGIライブラリの使用

分類Dev

WebアプリケーションからのUSBデバイスの制御

分類Dev

組み込みOSGiアプリケーションのバンドル/依存関係を管理する方法は?

分類Dev

NetbeansRCPアプリケーションのOSGiバンドルを構築できません

分類Dev

デスクトップのスタンドアロンアプリケーションでのOSGiの使用

分類Dev

Webアプリケーションからモバイルアプリケーションに特定のユーザーに通知を送信する方法

分類Dev

私のhtml5モバイルWebアプリケーションからAndroidアプリケーションを起動する方法

分類Dev

Webサイトからモバイルアプリケーションをダウンロードするためのリンクを生成します

分類Dev

Androidアプリケーションの「バンドル」とは何ですか

分類Dev

別のWebアプリケーションからWebアプリケーションを呼び出す

分類Dev

Webクライアント方式を使用してOOBアプリケーションのサーバーからxmlファイルを取得する方法

分類Dev

モバイルアプリケーションからのトークンを使用したRESTAPI認証

分類Dev

pomからのアプリケーションバージョンの取得

分類Dev

EclipseからのTomcat Webアプリケーションのリモートデプロイ

分類Dev

JavaWebアプリケーションからのリソースファイルのバージョン管理

分類Dev

コルドバアプリケーションの保護

分類Dev

手動実行のためのEclipseからApache-Tomcatへの動的Webアプリケーションの移植

分類Dev

OSGIによるモジュラーWebアプリケーションの作成

分類Dev

Webアプリケーションのスレッドから制御ラベルを更新します

分類Dev

LocalStorageからWebアプリケーションへのデータのアップロード

分類Dev

タスクバー/ドックからのJavaアプリケーションの削除/非表示

分類Dev

Tomcat WebアプリケーションでのJavaScriptファイルの編集

Related 関連記事

  1. 1

    jspのweb.xmlからのJava Webアプリケーショングローバルパラメータ

  2. 2

    Tomcat Java Webアプリケーションの2要素認証

  3. 3

    Webアプリケーションからのバックグラウンドでのジョブ処理

  4. 4

    EclipseからのOSGIアプリケーションのエクスポート

  5. 5

    アプリケーションのバージョン番号をpom.xmlからアプリケーションバンドルに含める

  6. 6

    TomcatのWebアプリケーションから外部アプリケーションへのSSL(双方向ハンドシェイク)を有効にする

  7. 7

    C#:MSIXバンドルからの参照コンソールアプリケーションの開始

  8. 8

    OSGIアプリケーションでの非OSGIライブラリの使用

  9. 9

    WebアプリケーションからのUSBデバイスの制御

  10. 10

    組み込みOSGiアプリケーションのバンドル/依存関係を管理する方法は?

  11. 11

    NetbeansRCPアプリケーションのOSGiバンドルを構築できません

  12. 12

    デスクトップのスタンドアロンアプリケーションでのOSGiの使用

  13. 13

    Webアプリケーションからモバイルアプリケーションに特定のユーザーに通知を送信する方法

  14. 14

    私のhtml5モバイルWebアプリケーションからAndroidアプリケーションを起動する方法

  15. 15

    Webサイトからモバイルアプリケーションをダウンロードするためのリンクを生成します

  16. 16

    Androidアプリケーションの「バンドル」とは何ですか

  17. 17

    別のWebアプリケーションからWebアプリケーションを呼び出す

  18. 18

    Webクライアント方式を使用してOOBアプリケーションのサーバーからxmlファイルを取得する方法

  19. 19

    モバイルアプリケーションからのトークンを使用したRESTAPI認証

  20. 20

    pomからのアプリケーションバージョンの取得

  21. 21

    EclipseからのTomcat Webアプリケーションのリモートデプロイ

  22. 22

    JavaWebアプリケーションからのリソースファイルのバージョン管理

  23. 23

    コルドバアプリケーションの保護

  24. 24

    手動実行のためのEclipseからApache-Tomcatへの動的Webアプリケーションの移植

  25. 25

    OSGIによるモジュラーWebアプリケーションの作成

  26. 26

    Webアプリケーションのスレッドから制御ラベルを更新します

  27. 27

    LocalStorageからWebアプリケーションへのデータのアップロード

  28. 28

    タスクバー/ドックからのJavaアプリケーションの削除/非表示

  29. 29

    Tomcat WebアプリケーションでのJavaScriptファイルの編集

ホットタグ

アーカイブ