0

JSF 2.0 Webプロジェクトがあり、Glassfish3.1.2サーバーを使用しています。このプロジェクトでは、私はとりわけ:

  • @javax.servlet.annotation.WebServletでアノテーションが付けられたAjaxServletと呼ばれるクラス
  • @javax.ejb.Statefulで注釈が付けられたSessionというクラス

このプロジェクトをEclipseからGlassfishにデプロイすると、すべてが完全に実行されます。Glassfishの管理コンソールでは、アプリケーションに関連付けられているエンジンは[ejb、jpa、web、weld]です。しかし、最初にプロジェクトを戦争としてエクスポートし、次に管理コンソールから戦争を展開すると、アプリケーションは機能しません。アプリケーションに関連付けられているエンジンは[Web]のみになります。

情報(すべてのエンジン)を失うことなく、アプリケーションを戦争にエクスポートするにはどうすればよいですか?JSF 2.0では、サーブレットを宣言する必要がないため、web.xmlでサーブレットを宣言しませんでした。アノテーションで十分です。ここで何が起こっているのか誰かが知っていますか?上記の2つのシナリオで同じGlassfishサーバーが使用されているため、Glassfishディストリビューション(Webプロファイルとフルプラットフォーム)の問題ではないと確信しています。

私の質問がトピックから外れていると誤って考えている人への注意:JsfはJavaEEWebアプリケーションをプログラミングするためのフレームワークです。warはJsfアプリケーションをパッケージ化する方法であり、jarはjavaクラスをパッケージ化する方法です。だから私の質問は完全にプログラミングのトピックです!ここStackOverflowでそれを持っていることは完全に合法です。JSFアプリケーションをwarにエクスポートすることがプログラミングの問題ではない場合、Javaクラスを.classにコンパイルすることもプログラミングのトピックではありません。したがって、Pleazeはこの理由でダウングレードしないでください!

4

1 に答える 1

1

Eclipse 環境GlassFish 環境の違いを理解する必要があります。Eclipse で使用できるすべてのライブラリーが外部環境に含まれているわけではありません。プログラムがEclipseでコンパイルされる場合がありますが、コンソールから実行された場合はそうではありません。

ヒントは次のとおりです。

プロジェクトを右クリック -> [プロパティ] > [Java ビルド パス] > [注文とエクスポート]に移動し、必要なすべてのライブラリがエクスポートされることを確認します。

于 2013-02-22T11:17:07.853 に答える