質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

4589閲覧

glassfish-resources.xmlが見えていない?

退会済みユーザー

退会済みユーザー

総合スコア0

JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2016/11/04 00:54

編集2016/11/04 01:28

WEB-INF直下にglassfish-resources.xmlを置いて、
MailSessionを@Resourceアノテーションで読み込もうとしているのですが、
うまくいきません。
Beanの生成時?に例外が発生しており、リソースがJNDI名で見つけられていないようです。
やり方に間違いがありましたら、ご教授頂けませんでしょうか?

glassfish-resources.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> <resources> <mail-resource debug="false" enabled="true" from="foo@bar.com" host="localhost" jndi-name="mail/MySession" object-type="user" store-protocol="imap" store-protocol-class="com.sun.mail.imap.IMAPStore" transport-protocol="smtp" transport-protocol-class="com.sun.mail.smtp.SMTPTransport" user="userXXX"> <description>Emailer</description> </mail-resource> </resources>

sampleBean

@Named @SessionScoped public class sampleBean implements Serializable { @Resource(name = "mail/MySession") private Session session; // NameNotFoundException ... public void XXX() { MimeMessage objMsg = new MimeMessage(session); }

エラーログ

javax.naming.NameNotFoundException: mail at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:299) at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:207) ...

ちなみに管理コンソールからMailSessionを設定すると
取得できました。

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

glassfishはこれから使ってみようかなというレベルで詳しくないのですが、ちょっと確認してみました。

  • warファイルのWEB-INFにglassfish-resources.xmlを追加して、glassfishにデプロイ
  • glassfish管理コンソールでApplications>アプリケーション名を開き、Resourcesタブを表示
    ⇒glassfish-resources.xmlの内容が登録されている。

アプリケーションのリソース画面を見ると「JNDI Name」が「java:app/mail/MySession」になっていました。
ソースコード内のnameを「java:app/mail/MySession」に変更して名前がルックアップできれば、glassfish-resources.xmlの設定は問題ないと判断できます。

「java:app/mail/MySession」でうまくいったとして、JNDI名を「mail/MySession」にする方法があるかどうかは別途調べてみないとわかりませんが。

投稿2016/11/04 03:31

tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/04 03:43

おお、、ありがとうございます! nameではなくlookupにして、 @Resource(lookup = "java:app/mail/MySession") とすると取得できました! ネット上だと"java:comp/env/mail/MySession"となっていることが多く、 JNDI名が間違っている想定が出来てませんでした。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問