ちょっとDataSourceを使って会員登録をしてたら、エラーが出て先に進めなくなってしまったのでご教授願いたいと思い質問させていただきました。
server.xmlに、
<Resource name="MySQL_JDBC" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="MySQL_JDBC">を書いて、
web.xmlに、
<resource-ref>
<res-ref-name>MySQL_JDBC</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>を書いて、
会員登録をするアクションに、
DataSource dataSource=null;
public void init()throws ServletException{
try{
Context context=new InitialContext();
dataSource=(DataSource)context.lookup("java:comp/env/MySQL_JDBC");
}catch(NamingException e){
throw new ServletException(e);
}
}
Connection conn;
try{
conn=dataSource.getConnection();
Statement stmt = null;
String sql="insert into member(member_id,member_pass,family_name,first_name,birth_year,birth_month,birth_day,address,post_code,mail,"+
"sex,home_tel,job) values('"+ member_id +"',"+ mempasslong +",'"+ family_name +"','"+ first_name +"',"+ birth_year +","+ birth_month +","+ birth_day +",'"+ address +"',"+ post_code +",'"+ mail +"',"+sexint+","+ home_tel +",'"+ job +")";
int result=stmt.executeUpdate(sql);
}catch(SQLException e){
message = "登録失敗しました。";
request.setAttribute("message", message);
return mapping.findForward("registererror");
}
message = "登録完了しました。";
request.setAttribute("message", message);
return mapping.findForward("success");
}
}と書いて会員登録を完了させたいんですけど、会員情報を入力して実行すると、
致命的: サーブレット action のServlet.service()が例外を投げました
java.lang.NullPointerException
at memregister.AddressAction.execute(AddressAction.java:100)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
というエラーがでて先に進めなくなりました。エラーの場所は分かるのですが、どのように訂正すればいいと思いますか?ちなみにエラー1行目のAddressAction.java:100は、conn=dataSource.getConnection();の箇所です。
No.5ベストアンサー
- 回答日時:
もう動いたんかな?もしあれだったらお試しを。
struts (ver1) みたいですね。contextx.xml を/META-INF において、そこにResource タグを書く事もできますよ。
<Context debug="5" reloadable="true" distributable="true">
<Resource name="MySQL_Tools" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="user_tools" password="pass_tools"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://nearest_myserver:3306/tools_db?autoReconnect=true&
useUnicode=true&characterEncoding=utf8" />
</Context>
なにかと問題の多いDataSource、struts2 では非推奨になりました。
No.4
- 回答日時:
ari_dasu_ariの実行環境がこちらには全然わからないので難しいですね・・
<Context>の記述がなくてもアクセスできるものなんですっけ。
うーん・・
では、eclipseのパッケージエクスプローラなどにServersといったものがありませんか?
その中にcontext.xmlがありませんか?
そのファイルの<Context>タグ内に<Resource>を追加してみてください。
先の回答で示したキーワードで検索はしてみましたか?
参考になるページは一切ありませんでしたか?
No.3
- 回答日時:
補足ありがとうございます。
>サーバーはMySQLでパージョンは5.1です。
すみません。サーバーといったのはアプリケーションサーバーの事でした(この表現も正しいか微妙ですが)
参考にしていたページから推測すると、Tomcatでしょうか。
バージョンによって設定ファイルの書き方が違ったりしますので、それが原因かもしれません。
もしTomcat6.*をご使用でしたら、
server.xmlに記述した<ResourceParams>タグの内容を全て<Resource>タグの中に書くようにしてみてください。
具体的に言うと
<Resource name="MySQL_JDBC" auth="Container"
type="javax.sql.DataSource"
username="XXXX"
password="XXXX"
以下必要な分だけ
/>
という感じです。
<ResourceParams>タグは全て消してしまって構いません。
<Resource>タグを<DefaultContext>ではなく、該当webアプリの<Context>タグの中に入れてください。
eclipseを使用しているなら、勝手に<Context>タグが作られているのではないかと思います。
Tomcatの公式リファレンスです。英語ですが、こちらを参考にしてみてください。
http://tomcat.apache.org/tomcat-6.0-doc/jndi-dat …
あとは「tomcat6 データソース 設定」や「tomcat6 jdbc 設定」などで検索してみてると参考になるページがあると思います。
あ・・度々すいません。補足書いたあとに気づいたのですが、<Resource>タグを<DefaultContext>ではなく、該当webアプリの<Context>タグの中に入れてください。
eclipseを使用しているなら、勝手に<Context>タグが作られているのではないかと思います。というのはどういう意味でしょうか?server.xmlにはDefaultContextがあるのは分かるんですが、Contextタグは自作しないといけないのでしょうか?何度も質問してすいません><
No.2
- 回答日時:
単純にdataSourceがnullなのではないでしょうか。
>dataSource=(DataSource)context.lookup("java:comp/env/MySQL_JDBC");
これがうまくいっていないのだと思います。
使用しているサーバーとバージョンはなんでしょうか?
server.xmlとweb.xmlの全てを記載することはできますか?
この回答への補足
回答ありがとうございます。
サーバーはMySQLでパージョンは5.1です。
server.xmlは、
<?xml version="1.0" encoding="UTF-8"?>
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- 1.DefaultContextタグの追加 -->
<DefaultContext>
<Resource name="MySQL_JDBC" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="MySQL_JDBC">
<parameter>
<name>factory</name>
<value>
org.apache.commons.dbcp.BasicDataSourceFactory
</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30000</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>100</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>mysql</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://airticket?useUnicode=true</value>
</parameter>
</ResourceParams>
</DefaultContext>
</Host>
web.xmlは長くて全部は入らなかったので、次に掲載します。すいません
ここに書くべきじゃないけど書いちゃいます。
<web-app>
<context-param>
<param-name>jdbcDriver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUri</param-name>
<param-value>jdbc:mysql://localhost:3306/airticket?useUnicode=true&
characterEncoding=sjis
</param-value>
</context-param>
<context-param>
<param-name>dbUser</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>dbPassword</param-name>
<param-value>mysql</param-value>
</context-param>
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>memregister.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>MySQL_JDBC</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
これです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TomcatでのHTMLの表示
-
org.xml.sax.SAXParseException...
-
contextタグ内のsourceタグにつ...
-
web.xmlのwelcomefileについて
-
hibernate.cfg.xmlの配置場所に...
-
【SQLServer2005を使ったデータ...
-
Tomcatを再起動するとエラーと...
-
【Tomcatが突然動かなく...
-
StrutsのDataSourceの使い方。...
-
Eclipseで、プロジェクト名のと...
-
Eclipseのアンインストールの仕方
-
split関数で区切り文字がない場合
-
html上で、バッチやexeファイル...
-
SVFの設定について:クラスパス...
-
シンボルが見つかりませんとい...
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
Eclipse(JAVA)のデバッグで他...
-
マイクラjavaでForgeを入れたい...
-
コンパイル時にエラーが出てし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
org.xml.sax.SAXParseException...
-
TomcatでのHTMLの表示
-
ibatis初心者 設定エラー
-
【Tomcatが突然動かなく...
-
contextタグ内のsourceタグにつ...
-
struts使用時のソースの位置
-
アップロードした画像の格納先...
-
web.xmlでtaglib-locationを設...
-
Tomcatを再起動するとエラーと...
-
web.xmlでのエラーページ
-
TomcatとEclipseのweb.xml[]に...
-
hibernate.cfg.xmlの配置場所に...
-
Tomcat6のコネクションプーリン...
-
System.exitをwebで使うと良く...
-
Tomcatのエラーページをカスタ...
-
Java -- Ant replaceタスク 予...
-
dockerのdocker-compose.ymlフ...
-
StrutsのDataSourceの使い方。...
-
Tomcatでいうアップロードフォ...
-
Eclipse、Tomcat、Mysql で開...
おすすめ情報