BlogもどきのWeblog

備忘録と日々の呟きとメモとCGIの実験場とされる何か。
プロフィール

GLANSHE
絵描き担当らしい

Total: 14399
Today: 76
Yesterday: 75
最新の記事

コンテンツ

最新のコメント

最新のトラックバック

カテゴリー

リンク

ニコ動MyListLink

いつもNAVIがどーたら
別の場所に移動しました。


time stamp:2012/06/19 17:40:17
トラックバック(0)|コメント(0)
コメントを書く
この記事のトラックバックURL:

WeakHashMap
WeakHashMapの意味がわかんえ…orz

サーブレットでAPサーバ立ててる時、HttpServletRequestをWeakHashMapのキーにしてやればリクエストごとに値は消えていくはずだよね?
(System.gc()が走れば。)

なら、request.getSession.getId()をキーにしたらどうなるんだろう。
セッションが切れたら値が消えるのかな。

と言うか弱参照の概念がいまいちわからん(・ω・`)
会社で調べられないからどうしようもなくて家でちまちま調べることに。
やっぱりインターネットには接続させるべきだと思う。仕事にならんぞ…

結局実装出来なくて帰りが終電とか…
明日は早出したいけど起きられない気がするし起きたところで仕事にならない気もするしどうしよう。

とりあえず寝るか…


time stamp:2010/05/26 01:28:40
トラックバック(0)|コメント(2)
コメントを書く
この記事のトラックバックURL:

Tomcat5.5でJavaでJDBCでMySQL
Tomcat5.5環境でJavaでJDBCのAPIを使ってMySQL5.0に接続する設定を書いた時のメモ
開発環境はeclipseでJ2SDK1.4.2くらい。
他に何かあった気がしたけど忘れた。

TomcatサーバでJava言語を使ってMySQLのDBを使うには、まずJDBCドライバをインストールする。
jarを置く場所は「%CATALINA_HOME%\common\lib」

eclipseで開発してるので、プロジェクトのWEB-INF/libに入れてビルドパスに追加する。

とりあえずMySQLで適当なテーブルを作成。
作成したのは
Tomcat5 サーブレット/JSP コンテナ
で解説されてたのを参考にして適当に

テスト用ユーザ:javatest
パスワード:javadude
データベース:javatest
テーブル:testdata

を作成した。
次にserver.xmlの設定…はしないで、コンテクスト.xmlを書く。
server.xmlは弄らなくても大丈夫です。

コンテクスト.xmlとは、指定したパスにリクエストを投げるための設定ファイルで、.htaccessに似てる?
%CATALINA_HOME%\conf\[engine name]\[host name]に作成する。
デフォルトではengine nameがCatalina、host nameがlocalhostとなっている
例えば、
http://localhost/test/
とかにリクエストが着たら、ROOTの下にあるtestディレクトリじゃなくて、まったく別のディレクトリに処理を投げるための設定がこれ。
書くのは、主にContextタグとResourceタグで、Contextタグは対象のパスとディレクトリを指定するためのタグで、例えばこんな風に書く。

<Context path="/test" reloadable="true"
  docBase="C:\eqlipse\workspace\test"
  workDir="C:\eqlipse\workspace\test\work" />

これで、http://localhost/test/にリクエストが来た場合、C:\eqlipse\workspace\testにリクエストを投げる。
このときのxmlのファイル名は、パス名と同じ「test.xml」にする。

次にResourceタグはこのように書く。

<Resource
  name="jdbc/test"
  type="javax.sql.DataSource"
  auth="Container"
  username="javauser"
  password="javadude"
  driverClassName="org.gjt.mm.mysql.Driver"
  url="jdbc:mysql://localhost:3306/javatest?characterEncoding=SJIS"
  factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
 />

それぞれのパラメータの簡単な説明と言うかわかった事。

name:リソースの名前。適当でOK。web.xmlにも書くので覚えておくこと。
type:よくわからないけどリソースのタイプ。javax.sql.DataSourceを指定。これはデータソース形式を使う場合のタイプ。
auth:知らない。Containerを指定。
username:MySQLのユーザ名を指定。さっき作成したユーザ名を指定する。
password:さっき作成したユーザのパスワードを指定。
driverClassName:JDBCドライバのクラス名?MySQLを使う場合はorg.gjt.mm.mysql.Driverを指定。
url:MySQLのURLを指定。今回はlocalhostで動いてるMySQLに接続するので、ホスト名はlocalhost。MySQLに接続するポートの初期設定が3306なので、ポート番号を指定。これはしなくてもいいかも(未確認)。それから/で区切って、さっき作ったDB名を指定する。
?以降は文字コードの設定。これがないとUTF-8でデータのやり取りされるっぽい?(未確認)
factory:よくわからないけどfactoryに該当するクラス名を指定。注意しなきゃいけないのが、context.xmlでJDBCでMySQLみたいな単語で検索すると、
org.apache.tomcat.dbcp.BasicDataSourceFactory
って書いてある事が多い。
Tomcat5.5を使っている場合、これが
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory
となるのでここでハマりまくる人が多いらしい。

ここまでReSourceタグの説明
ちなみに、Tomcat5.5ではReSourceParamsタグが使えないらしいので(未確認)全部ReSourceに書くこと。

次にweb.xmlを書く。
置く場所はC:\eqlipse\workspace\test\WEB-INF
こんな風に書く。
<web-app>
 <description>MySQL Test App</description>
 <resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/test</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
</web-app>

キーポイントはres-ref-nameタグにさっきReSourceで指定した名前を書くこと。
typeもauthも同じ?なのかな(未確認)

設定するファイルは以上。

サンプルプログラムはこんな感じ。ちなみにJSP。

01 <%@page contentType="text/html; charset=shift_jis" %>
02 <%@page import="java.util.*"%>
03 <%@page import="java.io.*"%>
04
05 <%@page import="java.sql.*, java.sql.Date"%>
06 <%@page import="javax.sql.*"%>
07 <%@page import="javax.naming.*"%>
08
09 <html>
10 <head><title>db_tesst.jsp</title></head>
11 <body>
12 <ul>
13 <%
14 Context context=new InitialContext();
15
16 DataSource dataSource = null;
17
18 dataSource=(DataSource)context.lookup("java:comp/env/jdbc/test");
19
20 Connection conn=null;
21 conn=dataSource.getConnection();
22 PreparedStatement statement=conn.prepareStatement("select foo from testdata");
23 ResultSet result=statement.executeQuery();
24
25 while(result.next()){
26   out.println("<li>"+result.getString(1)+"</li>");
27 }
28
29 if(conn!=null) conn.close();
30
31 out.println("</ul>\nend db session");
32
33 %>
34
35 </body>
36 </html>

ここまで。
例外処理とかまったく投げてないので実行時は注意すること。

05行目でわざわざjava.sql.Dateをインポートしてるのは、java.io.Dateとクラスがかぶってしまうための処理。
18行目の引数は、java:comp:env/までが固定。それ以降はReSourceで指定したリソースの名前。
23行目でsql文をデータベースに投げている。

と言う話でした。
きっとどっか抜けてるけどまぁいいや。

後は言わなくてもわかって下さい。
某氏が言ってたようにホントに自鯖に立てるWebサーバソフトがTomcatになりそうな予感。
と言うかubuntu server入れたらTomcat勝手に入ったし\(^o^)/

参考URL
オブジェクト指向とデザインパターンブログ
tomcat - pukiwiki(「ネイティブなコネクションを取得」の節)


time stamp:2009/04/10 15:06:23
トラックバック(0)|コメント(0)
コメントを書く
この記事のトラックバックURL:
何かしら