問題タブ [glassfish-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jakarta-ee - EE 6 (GlassFish): コンテナはいくつ? シングルトンはいくつ?
わかりました、ここで基本的な EE 6 の概念を理解しようとしています。ここの誰かが私を助けてくれることを願っています。
単一のドメインで GlassFish v3 サーバー Kukla を実行しています。MyEEWebApp.war、MyEJBs.jar、および MyUtilityLibrary.jar を含む MyEEApp.ear をデプロイします。私の EJB jar には、MySingleton という @Singleton Bean が含まれています。
次に、Fran という別のサーバーをセットアップし、同じ EAR をデプロイします。Ollie という 3 番目のサーバーについても同じことを行います。
3 つのまったく同じ (名前と IP アドレスを除いて) サーバーにデプロイされた 3 つの同じ EAR ファイル。
だからここに私の質問があります:
- 特定のサーバー、たとえば Kukla には、いくつの「コンテナー」がありますか? EAR のコンテナーは 1 つだけですか? それとも、WAR と EJB jar にも独自のコンテナーがありますか?
- 最初の答えの実際的な影響は何ですか?
- さらに言えば、コンテナとは正確には何ですか?
- WAR 内のクラスは @EJB インジェクションを使用して EJB jar 内の Bean にアクセスできますか? これらは両方とも同じ EAR の一部であるためです。
- さらに言えば、単純な古い Java クラスで @EJB インジェクションを使用できますか? それとも、他の EJB でしか機能しませんか?
- シングルトン Bean のインスタンスはいくつ作成されますか? サーバーごとに1つ?それとも全部で1枚?サーバーごとに1つの場合、クラスター全体で「真の」シングルトンを保証する方法はありますか?
- GlassFish で、リソースを検索するように JNDI を構成する場所と方法は? たとえば、EJB jar をあるマシンから別のマシンに移動して、Web アプリケーションがそれを自動的に見つけられるようにすることは可能ですか?
- EJB Bean の負荷分散を構成することは可能ですか? もしそうなら、どのように?
- WAR の 3 つのインスタンスについてはどうでしょうか。たとえば、最も使用率の低いマシンのインスタンスにリクエストが送信されるように、負荷分散を構成する方法はありますか?
たくさんの質問があります。ごめんなさい!
あなたの助けは大歓迎です!ジェフ
java - Glassfish JavaEE クライアント アプリケーションの依存関係を管理する方法は?
JBoss には、jbossall-client.jar
クライアント アプリケーションで JNDI ルックアップなどに使用できる があります。JBoss Maven リポジトリで利用できます。
依存関係が管理された環境で Glassfish 3 を使用する場合、どのようにすればよいですか?
FAQのステップ 3 にgf-client.jar
は、glassfish のインストール ディレクトリを直接参照する必要があると記載されています。にはgf-client.jar
、glassfish インストール ディレクトリ内の他の JAR への相対参照のみがあります。したがって、gf-client.jar
参照されているすべての JARS もリポジトリに配置する場合を除き、プライベート リポジトリに配置することはできません。しかし、それは良いことではありません。手動で正しい相対位置に配置する必要があるからです。
を生成するpackage-appclient
スクリプトがありますがappclient.jar
、これは主にクライアントに必要なすべての JAR を含む ZIP ファイルであるため、クラスパスで直接使用することはできません。もちろんappclient.jar
、リポジトリに配置してから、すべての抽出とクラスパスの構築をビルド スクリプトで行うこともできますが、本当にこの方法で行う必要があるのでしょうか?
それを行う他の方法はありますか、またはこれをどのように使用することを意図していますappclient.jar
か?
私は「glassfishall-client.jar
」を監視しましたか?
java - フォームベースのコンテナマネージドセキュリティでログインを再試行します
コンテナマネージドセキュリティを使用しているGlassFish3.0.1にデプロイされたWebアプリケーションがあります。これは、JDBCRealmに対してj_security_checkを使用する単純な標準形式ベースの実装です。アプリケーションのセキュリティ保護に関係することはすべて問題ありません(そして、過去に自分のセキュリティシステムを導入したことがあるとは信じられません)。
しかし、私が理解できないのは、ユーザーが間違ったパスワードを入力した場合の対処方法です。「loginFailed.xhtml」ページは正しく表示されますが、ユーザーをログインページに(リンク経由または自動的に)戻して再試行したいと思います。
これを試したところ、login.xhtmlページに戻るリンクは正常に機能しますが、セキュリティシステムは、ユーザーが認証された後、ユーザーを送信しようとしている場所を忘れているようです。ユーザーが正しく認証すると、システムが存在しないページ(ログインページのURLの一部のマングルバージョン)を読み込もうとするため、例外が発生します。
ユーザーをホームページに戻して、そこから再試行させることはできると思いますが、それほど多くの問題を抱えたアプリケーションは長い間見たことがありません。すべてのアイデアと助けを感謝して受け取った...
java - Glassfish 3: ライブラリを機能させるために、すべてのライブラリを domain/lib/ にデプロイする必要があるのはなぜですか?
別のグループからプロジェクトを引き継ぎました。EJB セッション Bean / Web サービス。JavaCAPS 6 に問題なくデプロイされました。
ただし、Oralce Glassfish V3 (3.0.1 ビルド 22) で、jar ファイル (アプリケーション/EJB モジュール) をデプロイすると、特定の外部ライブラリ (jar に含まれる) が見つからないと不平を言い続けました。
注釈処理のエラー: java.lang.NoClassDefFoundError: org/apache/commons/vfs/FileSystemException|#]
Apache VFS jar は jar 内にありますが、見つかりません。
ただし、jar とその依存関係を $Glassfish home/domains/domain1/lib に移動すると、
すべて順調。
ここで何が間違っていますか?
ありがとう
java - RESTFul Web サービスからローカル ファイルにアクセスするにはどうすればよいですか
RESTFul サービスからローカル ファイルにアクセスしようとしています。実行中のサービスの実際のパスを取得する方法はありますか? (サーブレットでできるように)
サーバー: グラスフィッシュ 3.0.1 IDE: Eclipse Helios
どうも
java - Resin から Glassfish v3.0.1 に移行した後、アプリケーションが定期的にハングし、ブラウザーに空のページが表示される
Resin から GlassFish v3.0.1 への Web アプリケーションの移行中に問題に直面しました。すでに回帰テスト中 (Selenium を使用) にハングし始めます。ブラウザには、ソースのない空のページが表示されます - メタもヘッドもボディもありません (Firefox および IE)。
Seleniumの問題だと思いました。しかし、問題は手動で再現され、IE8、FireFox 4、Chrome 6 でも再現されました。Windows と UBuntu 10.01 を含むさまざまなクライアント マシンが使用されました (したがって、ウイルス対策の影響は除外されます)。
事故の際、JMX 経由で jvisualvm を使用していくつかのスナップショット (THREAD および HEAP) を作成しました。スレッドを分析すると、サーバー ブラウザーが要求し、状態が "WAIT" になっているスレッドがサーバー上にあることがわかります。HEAP ダンプ (NetBeans で OQL を使用したクエリ) に存在しないオブジェクト インスタンス #123456 を待機しているモニター。
DBプールも調査しました(ファインロギングを有効にしてから、JMXモニターJDBC-POOL-MONを介して)。Oracle 11g エンタープライズは、DB のように使用されます。ドライバーは11.2.0.1gaを使用。JDK 1.6.0_21 x64 サーバー モード。JDBC プールの最大許容サイズ: 50 接続。JDBC の最大監視サイズは 10 (起動接続数) で、使用される接続のピークはわずか 7 でした。接続リークもアクティブ化されています。2 時間以上のリグレッション テストでは何も検出されませんでした。
HTTP スレッド プールでは 200 のスレッドが許可されますが、ピーク時には 181 のアクティブ スレッド、通常は 114 のデーモン スレッドでした。
Grizly は、静的テキスト キャッシングと gzip 圧縮を備えた WEB サービスのように使用されます。NIO がアクティブで、tcp 用に Java とネイティブ バッファの両方を試しました。
一部の友人は、Grizly を直接使用するのではなく、Apache Web サーバーを前に置いて mod_proxy を使用すると言いました。まだ試していませんが、Apache Web サーバーを使用せずに GlassFish v3 のみを使用したいと考えています。私はそれがより良いスロープットを示すことができることを願っています.
とにかく、この奇妙な動作の理由が何であるかはわかりません。どんなアイデアでも大いに役立ちます!
ps: 下の Resin アプリケーションは、同じ JDK と同じ DB で正常に動作し、ドライバーと同じリグレッション テストが使用されます。そして、生産においても、この種の問題はありません。
ありがとう、マックス。
java - Glassfish 3.0.1 にデプロイされた Web アプリで slf4j のログを処理する良い方法は何ですか?
私は slf4j でログを記録する非常に普通の Web アプリケーションを持っていますが、これは問題なく、いくつかの slf4j バックエンドを問題なく使用しました。
Tomcat では、logback にファイルシステム内の場所を指定してそこにログを記録するように指示しましたが、このアプリケーションのいくつかの独立したインスタンスを、それぞれが単一の Glassfish 3.0.1 インスタンス内の独自のドメインにデプロイしたいと考えています。私の slf4j ロギングが Glassfish でうまく動作することを望みます。
私のロギングをGlassfishで処理するのに良い方法(あえて「最善」と言います)は何でしょうか。logback を使用してログを System.out にフラット化し、Glassfish にコンソール出力を処理させるべきですか、それとも Glassfish 内のロガーに到達するためのより良い標準的な方法はありますか?
編集: 調査によると、GlassFish 3.0.1 は SLF4J API も、デフォルト構成の JSP ページに表示されるクラスのバインディングも提供していません。
slf4j-api-X.jar および slf4j-jdk14-X.jar を提供することにより、slf4j-logging イベントが java.util.logging に転送され、Glassfish によって適切にキャプチャされます ( http://docs.sun.com/app/を参照)。詳しくはdocs/doc/820-7692/abluj?l=en&a=viewをご覧ください)。
ssl - LDAP と Glassfish および FTP の統合
私は現在、グラスフィッシュ環境と FTP サーバーを LDAP と統合する作業に直面しています。これは大学の仕事です。多くの学生 (アクセスは SSL 経由でのみ許可されていますが、LDAP 経由でログインデータを持っています) が Glassfish サーバーで独自のアプリケーションを実行し、それらをアップロードしてから制限できるようにする必要があります。特定の日付でのアクセス。
Suse Enterprise 10 SP3 サーバーをセットアップして構成し、Java6 リポジトリーと Glassfish 3.0.1 をインストールしました。Glassfish を LDAP に接続し、指定したユーザーが特定のプログラムをアップロードできるようにする方法があるかどうかを知っている人はいますか? アップロードができない場合は、単純に FTP サーバーをセットアップして LDAP 経由で接続することを考えました。その方法に関するリンクを教えてもらえますか?
私は明らかにグーグルで検索しましたが、Suse Enterprise 10 の情報を取得するのは実際には非常に難しく、ソース経由でコンパイルする代わりに Java 6 リポジトリが必要だったため、約 1 時間無駄にしました。
事前に助けてくれてありがとう
jakarta-ee - デプロイメント記述子を使用せずに Java EE セキュリティ ロールを動的に追加する
Glassfish 3.1、B06 を使用して Java EE 6 アプリケーションを開発しています。アプリを保護するために、JDBCRealm とプログラムによるセキュリティを使用しています。これは、ユーザー名とパスワードをチェックするのにうまく機能します。しかし、セキュリティ ロールの宣言に関しては、次のような問題があります。
Java EE 6 でセキュリティ ロールを使用するには、EJB デプロイメント記述子と Glassfish 固有のデプロイメント記述子の両方でこれらのロールを宣言して、それらのロールをリンクする必要があります ( Java EE 6 チュートリアルで説明されているように) EJB 内のメソッドisCallerInRole(String roleRef)を使用して権限を確認します。
これは私のアプリケーションには望ましくありません。XML ファイルを作成せずに (たとえば、データベースでロール名を定義できるようにするなど)、セキュリティ ロールを動的かつプログラム的に追加できるようにしたいからです。
GF3 ソース コードをデバッグしたところ、 com.sun.ejb.containers.EjbContextImplに isCallerInRole が実装されていることがわかりました。そこで、コンテナーは EJB 記述子からロールを取得します。
周りを見回したところ、アプリケーション内でどうにかして EJB 記述子を取得できれば、次のようなロールを追加できることがわかりました。
誰かがこのようなことをしたり、それについて考えたりしましたか? アプリケーション内で EJB デプロイメント記述子を使用することはできますか? または、より良いアプローチがありますか?
PSまたはMBeanを使用してロールを追加する必要がありますか? ここでかなり関連する投稿を見つけました。
maven-2 - GlassFishv3カーゴ-maven2-プラグイン
GlassFish v3をサポートしているようですが、オンラインの例はまばらです。貨物から同じエラーが引き続き発生します:GlassFish管理CLI JARが見つかりません:admin-cli.jar
これが私のpomです
修正されたPom: