デフォルトでは、パス名に空白が入ります。ほか製品との連携時などに発生するかもしれない問題を未然に防ぐ観点では、スペースを含まないパス名(たとえば、"E:\Apache\Tomcat")にしておくようにお勧めします。どういう問題が発生するのかについては触れていません。一方で、普通に "C:\Program Files\..."へインストールしているサイトもたくさん見られます。本当のところはどうなのでしょう?もう一度Tomcatを "C:\Program Files\..."へ再インストールする勇気があれば解明できるかもしれませんが・・・・。
2016年7月15日金曜日
Tomcatインストール先の謎
今回の一連の不具合の起点は、Tomcatのインストール先を "C:\Program Files\..." にしたために起こった(と考えている。しかし、確証はない)。では、なぜ "C:\Program Files\..."だと不都合なのか?いろいろ調べてみたが明快な回答は見つからなかった。曰く
コンテキストの謎
Sさんからメールが届き、コンテキストの謎が解明されました。それによると、前回の記事で書いた「コンテキスト定義を更新」すると、eclipseで、「ウインドウ」→「設定」→「Tomcat」の中の「コンテキスト宣言モード」 で指定したコンテキスト・ディレクトリに、 コンテキスト定義の出力場所が変わるということです。
ここで、コンテキスト・ディレクトリに「C:\Tomcat 8.0\conf\Catalina\localhost」を設定しておくと、「コンテキスト定義を更新」によって、ここにコンテキスト定義ファイル(emrs.xml)が出力されるということです。
「コンテキスト定義を更新」してしまった今となっては、ここにコンテキスト定義ファイルがあったのかどうかは定かではありませんが、おそらくそういうカラクリなのでしょう(参考:コンテキストの設定)。
![]() |
| コンテキスト・ディレクトリの設定画面 |
ここで、コンテキスト・ディレクトリに「C:\Tomcat 8.0\conf\Catalina\localhost」を設定しておくと、「コンテキスト定義を更新」によって、ここにコンテキスト定義ファイル(emrs.xml)が出力されるということです。
![]() |
| 作成されたコンテキストファイル |
「コンテキスト定義を更新」してしまった今となっては、ここにコンテキスト定義ファイルがあったのかどうかは定かではありませんが、おそらくそういうカラクリなのでしょう(参考:コンテキストの設定)。
2016年7月13日水曜日
動いた!
動いた、動いた!パッケージ・エクスプローラでプロジェクト(この場合はemrs)を右ボタンクリックして[Tomcatプロジェクト]を選択し、[コンテキスト定義を更新]をクリックしてから、再度ブラウザでWEB電子カルテを起動すると動いた!
ところで、この[コンテキスト定義を更新]って何をしているのだろう?このサイトにいろいろ書いてあるが、どうもよくわからない。ただ、この操作を行うことによって「コンテキスト(=Webアプリケーション?)」が追加され、動くようになったものと思われます。でも、追加するって、どこへ?
%TOMCAT_HOME%\webappsを見たけれど、中には相変わらずemrsはない。
では、ログを見てみよう。これは、stderrの中身。
これは、まさにeclipseのworkspace上にあるWEB電子カルテのコンテキストそのものです。つまりこういうことでしょうか。eclipseは、このショートカットのような役目を持ったemrs.xmlをconf\Catalina\localhostの中に書いてやると、Tomcatはそれを配備するという・・・。いずれにせよ、これで問題は解決。このときのTomcat Managerの画面はこうなっていました。
確かに/emrsというパスを持ったアプリケーションが加わっていますね。
![]() |
| Tomcatプロジェクトでコンテキスト定義を更新 |
![]() |
| WEB電子カルテシステムの諸画面 |
ところで、この[コンテキスト定義を更新]って何をしているのだろう?このサイトにいろいろ書いてあるが、どうもよくわからない。ただ、この操作を行うことによって「コンテキスト(=Webアプリケーション?)」が追加され、動くようになったものと思われます。でも、追加するって、どこへ?
%TOMCAT_HOME%\webappsを見たけれど、中には相変わらずemrsはない。
では、ログを見てみよう。これは、stderrの中身。
13-Jul-2016 14:21:17.565 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 410 ms 13-Jul-2016 14:21:17.583 INFO [main] org.apache.catalina.core.StandardService.startInternal サービス Catalina を起動します 13-Jul-2016 14:21:17.583 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.35 13-Jul-2016 14:21:17.591 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor 設定記述子 C:\Tomcat 8.0\conf\Catalina\localhost\emrs.xml を配備します 13-Jul-2016 14:21:18.346 INFO [localhost-startStop-1] org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.getObjectInstance Name = emrsdb Ignoring unknown property: value of "Postgre Datasource" for "description" property 13-Jul-2016 14:21:18.456 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 13-Jul-2016 14:21:19.472 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor C:\Tomcat 8.0\conf\Catalina\localhost\emrs.xml has finished in 1,880 ms 13-Jul-2016 14:21:19.473 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\docs を配備します 13-Jul-2016 14:21:19.489 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\docs has finished in 15 ms 13-Jul-2016 14:21:19.489 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\manager を配備します 13-Jul-2016 14:21:19.514 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\manager has finished in 25 ms 13-Jul-2016 14:21:19.514 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\ROOT を配備します 13-Jul-2016 14:21:19.529 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\ROOT has finished in 15 ms 13-Jul-2016 14:21:19.530 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 13-Jul-2016 14:21:19.535 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 13-Jul-2016 14:21:19.536 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1971 msここで4行目に注目。C:\Tomcat 8.0\conf\Catalina\localhost\emrs.xmlって何でしょう?中身を見るとこのようになっていました。
<Context path="/emrs" reloadable="true" docBase="C:\pleiades\workspace\emrs" workDir="C:\pleiades\workspace\emrs\work" />
これは、まさにeclipseのworkspace上にあるWEB電子カルテのコンテキストそのものです。つまりこういうことでしょうか。eclipseは、このショートカットのような役目を持ったemrs.xmlをconf\Catalina\localhostの中に書いてやると、Tomcatはそれを配備するという・・・。いずれにせよ、これで問題は解決。このときのTomcat Managerの画面はこうなっていました。
確かに/emrsというパスを持ったアプリケーションが加わっていますね。
WEB電子カルテが404 Not Foundで動かない!
eclipseのTomcatプロジェクトで開発したWEB電子カルテが404 Not Foundで動きません!
ログを見るとこんなメッセージが出ていた。
/emrs/jsp/Login.jspがないということだが、確かにC:\Tomcat 8.0\webappsの中にはemrsはない。では、どこにあるのか? それはC:\pleiades\workspaceにあった。つまり、eclipseで開発中のTomcatプロジェクトはC:\Tomcat 8.0\webappsには配備されず、eclipse内のサンドバッグ内に配備されていることになる。これでは404 Not Foundになるのも当たり前だ。
では、一体、どうすればいいのだろうか? これは想像だけれど、eclipseでTomcatプロジェクトを作るとき、本来webappsに置くべきファイル類(アプリケーション一式)をどこへ置くかを指定できるのではないだろうか?eclipseでデバッグしている間はそこにファイル一式を保存し、デバッグし終えたら削除するとか・・・。
![]() |
| WEB電子カルテ 404 Not Found |
ログを見るとこんなメッセージが出ていた。
13-Jul-2016 13:01:15.894 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.35 13-Jul-2016 13:01:15.899 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\docs を配備します 13-Jul-2016 13:01:16.090 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\docs has finished in 190 ms 13-Jul-2016 13:01:16.090 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\manager を配備します 13-Jul-2016 13:01:16.120 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\manager has finished in 29 ms 13-Jul-2016 13:01:16.120 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ C:\Tomcat 8.0\webapps\ROOT を配備します 13-Jul-2016 13:01:16.135 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Tomcat 8.0\webapps\ROOT has finished in 15 ms 13-Jul-2016 13:01:16.136 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 13-Jul-2016 13:01:16.142 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 13-Jul-2016 13:01:16.143 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 266 msまた、アクセスログを見るとこうなっている。
0:0:0:0:0:0:0:1 - - [13/Jul/2016:13:02:31 +0900] "GET /emrs/jsp/Login.jsp HTTP/1.1" 404 1055
/emrs/jsp/Login.jspがないということだが、確かにC:\Tomcat 8.0\webappsの中にはemrsはない。では、どこにあるのか? それはC:\pleiades\workspaceにあった。つまり、eclipseで開発中のTomcatプロジェクトはC:\Tomcat 8.0\webappsには配備されず、eclipse内のサンドバッグ内に配備されていることになる。これでは404 Not Foundになるのも当たり前だ。
では、一体、どうすればいいのだろうか? これは想像だけれど、eclipseでTomcatプロジェクトを作るとき、本来webappsに置くべきファイル類(アプリケーション一式)をどこへ置くかを指定できるのではないだろうか?eclipseでデバッグしている間はそこにファイル一式を保存し、デバッグし終えたら削除するとか・・・。
Apache Tomcat Manager はどうやって起動すればいい?
Tomcat MangerはTomcat上で稼働するアプリケーションの管理(起動、停止、配備、配備解除)やサーバの状態確認を行うためのWebツールです。ブラウザから以下のURLを入力して利用します。
http://127.0.0.1:8080/manager/html
しかし、これを利用するにはユーザとパスワードを登録しなければなりません。登録はTomcatのconf/tomcat-users.xmlに以下のように登録します。
これでTomcat Managerが起動します。
http://127.0.0.1:8080/manager/html
しかし、これを利用するにはユーザとパスワードを登録しなければなりません。登録はTomcatのconf/tomcat-users.xmlに以下のように登録します。
<tomcat-users> <role rolename="manager-gui"/> <user username="ユーザーID" password="パスワード" roles="manager-gui"/> </tomcat-users>
これでTomcat Managerが起動します。
![]() |
| Tomcat Manager |
2016年7月12日火曜日
ハマってしまいました
Tomcatインストールディレクトリを変更したら・・・
eclipseは本当に良くわかりません。加えてTomcatプロジェクトは難儀です。Tomcatプロジェクトで作成したWEB電子カルテを、単品のTomcatを起動してからブラウザにURLを入力して実行したところ、404 Not Foundが出て動きません。単品のTomcatをProgram Filesにインストールしていることに原因がありそうだと踏んで、Cドライブ直下へインストールし直しました。すると、今度は、今まで動いていたプロジェクトが動かなくなったではありませんか。Tomcatディレクトリが変わったことによる不整合です。eclipseの設定をあちこち触り、ほぼ2コマかけて、やっとの思いで不整合部分の設定を変更しました。おかげでこれまで動いていたプロジェクトが動くようになりました。これで、WEB電子カルテも動くだろう・・・とやってみたところやはりダメでした。この2コマはいったい何だったんだろう・・・。eclipseのしくみがわからない・・・
eclipseでWebアプリを開発するとき、動的WebプロジェクトとTomcatプロジェクトがあることは以前にも書きました。加えてTomcatサーバも単品とeclipseに組み込まれたのがあるらしい・・・。動的Wwbプロジェクトはeclipseから起動したTomcatサーバ上で動く(というかデバッグできる)。一方、Tomcatプロジェクトで開発したWebアプリは動かない。単品TomcatをConfigure Tomcatを使って起動しないとダメ。
さらに不思議なことに、eclipseで開発したプログラム群はworkspace上にあるらしい。 Tomcat 8.0\webapps内のプロジェクト名のフォルダじゃなかったの?この辺り、一度きちんとさせた方がいいみたいです。このまま進んで行っても混乱が増すばかりです。時間を取って確認していきたいと思います。
第11,12回 WEB電子カルテのインストール(その3)
前回に引き続いてWEB電子カルテのインストールを行います。前回は、Tomcatプロジェクトで開発したWEB電子カルテが起動しないので苦労しました。原因はeclipseからはTomcatプロジェクトを起動できない(らしい)ことにあったようですが、そのからくりは正直なところよくわかりません。もっと腰を落ち着けて、じっくりと考える必要があるとは思いますが、講義回数もあと5回と残り少なくなってきたので、とりあえず先に進むこととします。
いよいよWEB電子カルテがTomcat上で作動し始めたら、様々なエラーに遭遇します。たとえば次のようなエラーです。
このエラーを解決するためにデバッグ作業を行います。しかし、このエラーメッセージを見てもどこから手を付ければよいのかわかりません。そんなときに役立つのがログです。いえ、ログにしか解決のためのヒントは存在しません。ですから、何はともあれ、まず、ログを見る習慣を身につけましょう。
ログは、Tomcatをインストールしたフォルダ内のlogsというフォルダにあります。たくさんの種類がありますが、エラーはtomcat8-stderr.YYYY-MM-DD.logに吐き出されます。 大量の情報が出力されていますが、その中からこのエラーを直接引き起こした原因を探ります。この場合は
Tomcatにはセキュリティのためのしくみ「セキュリティマネージャ」というのがあるようです。
ところで、このファイル名、どこに設定してあるのでしょうか? ログを辿って調べてみると、web.karte.common.Log.javaに
もっとも大切なこと、それはログファイルを見ること
いよいよWEB電子カルテがTomcat上で作動し始めたら、様々なエラーに遭遇します。たとえば次のようなエラーです。
このエラーを解決するためにデバッグ作業を行います。しかし、このエラーメッセージを見てもどこから手を付ければよいのかわかりません。そんなときに役立つのがログです。いえ、ログにしか解決のためのヒントは存在しません。ですから、何はともあれ、まず、ログを見る習慣を身につけましょう。
ログは、Tomcatをインストールしたフォルダ内のlogsというフォルダにあります。たくさんの種類がありますが、エラーはtomcat8-stderr.YYYY-MM-DD.logに吐き出されます。 大量の情報が出力されていますが、その中からこのエラーを直接引き起こした原因を探ります。この場合は
log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: e:\webkarte_log\webKarte.log (指定されたパスが見つかりません。)というメッセージです。ファイルe:\webkarte_log\webKarte.logがないと言っています。
Tomcatのセキュリティポリシーファイル conf/catalina.policy
Tomcatにはセキュリティのためのしくみ「セキュリティマネージャ」というのがあるようです。
「セキュリティマネージャ」(java.lang.SecurityManagerクラスが使われる)とは、信頼されていないコードを実行することでローカルファイルシステム上にあるファイルへとアクセスしたり、Javaアプレットのダウンロード元のホスト以外と通信して情報を送受信したりといったことができないように、Javaアプレットがサンドボックス内で実行できるようにする機構です。とのことです(参照)。要するに勝手にアプリケーションが通信をしたり、ある特定のファイルにアクセスしたりできないようにする仕組みのようです。WEB電子カルテはORCAサーバやPostgreSQLサーバと通信したり、ログファイル(webKarte_log/webkarte.log)にアクセスしたりするため、これらを利用できるように許可(Permission)を与えなければならないようです。それをしているのがW教授の虎の巻「開発用Window設定」のP10の18)です。これをセキュリティポリシーというそうです。 下記がその設定例です。
grant{
permission java.util.PropertyPermission "org.apache.commons.logging.LogFactory.HashtableImpl", "read";
permission java.util.PropertyPermission "org.seasar.framework.container.factory.config", "read";
permission java.util.PropertyPermission "org.seasar.framework.container.factory.S2ContainerFactory", "read";
permission java.lang.RuntimePermission "setContextClassLoader", "read";
permission java.lang.RuntimePermission "*", "read";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks", "read";
permission java.io.FilePermission "c:/webKarte_log/webkarte.log","read, write";
permission java.net.SocketPermission "struts.apache.org:80","connect, resolve";
permission java.net.SocketPermission "172.16.111.123:8000","connect,resolve";
permission java.net.SocketPermission "172.16.111.123:8001","connect,resolve";
permission java.net.SocketPermission "172.16.111.123:5432","connect,resolve";
permission java.net.SocketPermission "172.16.111.123:5432","connect,resolve";
};
ポリシファイルの書式については、例えばこのサイトを参考にしてください。以下にgrantエントリの書式を示します。そして、このgrantエントリを複数並べてポリシーを校正するそうです。// Example policy file entry grant [signedBysignedByは署名者の情報(誰が署名したクラスに対するパーミッションなのか)、codeBaseはWebアプリケーションのホームディレクトリをURL形式で書きますが、省略するとすべてが対象になるようです。 上の例でいえば、例えば2行目は、"org.apache.commons.logging.LogFactory.HashtableImpl"プロパティに対する読み取り権、5行目は"setContextClassLoader"を使用するための権限を付与し、8行目は、"c:/webKarte_log/webkarte.log"というファイルに読み書きのアクセス権を付与しています。,] [codeBase ] { permission <パーミッションクラスの完全修飾名> <ターゲット>, <アクション>; };
ところで、このファイル名、どこに設定してあるのでしょうか? ログを辿って調べてみると、web.karte.common.Log.javaに
private static final String LOG4J_XML = "log4j.xml";のように定義されていました。つまり、log4j.xmlを見ろと。で、そのlog4j.xmlはどこに? srcディレクトリ内にありました。内容は以下の通りです。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="Appender1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:\\webkarte_log\\webKarte.log" />
<param name="MaxFileSize" value="1MB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %x:%m%n"/>
</layout>
</appender>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d %-5p %x:%m%n"/>
</layout>
</appender>
<!-- level(DEBUG < INFO < WARN < ERROR < FATAL) -->
<root>
<level value="INFO" />
<appender-ref ref="Appender1" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
6行目にちゃんと定義してありますね。
2016年7月7日木曜日
第9,10回 WEB電子カルテのインストール(その2)
前回に引き続き,WEB電子カルテのインストールを行いました。
これについては,この記事が詳しい。 要するに,コンテキストを記述するには5通りの方法があり,そのうち2つ(server.xml, context.xml)はすべてのアプリケーションに適用し,他の3つはアプリケーションごとに適用させる方法とのこと。
ところで,コンテキストというのはTomcatで管理されるひとまとまりのアプリケーションのことを言うそうで,コンテキスト.xmlにはその動作を設定するそうです。
いずれのデータベースもorcaというRole(アカウント)をオーナーとして作成する。orcaロールはデータベース作成権を与える。データベース作成時にオーナーにorcaを設定する。
テーブルやデータはバックアップデータをリストアする。その際、まず、orcaデータベースをリストアし、次いでemrsdbをリストアする。しかも、リストアに使用するアカウントは管理者であるpostgresで行う。その理由は、emrsdbはdblinkでorcaデータベースとリンクしているため管理者アカウントでなければリストアに失敗するため。考えてみれば一般ロールでどんなデータベースとでもdblinkができるのはまずいので、これは当然かも。
そこで、さっそく実行してみた。実行方法として、 [ウィンドウ]→[ビューの表示]→[サーバ]でサーバビューを表示させ、[サーバーを始動]ボタン(緑色のマル内に白い右向きの△があるボタン)をクリック。しかし、ブラウザには「HTTPステータス404」「The requested resource is not available」がでる。いろいろとやってみると、どうやらTomcatプロジェクトはこの方法では起動できないようだ。「この方法」とは、eclipseからTomcatサーバを起動する方法では、という意味。その代り、すべてのアプリからApache TomcatのConfigure Tomcatを起動し、ここからTomcatをスタートさせ、ブラウザからURL(http://localhost:8080/emrs/jsp/Login.jsp)を打ち込むとWEB電子カルテの諸画面が表示された。Tomcatプロジェクトは何かとイレギュラーが多く、使いこなすのは大変そう。動的Webプロジェクトにすべきだった。
設定ファイル
まず、JDBCの設定ファイルであるcontext.xmlの編集作業です。このファイルはServerプロジェクト内にあります。JDBCの設定は、プロジェクトごとにもできるし、Serverプロジェクトで一括してもできるということです。<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--><!-- The contents of this file will be loaded for each web application --><Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource name="jdbc/emrsdb" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://172.16.111.123:5432/emrsdb"
username="orca" password="orca" maxActive="20" maxldle="10"
maxWait="-1"/>
<Resource name="jdbc/orca" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://172.16.111.123:5432/orca"
username="orca" password="orca" maxActive="20" maxldle="10"
maxWait="-1"/>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
ResourceタグでJDBCの設定を行っている。このようにServersプロジェクトにJDBCの定義を集約することによって、プロジェクトごとに分散するのに比べて管理しやすくなる。
コンテキストの設定
コンテキストの設定はメニューの[ウィンドウ]→[設定]→[Tomcat]で行う。コンテキスト宣言モードにServer.xmlがチェックされている。context.xmlへはどうやって辿り着くのだろう?これについては,この記事が詳しい。 要するに,コンテキストを記述するには5通りの方法があり,そのうち2つ(server.xml, context.xml)はすべてのアプリケーションに適用し,他の3つはアプリケーションごとに適用させる方法とのこと。
ところで,コンテキストというのはTomcatで管理されるひとまとまりのアプリケーションのことを言うそうで,コンテキスト.xmlにはその動作を設定するそうです。
emrs.property
このファイルはWEB電子カルテシステムがORCA認証をする際に、認証を受けるORCAサーバのIPアドレスとポート番号を設定するファイル。web.karte.common.OrcaAuth.javaで使用している。データベース
2つのデータベースを作る。一つはWEB電子カルテ用のemrsdbで、もう一つはORCA用のorca。後者はORCAをインストールした際に自動的に作成されるが、今回作成するのは開発環境でテストを行うためのダミーのデータベース。ダミーといっても中身はちゃんとある。ただ、実際にORCAサーバが使っていないというだけ。いずれのデータベースもorcaというRole(アカウント)をオーナーとして作成する。orcaロールはデータベース作成権を与える。データベース作成時にオーナーにorcaを設定する。
テーブルやデータはバックアップデータをリストアする。その際、まず、orcaデータベースをリストアし、次いでemrsdbをリストアする。しかも、リストアに使用するアカウントは管理者であるpostgresで行う。その理由は、emrsdbはdblinkでorcaデータベースとリンクしているため管理者アカウントでなければリストアに失敗するため。考えてみれば一般ロールでどんなデータベースとでもdblinkができるのはまずいので、これは当然かも。
![]() |
| dblink |
ソースプログラム
マニュアルにはCVSによってソースを取得することになっているが、CVSは利用できないので、W先生からいただいたデータからソースをプロジェクトへコピーする。WEB電子カルテシステムの実行
マニュアルを見てもW先生のレポートを見てもソースをビルドする記載がない。何もしなくとも勝手にビルドされるのか?どうもそうらしい。確かにメニューで[プロジェクト]を選択すると[自動的にビルド]が選ばれた状態になっている。ネットによれば、クラスファイルはWEB-INF/classesにできるとある。プロジェクトを選んで[プロパティ]→[Javaのビルドパス]を選ぶと、デフォルト出力フォルダーがemrs/WEB-INF/classesになっている。しかし、パッケージエクスプローラには表示されない。けれどもエクスプローラで確認すると確かにworkspace\emrs\WEB-INF\classesというフォルダがあって、その中にクラスファイルが出来上がっていた。そこで、さっそく実行してみた。実行方法として、 [ウィンドウ]→[ビューの表示]→[サーバ]でサーバビューを表示させ、[サーバーを始動]ボタン(緑色のマル内に白い右向きの△があるボタン)をクリック。しかし、ブラウザには「HTTPステータス404」「The requested resource is not available」がでる。いろいろとやってみると、どうやらTomcatプロジェクトはこの方法では起動できないようだ。「この方法」とは、eclipseからTomcatサーバを起動する方法では、という意味。その代り、すべてのアプリからApache TomcatのConfigure Tomcatを起動し、ここからTomcatをスタートさせ、ブラウザからURL(http://localhost:8080/emrs/jsp/Login.jsp)を打ち込むとWEB電子カルテの諸画面が表示された。Tomcatプロジェクトは何かとイレギュラーが多く、使いこなすのは大変そう。動的Webプロジェクトにすべきだった。
![]() |
| すべてのプログラム |
![]() |
| Configure Tomcat |
![]() |
| WEB電子カルテ諸画面 |
2016年6月28日火曜日
第8回 WEB電子カルテのインストール
ライブラリ
前回でWEB電子カルテ開発環境の構築も完了し、サンプルサーブレットを開発してみました。いよいよ今回からWEB電子カルテシステムをインストールします。これは、「WEB電子カルテシステム開発環境インストールマニュアル」(初版)のP.43「2-7.eclipse開発環境の作成」から記載されている手順に従って行っていきます。作成するのは「emrs」という名のTomcatプロジェクトです。WEB電子カルテではいくつかのライブラリを使います。
2-8. Struts 1.3.10(java Webアプリケーションのフレームワーク)などです。これらの多くはW先生いただいたデータ一式の中の「\構築用ソフトウェア\work\ソフトウェア」(W先生作)あるいは「初版WEB型電子カルテ\開発環境PC」(こっちがオリジナル)というフォルダおよびその中にあるフォルダ内に入っていますが、一部は自分でダウンロードしなければならないものもあります。
2-9. Log4j 1.2.17(javaプログラム用のログAPI)
2-10-1. Seasar2(java言語でソフトウェアを開発するためのフレームワーク)
2-10-2. S2Tiger 2.4.48
2-11. commons-lang 2.6(Javaのjava.langパッケージを拡張するライブラリ)
2-12. JDBC (javaと関係データベースの接続のためのAPI)
次に、これはインストールマニュアルにはないのでよくわからないのですが、W先生のドキュメントによれば、Jfree(グラフ表示に関するライブラリ)やhttpcomponents-client-4.1.3(javaプログラムからHttpでサーバにアクセスして情報取得するライブラリ) をWEB-INF/libにコピーしています。
設定ファイル
struts-config.xmlとweb.xml
次に設定ファイルをコピーします。コピーする設定ファイルは「\構築用ソフトウェア\work\ソフトウェア」(W先生作)あるいは「\初版WEB型電子カルテ\配布データ\開発環境\各設定ファイル\WEB-INF」(こっちがオリジナル)の中にあるstruts-config.xmlとweb.xmlです。content.xml
また、インストールマニュアルには書いてありませんが、W先生のドキュメントにはcontent.xmlが出てきます。編集内容を見るとどうもこれはJDBCの設定のように思えます。編集する際にurlとusername、passwordには注意しましょう。書いてある通りに入力してもデータベースにはつながりません。現在インストールしているマシンの環境に合わせて設定する必要があります。AccessLogService.dicon, emrs.property, log4j.xml
これらはW先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル\src」の中にあるので、マニュアルに従ってコピーします。プログラムソース
WEB電子カルテシステムのjavaプログラムソースは、マニュアルではCVSから取得するようになっている。しかし、これにはパスワード認証が必要で、パスワードを知らないと取得できない。そこで、W先生からいただいたソースプログラムを使う。ソースプログラムは「\構築用ソフトウェア\work\emrsファイル\src」内にあるので、これをプロジェクトへコピーする。JSPファイル
JSPファイルは若宮先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル\jsp」内にあるので、それをプロジェクトにコピーする。emrs.propertyの編集
WEB電子カルテシステムの認証はORCAの認証機能を利用します。 これはそのためのORCA認証のサーバ、ポート番号を設定しているファイルです。次のように記載してください。#====================== ORCA認証 ========================== #サーバ Orca.Auth.Server=172.16.108.250 #ポート番号 Orca.Auth.Port=8000 #====================== 一覧件数 ========================== #病名検索 MaxCount.ByomeiSearch=100このファイルの用途についてはjavaのソースプログラムweb.karte.common/OrcaAuth.javaやweb.karte.common/CommonProperty.javaを見てください。なお、172.16.108.250はorcakumwに立てたORCAサーバのIPアドレスです。
データベースの作成
2つのデータベースemrsdb, orcaを作成してバックアップデータからリカバリをする。データベースのバックアップは、W先生からいただいた電子カルテ一式の「\構築用ソフトウェア\emrs\backup\db」内にある。![]() |
| emrsdb |
![]() |
| orca |
なお、WEB電子カルテシステムからデータベースへのアクセスはJDBCを用いて行うが、その設定をeclipseのServersプロジェクト内にあるcontext.xmlで行う。context.xmlは、Tomcatでデータベースにアクセスするためのデータソースの定義等を行うファイルらしい。このサイトがわかりやすい。
<?xml version="1.0" encoding="UTF-8"?>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource name="jdbc/emrsdb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://172.16.111.12*:5432/emrsdb"
username="postgres"
password="postgres"
maxActive="20"
maxldle="10"
maxWait="-1"/>
<Resource name="jdbc/orca" auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://172.16.111.12*:5432/orca"
username="orca"
password="orca"
maxActive="20"
maxldle="10"
maxWait="-1"/>
</Context>
このリストで、urlには使用しているPCのIPを書く。ただし、本番環境へ移した場合には、それぞれのデータベースが動いているサーバのIPアドレスに変更する。W先生のドキュメントには「Tomcat6のときに配置していたemrs.xmlは使用せず・・・」という記述がある。実際、W先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル」内にはemrs.xmlというファイルがあり、中身はこれと同じJDBCの設定です。以前はここで設定していたのですね。それにしてもTomcatの設定ファイルは複雑怪奇です。index.htmの配置
W先生のドキュメントによるとindex.htm(index.xmlと書いてあるが多分index.htmの間違いだろう)を\WebContentにコピーするようになっている。しかし、オリジナルのマニュアルにはindex.htmについては何も書かれていない。そもそもTomcatプロジェクトには\WebContentはない。これは動的Webプロジェクトで作られるフォルダだ。Tomcatプロジェクトだとindex.htmをどこへ配置すればよいのだろう?2016年6月23日木曜日
第6回,7回 WEB電子カルテ開発環境の構築
今回は、いよいよWEB電子カルテシステム開発環境の構築を行います。まず、この作業の位置づけについて説明します。WEB電子カルテシステムはサーブレットとJSPで作られたWebアプリケーションです。このWebアプリケーションはApache Tomcat上で動きます。最終的にはLinuxのサーバ上で稼働させます。ORCAサーバと同じサーバ上で稼働させることを考えています。しかし、不慣れなLinux上での開発よりもいつも使っているWindows上での開発の方がスムーズに進むだろうということでWindows上に開発環境を構築します。本番環境(Linuxサーバ)への移行は、開発環境で作成したwarファイルと呼ばれるJavaアプリケーション一式を格納したアーカイブをTomcatのwebappsというディレクトリへコピーするだけで簡単にできます。
WEB電子カルテシステム開発環境の構築手順は以下の通りです。
次に開発環境を構築するために必要な資料は
Postgresqlのインストールまで終わったら、構築した開発環境を使って簡単なWebアプリを作ってみます。 この作業は次のサイトを見ながら行います。
より新しい解説サイトとして
ところで,これらのサイトはプロジェクトを作成する際に動的Webプロジェクトを新規作成します。ところが,WEB電子カルテシステムのマニュアルではTomcatプロジェクトを新規作成しています。これらはいったいどこがどう違うのでしょうか?それについて書かれたサイトがありました。
WEB電子カルテシステム開発環境の構築手順は以下の通りです。
- Javaインストール
- eclipseインストール
- Tomcatインストール
- Postgresqlインストール
- サンプルサーブレットの作成
次に開発環境を構築するために必要な資料は
- WEB電子カルテシステム開発環境インストールマニュアル
- 開発環境用Windows設定
Postgresqlのインストールまで終わったら、構築した開発環境を使って簡単なWebアプリを作ってみます。 この作業は次のサイトを見ながら行います。
Eclipseでサーブレット開発環境を作る (Tomcat編) - niftyしかし、 このサイトも少し古い(2014年)ので、ソフトウェアのバージョンが低いため、このとおりに作業を進めることはできません。最新の情報をネットで調べながら作業を進める必要があります。
より新しい解説サイトとして
Webアプリ向け開発手順というのもあります。これはほぼ現在のバージョンに近いのでわかりやすいと思います。
ところで,これらのサイトはプロジェクトを作成する際に動的Webプロジェクトを新規作成します。ところが,WEB電子カルテシステムのマニュアルではTomcatプロジェクトを新規作成しています。これらはいったいどこがどう違うのでしょうか?それについて書かれたサイトがありました。
Tomcatプロジェクトと動的Webプロジェクトの違いどうやら, 両方ともサーブレットを作成するという意味では同じようです。ただし,フォルダ構成などが違うようです。TomcatプロジェクトはeclipseにTomcatプラグインを入れてサーブレットを開発するというスタイルで,以前はこの方法しかなかったようです。しかし,新しいバージョンのeclipseにはWTP(Web Tools Platform)というもの(eclipseアドオンセットというらしい)が入っており,これを使うとTomcatプラグインがなくても動的Webプロジェクトを利用してサーブレットを開発することができるようです。何だかいろいろと複雑ですね。やはりeclipseは歴史があるだけに,初心者にはかなり敷居が高いです。ちなみにこのTomcatプロジェクトですが,作成するにはTomcatの設定が必要です。
- メニューから「ウィンドウ」→「設定」
- 表示されたダイアログの左のメニューから「Tomcat」をクリック
- 右側からTomcatバージョンを選びTomcatホームを設定する
- メニューから「ファイル」→「新規」→「プロジェクト」を選択
- 「Java」→「Tomcatプロジェクト」を選択して「次へ」
2016年6月14日火曜日
第5回目 ORCAクライアント
ORCAクライアントを使って患者登録と病名登録を行ってみた。病名登録では病名検索して病名を入力するが,入力した病名の病名コードが表示されない。これは何故だろう?表示はされないが,データとしてはしっかり入っているらしい。これについては,下記のツールで,患者番号が1の患者の病名情報を見てみるとよい。
ORCA 日医標準レセプトAPI
ORCA 日医標準レセプトAPI
2016年5月17日火曜日
第4回目 ORCAのインストール
しばらく時間が開きました。Ubuntuのインストールや日本語化に手間取りなかなか本題のORCAのインストールに入れません。今日はこれまでやってきたこと、そしてあと何をやらなければならないのかを整理し、いよいよORCAのインストール作業へ入っていきます。
時間があまり残っていなかったので、先へ進まず、ORCAが使っているデータベースを除いて見ることにしました。ORCAはPostgreSQLというDBMSを使っています。MySQL同様にオープンソースソフトウェアのDBMSでよく使われています。まず、PostgreSQLのコマンドであるpsqlを使ってデータベースに接続を試みました。ORCAが使うデータベースはorcaです。したがってコマンドラインから
psql -U orca
と入力すれば接続できるはずです。オプション-Uはユーザ指定です。しかし、つぎのようなエラーが出ます。
psql: FATAL: Peer authentication failed for user "postgres"
検索してみたところ、psqlはデフォルトではpeer認証を行っており、peer認証では、ユーザ名がUnixのユーザ名と一致していないとエラーになるそうです。解決策はpostgresのhba機能でpeer認証をmd5に変えればよいということです。
さて、それはともかく、ORCAをインストール後、ユーザ(PostgreSQLではこれをroleと呼ぶらしい)postgresとorcaのパスワードを「ORCA設定」にしたがって変更した。パスワードを設定してもORCAはちゃんと動くのかな?
授業が終わって
紆余曲折はあったものの、なんとかORCAのインストールが完了しました。インストール後、clientを起動し、メニューをクリックしてちゃんと動いていることを確認できました。時間があまり残っていなかったので、先へ進まず、ORCAが使っているデータベースを除いて見ることにしました。ORCAはPostgreSQLというDBMSを使っています。MySQL同様にオープンソースソフトウェアのDBMSでよく使われています。まず、PostgreSQLのコマンドであるpsqlを使ってデータベースに接続を試みました。ORCAが使うデータベースはorcaです。したがってコマンドラインから
psql -U orca
と入力すれば接続できるはずです。オプション-Uはユーザ指定です。しかし、つぎのようなエラーが出ます。
psql: FATAL: Peer authentication failed for user "postgres"
検索してみたところ、psqlはデフォルトではpeer認証を行っており、peer認証では、ユーザ名がUnixのユーザ名と一致していないとエラーになるそうです。解決策はpostgresのhba機能でpeer認証をmd5に変えればよいということです。
さて、それはともかく、ORCAをインストール後、ユーザ(PostgreSQLではこれをroleと呼ぶらしい)postgresとorcaのパスワードを「ORCA設定」にしたがって変更した。パスワードを設定してもORCAはちゃんと動くのかな?
2016年4月26日火曜日
第3回 Ubuntuの設定(その2)
前回はUbuntuのインストールまでやりました。今回はUbuntuの日本語化などの設定を行います。Ubuntuはインストールしたばかりの状態では日本語に対応していません。キーボードも英語配列です。そのため、viで終了コマンドを入力しようとコロンを入力すると違う文字が入力されます(Shiftを押しながらセミコロンを入力するとコロンが入力できます)。そこで、まずやらなければならないことはキーボードの日本語化です。
それからもう一つ大事なことを忘れていました。Ubuntuのviは矢印キーが正しく動きません(化ける)。というよりも、viとはもともとそういうものらしいです。CentOSなどは矢印キーがちゃんと動いてましたが、あれはvimらしいです。そこで、まず、vimをインストールします。
http://ubuntu.hatenablog.jp/entry/20140403/1396524520に日本語キーボードへの対応方法が書かれています。ただし、私が以前ここに書いてある通りやったときはうまくいきませんでした。再起動するともとの英語配列に戻ってしまいました。このサイトを読む限り、大丈夫のように思えるのですが、まあ、やってみてください。
それからもう一つ大事なことを忘れていました。Ubuntuのviは矢印キーが正しく動きません(化ける)。というよりも、viとはもともとそういうものらしいです。CentOSなどは矢印キーがちゃんと動いてましたが、あれはvimらしいです。そこで、まず、vimをインストールします。
2016年4月19日火曜日
第2回 Ubuntuの設定
第2回目は前回インストールしたUbuntuの設定です。
なお、sshを起動するには
同様にネットワークを再起動するには
なんだか難しい。というか、ネットで検索したのと違うことが多い。
- RAMの割り当て(2GB)
- RemoteDesktopの設定
- ネットワークの設定(VMwareでブリッジ接続)
- sshの設定
- 日本語化
授業終了後
今日はあまり進みませんでした。ネットワークの設定でハマってしまい抜け出すのに時間がかかってしまいました。まず、現象ですが、GUIを使ってネットワークの設定を行ったところ、同一ネットワーク内のホストとはpingが通るのに外部ネットワークのホストとは接続できません。routeコマンドでルーティングテーブルを見るとなんとdefault-gatewayへのルートが設定されていません。そこで、設定ファイル(/etc/NetworkManager/system-connections/以下に接続名として指定したファイル)を調べたところ、奇妙な設定(never-default=true)が見つかりました。それをコメントアウトしてシステムを再起動すると無事、外部ネットワーク上のホストともつながりました。どうもこれを書くとデフォルトゲートウェイが設定されないようです。SSHのインストール
sshはインストールされていなかった。そこで、terminalから次のコマンドを入力してsshをインストールした。$ sudo apt-get install sshなお、パッケージがインストールされているかどうかを見るには
$ dpkg -lとすればインストールされている全パッケージが表示される。sshがインストールされているかどうかを見るには
$ dpkg -l | grep sshとすればよい。
なお、sshを起動するには
$ sudo initctl start sshとする。再起動ならstartをrestartに、停止ならstartをstopにすればよい。
同様にネットワークを再起動するには
$ sudo service network-manager restartとする。
なんだか難しい。というか、ネットで検索したのと違うことが多い。
第1回 Ubuntuのインストール
この講義ではWEB版電子カルテシステムの構築実習を行います。この実習を通して、システム開発及び安全に医療情報システムを運用する方法と技術を学びます。
構築するシステムは以下の通りです。
構築するシステムは以下の通りです。
- ORCA
- WEB版電子カルテシステム
- OpenDolphin
登録:
コメント (Atom)














