解決策
はじめの一歩
Liferay Homeは、デフォルトではJBoss EAP 5.2のインストール先から1つ上のフォルダにあります。
- JBoss EAP 5.2をダウンロードし、お好きなディレクトリにインストールしてください。 本節では、このディレクトリを
$JBOSS_HOME
と表記します。 - 最新版の Liferay Portal .war ファイルをダウンロードします。
- Liferay's Portal Dependenciesをダウンロードする。
依存関係の構成
- Liferay の依存関係を
$JBOSS_HOME/jboss-as/server/default/lib に解凍します
.hsql.jar
portal-service.jar
portlet.jar
- さらに、以下のjarを同じフォルダーにコピーしてください:
activation.jar
jta.jar
mail.jar
mysql.jar
persistence.jar
postgresql.jar
script-10.jar
servlet-api.jar
- 次に、LiferayのJARと競合しないようにJBossのHibernate ValidatorとHSQLのJARを削除します。
$JBOSS_HOME/jboss-as/common/lib
から以下のファイルを削除します:hibernate-validator.jar
hsqldb.jar
hsqldb-plugin.jar
-
$JBOSS_HOME/jboss-as/server/default/conf/login-config.xml
をテキストエディターで開きます。 - 41~64行目あたりのHsqlDBRealmとJmsXARealmという名前のブロックをコメントアウトしてください。
-
$JBOSS_HOME/../server/default/deploy
にある Liferay と競合する可能性がある以下のファイルを削除してください:/messaging
ejb2-container-jboss-beans.xml
ejb2-timer-service.xml
ejb3-connections-jboss-beans.xml
ejb3-container-jboss-beans.xml
ejb3-interceptors-aop.xml
ejb3-timerservice-jboss-beans.xml
hsqldb-ds.xml
jms-ra.rar
mail-ra.rar
mail-service.xml
profile-service-secured.jar
uuid-key-generator.sar
-
$JBOSS_HOME/jboss-as/server/default/deployers
で以下を削除する:jboss-ejb3-endpoint-deployer.jar
messaging-definitions-jboss-beans.xml
Liferayのデプロイメント
-
$JBOSS_HOME/jboss-as/server/default/deploy/ROOT.war
に移動し、フォルダの内容をすべて削除します。 - Liferay WARファイルの中身をこのフォルダに展開します。
-
$JBOSS_HOME/../server/default/ROOT.war/WEB-INF
ディレクトリにjboss-classloading.xml
というファイルを作成し、以下の内容を追加します:<classloading xmlns="urn:jboss:classloading:1.0" parent-first="false" domain="LiferayDomain" export-all="NON_EMPTY" import-all="true"> </classloading>
この設定ファイルは、親クラスが最初にロードされることを許さないドメインを定義します。 その代わり、Liferay Portalのクラスはエクスポートされます。 JBossには独自のHibernate JARが付属しているので、LiferayにこれらのJARを無視し、代わりに独自のJARを使用するように指示するためには、上記の設定が必要です。 設定時に省略した場合、Hibernateの例外が発生することがあります。 また、各LiferayプラグインのWEB-INFフォルダにjboss-classloading.xmlファイルを追加する必要があります; 以下のプラグインのデプロイセクションをご覧ください。 -
portal-ext.properties
ファイルを$LIFERAY_HOME
( $JBOSS_HOMEの一つ上の階層)に作成し、以下のプロパティを追加します:hibernate.validator.apply_to_ddl=false hibernate.validator.autoregister_listeners=false auto.deploy.jboss.dest.dir=${jboss.home.dir}/server/default/deploy auto.deploy.deploy.dir=C:/JBoss-/deploy
-
$JBOSS_HOME/ROOT.war/WEB-INF/lib
から以下のファイルを削除してください:jaxrpc.jar
stax.jar
xercesImpl.jar
xml-apis.jar
jboss-classloading.xml
を各プラグインの WEB-INF フォルダーに追加し、次の内容を記述します:
<classloading xmlns="urn:jboss:classloading:1.0" domain="PLUGINNAME-portlet" parent-domain="LiferayDomain" parent-first="false" top-level-classloader="false" export-all="NON_EMPTY" import-all="false"> </classloading>
上記構成で参照するLiferayDomainは、上記「Liferayの導入」のステップ3で定義したドメインです。 Liferayドメインを使用するようにプラグインを設定すると、JBossとLiferayでJARファイルのバージョンが異なる場合、プラグインはLiferayのバージョンを使用することになります。 この設定をしないと、Liferayプラグインは間違ったバージョンのJARファイルを使用してしまうかもしれません。 この設定は、JBossが起動していない限り、プラグインWARのデプロイ前またはデプロイ後のいずれかに行ってください。 もちろん、この設定はデプロイ前にしておくのがベストです。 それ以外の場合、JARの競合がある場合は、サーバーをシャットダウンし、Liferayドメインを使用するようにプラグインを設定し、サーバーを再起動します。
JBoss EAP 5.2.を起動するために。 ユーザーは、以下の設定をrun.conf.batに入れなければなりません:
set "JAVA_OPTS=-Dorg.jboss.net.protocol.file.useURI=false -Dfile.encoding=UTF8 -Duser.timezone=GMT"
このプロパティは、Javaのメモリを処理します。設定されていない場合、PermGen Errorsが発生します。