2012-09-10 5 views
6

私は、ポートレットでいくつかのjarを使用しています(例:c3p0)。今では、すべてのポートレットのlibフォルダにjarファイルを置かないようにしたいと考えています。複数のポートレット内で1つのjarファイルを共有するにはどうすればよいですか?そして、それらをEclipse IDEにどのように統合すればよいですか?外部のjarを追加するか、それらを1つの専用プロジェクトに入れてそこから組み込みますか?複数のポートレット内でJARを共有するにはどうすればよいですか?

+0

こんにちはStrauberry、私はあなたの変化するJARの多くの問題を解決するあなたのための解決策を持っているかもしれません。私はまったく同じ状況に陥った! – Jonny

答えて

6

別の解決策は、あなたがここでそれらを置くあなたは、その後のLiferay Developer Studioのか、LiferayのIDEを使用している場合は、(ポートレットliferay-plugin-package.propertiesであなたのポートレットの依存関係としてJARを追加することができた場合../liferay-portal-<version>/tomcat-<version>/webapps/ROOT/WEB-INF/lib

下に置くことであろうこれには素晴らしいGUIがあります)。

その後の展開にLiferayはROOT/WEB-INF/libからポートレットに必要なjarファイルをコピーしますWEB-INF/lib

これ、私はそれを行うためのLiferay支援機構であり、JARファイルをポートレットにコピーされるので、再起動を必要としないと考えていますデプロイ時のクラスパス。

+0

こんにちはジョニー、それは素晴らしいね!私は1つだけの質問が残っています:開発中にjarファイルをどこに置くのですか?私のjarファイルには(もちろんhahaの)メソッドを使いたいクラスファイルがあります。それらを「外部JAR」としてプロジェクトに追加して、Javaコンパイラがアクセスできないようにしますか? – strauberry

+0

私はLiferay Plugins-SDKのutil/additional-libsフォルダの下に私がいます。また、JARをコンパイルしてJARをROOT/WEB-INF/libにコピーするそれぞれのビルド用のAntビルドファイルもあります。したがって、ポートレットを再デプロイすると、更新されたJARはすでに適切な場所にあり、ポートレットにコピーされます。ただし、Liferay IDEを使用していない場合は、「ビルドパスの設定」セクションでExternal JARとして追加してください.Liferay IDEは自動的にJARを取得するため、IDEをチェックアウトしてください! :) – Jonny

2

私が考えてもいい方法の1つは、すべてをグローバルパスに入れることです。

Tomcatでは../liferay-portal-<version>/tomcat-<version>/lib/extに配置することができます。そして、Eclipseでserver-runtimeライブラリを設定すると、build-pathにこれらのjarファイルがあります。

このlinkも決定するのに役立ちますが、それは*-service.jarを表していますが、いずれかのポートレットで他のjarファイルが動作するかどうかはわかりません。

+0

ありがとうございました!それを展開するためのブラウザインターフェイスを使用する方法はありますか?私はよく使用されるjarファイルをかなり頻繁に変更しています(重い開発)ので、手動コピー&ペーストと再起動は非常に面倒なものになります。 – strauberry

+0

jarはグローバルクラスパスに入るために、サーバーの再起動が必要です。あなたの要件を達成するための他の方法について私は知らない。サーバを再起動しなくてもjarファイルを読み込むのに役立つツールはありますが、これらを探すこともできます。 –

+3

それらをtomcat/lib/extに置くと、すべてのWebアプリケーションが同じクラスローダによってロードされた同じjarファイルを共有するという利点があります。 Webアプリケーション間でクラスのインスタンスを(例えばセッション経由で)渡している場合、各Webアプリケーションに独自のコピーがある場合、ClassCastExceptionsに実行される可能性があります。 lib/extを使用する際の欠点は、新しいバージョンのjarをデプロイするためにサーバーの再起動が必要になることです。 –