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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

1回答

2907閲覧

JDBCレルムを設定するとサーバー起動時にエラーが発生する

hottan

総合スコア11

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2017/06/28 13:28

###前提・実現したいこと
Javaのサーブレット、JSPを使用して作成したウェブサイトにBasic認証を設定したいです。
Basic認証ではJDBCレルムを使用してユーザー管理を行いたいです。
開発環境はeclipseとtomcat8、DBはderbyを使用しております。

tomcatのserver.xmlにはJDBCRealm用のものを記載しておりますが、
サーバーを起動する際にエラーが発生しており、
サーバーは起動しますが、認証を行う際に例外が発生しております。

お分かりの方はお助けいただけると幸いです。

###発生している問題・エラーメッセージ

//サーバー起動時 重大: データベース接続オープン中に例外が発生しました //認証入力時 重大: 認証実行中の例外です 重大: 認証実行中の例外です

###server.xml該当箇所ソースコード

<!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <!-- <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> --> <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.apache.derby.jdbc.ClientDriver" connectionURL="jdbc:derby://localhost:/sampleDB" userTable="accounttable" userNameCol="user_name" userCredCol="user_pass" userRoleTable="roletable" roleNameCol="role" /> </Realm>

###web.xml記載内容

<security-constraint> <web-resource-collection> <web-resource-name>User Basic Auth</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>sample</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>User Basic Auth</realm-name> </login-config> <security-role> <role-name>sample</role-name> </security-role> </web-app>

###試したこと
derbyでは使えないのかと思い、MySQLでも試してみましたが、同様のエラーが発生してしまいました。

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

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

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

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

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

guest

回答1

0

わかりにくいところですが、接続URLに誤りがあります。

connectionURL="jdbc:derby://localhost:/sampleDB"

localhostの後ろに不要なコロンがあります。
データベースのデフォルトポートを利用する場合は不要です。
Derbyの接続ポートを変えていないなら、これで接続できるかを試すと良いでしょう。

connectionURL="jdbc:derby://localhost/sampleDB"

他にも失敗する原因があるとすれば、認証に必要なテーブル2つを正しく作成していない場合も起動時に例外は出ますが、Tomcatの起動は完了します。

投稿2017/06/28 14:27

A-pZ

総合スコア12011

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

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

hottan

2017/06/29 02:55

ご回答ありがとうございます。 コロンを抜いて実行してもエラーは変わらずでした。 またテーブルも問題なく作成されていました。 ちなみにテーブルが正しく作成されていないとはどのような形でしょうか。
A-pZ

2017/06/29 11:34

* JDBCレルムで定義しているテーブル定義とカラム名があっていない。(特に roletable のアカウントロールのテーブル定義を誤るケースがある) * データが投入されていない * JDBCレルムからデータベースへ接続するアカウント(ユーザID/パスワード)が正しくない などあります。もう一度JDBCレルムの設定ならびにデータベースの定義があっていることを確認しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問