ポータルアプリケーションであるアプリケーションがあり、他のユーザーがアプリケーションを追加できるようにしたい。これを行うには、自分のアプリケーションにアクセスできるようにする方法が必要です。これは可能ですか?
4 に答える
WAR を他の WAR 内に配置することはできません。WAR、EJB などを含めるには EAR ファイルが必要です。WAR 間通信を実装する 1 つの方法は、そのロジックを EAR に直接パッケージ化することです。それはすべて、あなたが何をしようとしているのかにかかっています。
.WAR 間通信を行う方法は、 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.String)メソッドによるものです。
ServletContext.getContext(URIOfOtherWAR_resource)
私はあなたが話していることをするためにこれをうまく使いました。
他の人が指摘しているように、WARをWAR内に埋め込むことはオプションではありません。ただし、回避策がある場合があります。
私が精通しているほとんどのWebコンテナには、「テストデプロイメント/自動デプロイ」モード/機能があり、WARが適切なディレクトリにコピーされると、アプリケーションが自動的にデプロイされます。
ポータルアプリケーションは確かにWARのアップロードを許可し、アップロードされたバイトを特定のファイル名で特定のディレクトリに格納できます。あなたのWebコンテナが残りを行うことができます。次に、ポータルなどから新しいアプリケーションにリンクできます。これはすべて比較的簡単です。
ただし、セキュリティ上の懸念がある場合、これは恐ろしい考えであることに注意してください。基本的に、ユーザーがサーバー上で任意のコードを実行できるようにします。すべての潜在的なユーザーが悪意がなく、完全に有能であると完全に信頼しない限り(無限ループを考えてください)、ここで多くの問題を求めています。
プラグイン システムまたはポートレットが必要な場合があるため、ユーザーは war アプリケーションを開発せず、アプリケーション (war) 内にポートレットを含めます。標準があります: JSR 168 といくつかの実装: http://developers.sun.com/portalserver/reference/techart/jsr168/