4

この質問で説明されているように、Webリソースも含む少数のEJBjarモジュールがあります。

これをEARの一部としてデプロイしたいと思います。

今、私はこれを問題なく戦争として行うことができました、そしてそれは私のバックアップ計画です。ただし、複数の「Webフラグメント」jarを耳にデプロイして、warファイルを含めずに完全なWebアプリケーションを形成して、すべてを組み合わせることができるかどうかを理解したいと思います。

さらに、これらのjarの1つ以上に依存する複数のwarファイルがある場合、それらのjarがwarファイルのWEB-INF / lib内で複製されるようにビルドする必要がありますか?同じ耳?

この場合、jarファイルにエンティティが含まれている場合、グローバル永続性ユニットを定義できるように、それらは耳のルートにも必要ですか?

私はJBoss7を使用していますが、可能であれば標準のコンテナーに依存しないソリューションを希望します。

4

1 に答える 1

3

これは、JEE5 準拠のサーバーで機能します。

あなたが持っているとしましょう

  • 2 myejb1.jar および myejb2.jar という名前の EJB
  • mywebapp1.war および mywebapp2.war という 2 つの WAR Web アプリケーション
  • log4j.jar および mycommon.jar と呼ばれる 2 つの一般的な JAR

すべてを myapp.ear という EAR ファイルにパッケージ化します。

myapp.ear ディレクトリ構造は次のようになります。

myapp.ear:
   META-INF/application.xml
   myejb1.jar
   myejb2.jar
   mywebapp1.war
   mywebapp2.war
   lib/log4j.jar
   lib/mycommon.jar

META-INF/application.xml のコンテンツには次が含まれます

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/application_5.xsd">

    <module>
        <ejb>myejb1.jar</ejb>
    </module>
    <module>
        <ejb>myejb2.jar</ejb>
    </module>

    <module>
        <web>
            <web-uri>mywebapp1.war</web-uri>
            <context-root>webapp1</context-root>
        </web>
    </module>
    <module>
        <web>
            <web-uri>mywebapp2.war</web-uri>
            <context-root>webapp2</context-root>
        </web>
    </module>

    <library-directory>lib</library-directory>
</application>


URL http://myJBossServer.url/webapp1/ http://myJBossServer.url/webapp2/から Web アプリにアクセスできるようになります。

CSS、画像、JavaScript などの静的リソースを複数の Web アプリケーション間で共有することもできます。たとえば、次のディレクトリ レイアウトの static-content.jar ファイルがあります。

static-content.jar:
   META-INF/resources/css/my.css
   META-INF/resources/img/my.jpg
   META-INF/resources/js/jQuery.js
   META-INF/resources/js/node.js

ビルド時に両方の Web アプリケーションの WEB-INF/lib ディレクトリに static-content.jar を配置しました。今

http://myJBossServer.url/webapp1/css/my.css
http://myJBossServer.url/webapp2/css/my.css

static-content.jar から同じソースを持っています。

デフォルトの my.css を webapp2 のみでオーバーライドしたい場合は、変更した my.css を mywebapp2.war に直接配置できます。

mywebapp2.war
   css/my.css
   WEB-INF/lib/static- content.jar

WAR の css/my.css は、static-content.jar の my.css をオーバーライドします。

于 2013-03-03T05:08:52.793 に答える