約 4,140,276 件
https://w.atwiki.jp/pontack/pages/21.html
Tomcatのこと 基本的に備忘録として使います。 ほとんど更新はありませんのでご了承ください。 Tomcatのこと [#d03e25ba] 最新のjavaを使ってみる [#b5a9ff4b] 展開します(のメモ) [#k721d1c6] log4jの設定 [#c6169fe4] 通常ログ出力 [#h2212497] 日次/毎時/月次などのサイクルでログローテイト [#l62f87fe] ファイルサイズ容量でログローテイト [#r91f7c7b] 最新のjavaを使ってみる インストーラを取得します。今回は、jdk-1_5_0_15-linux-i586.bin です。 # chmod 777 jdk-1_5_0_15-linux-i586.bin # ./jdk-1_5_0_15-linux-i586.bin # mv jdk1.5.0_15/ /usr/local/. 展開します(のメモ) Tomcatのサイトからソースを頂きます。 今回頂いたのは、apache-tomcat-5.5.26.tar.gz です。 インストール先を/opt/tomcatとします。 展開して配置 # tar zxvf apache-tomcat-5.5.26.tar.gz # mv apache-tomcat-5.5.26 /opt/. # mv /opt/apache-tomcat-5.5.26 /opt/tomcat log4jの設定 http //jakarta.apache.org/ から最新のlog4jを取得する。 今回取得したのはついでのものもあわせて、 ・apache-log4j-1.2.15.tar.gz ・apache-log4j-extras-1.0.tar.gz ・commons-logging-1.1.1-bin.tar.gz 展開する。 [#qd457fb4] # tar zxvf apache-log4j-1.2.15.tar.gz # find /opt/tomcat/ -type d -name "*lib" \ | awk {print "cp -p apache-log4j-1.2.15/log4j-1.2.15.jar",$1"/."} | sh # tar zxvf apache-log4j-extras-1.0.tar.gz # find /opt/tomcat/ -type d -name "*lib" \ | awk {print "cp -p apache-log4j-extras-1.0/apache*.jar",$1"/."} | sh # tar zxvf commons-logging-1.1.1-bin.tar.gz # find /opt/tomcat/ -type d -name "*lib" \ | awk {print "cp -p commons-logging-1.1.1/commons-logging*.jar",$1"/."} | sh 通常ログ出力 log4j.properties #ログ出力レベル。Appender名称はFILE。 log4j.rootCategory=INFO, FILE #Apeenderのクラス log4j.appender.FILE=org.apache.log4j.FileAppender #出力先 log4j.appender.FILE.File=/opt/tomcat/logs/log4j.log #追記する log4j.appender.FILE.Append=true #レイアウトクラス log4j.appender.FILE.layout=org.apache.log4j.PatternLayout #レイアウトパターン log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] [%C{1}#%M] %m%n #log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] [%c] - %m%n #log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] [%c] - %m (%F %L)%n ログ出力レベルメッセージレベルの高い順は、FATAL、ERROR、WARN、INFO、DEBUG 設定できるレイアウトクラス レイアウトクラス 概要 org.apache.log4j.SimpleLayout シンプルなレイアウト。デフォルトレイアウト org.apache.log4j.TTCCLayout 時間、スレッド名、カテゴリ名、メッセージを出力する。 org.apache.log4j.HTMLLayout HTML形式で出力する。 org.apache.log4j.XMLLayout XML形式で出力する。 org.apache.log4j.PatternLayout ユーザでレイアウトを指定できる。指定可能なレイアウトパターンは以下を参照して下さい。 設定できるレイアウトパターン レイアウトパターン 概要 %c カテゴリー名。 %c{1} と記述した場合、一番「下の」 レベルのみ出力できる。 「sample.pg.LoggerSample」の場合、「LoggerSample」となる。 %C ログを生成したクラス名。カテゴリ名では無くクラス名。 %C{1} と記述した場合、一番「下の」 レベルのみ出力できる。 「sample.pg.LoggerSample」の場合、「LoggerSample」となる。 %d 日付。 %d{yyyy-MMM-dd HH mm ss,SSS} の様に詳細に指定できる。 %l %F、%L、%Mを纏めた情報。※性能に問題あり。 %F ログを生成したソースファイル名。※性能に問題あり %L ログを生成した箇所のソースの行番号。※性能に問題あり %M ログを生成したメソッドの名前。※性能に問題あり %m ログメッセージ %x NDC でpushした値 %X{key} MDC に保存された key の値 %n 改行コードを生成する。 %p ログレベル(FATALやINFOなど) %r アプリケーションが開始してからの通算時間(ミリ秒) %t ログを生成したスレッド名 日次/毎時/月次などのサイクルでログローテイト log4j.properties #ログ出力レベル。Appender名称はFILE。 log4j.rootCategory=INFO, FILE #Apeenderのクラス log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender #出力先 log4j.appender.FILE.File=/opt/tomcat/logs/log4j.log #ローテーションパターン設定 log4j.appender.FILE.DatePattern= . yyyy-MM-dd #追記する log4j.appender.FILE.Append=true #レイアウトクラス log4j.appender.FILE.layout=org.apache.log4j.PatternLayout #レイアウトパターン log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] [%C{1}] %m%n 設定できるプロパティ プロパティ 定義内容 DatePattern ローテートサイクルを、「月次」、「週次」、「日次」、「毎時」か指定する。詳細は、以下を参照して下さい。 File 出力ファイルパス Append trueを指定した場合は、追加でファイル出力します。デフォルトはfalse BufferedIO trueを指定した場合、バッファリングします。デフォルトは、false BufferSize バッファリングする場合のバッファサイズを指定します。 Encoding ログ出力で使用するエンコーディングを指定します。デフォルトは、システムデフォルトエンコーディングが使用されます。 Threshold ”INFO”を指定すると、INFO以下のログは出力せずに無視する 設定できるパターン パターン 定義内容 . yyyy-MM 月次でローテーションします。 2006年6月の例) ファイル名.2006-06 . yyyy-ww 週次でローテーションします。”ww”には、年初からの通算の週数が指定されます . yyyy-MM-dd 日次でローテーションします。 2006年6月12日の例) ファイル名.2006-06-12 . yyyy-MM-dd-a 毎日AM0 00とPM 12 00にローテンションします。 2006年6月12日AM0 00の例) ファイル名.2006-06-12-AM . yyyy-MM-dd-HH 毎時でローテーションします。 2006年6月12日10時の例) ファイル名.2006-06-12-10 . yyyy-MM-dd-HH-mm 毎分でローテーションします。 2006年6月12日10時25分の例) ファイル名.2006-06-12-10-25 ファイルサイズ容量でログローテイト log4j.properties #ログ出力レベル。Appender名称はFILE。 log4j.rootCategory=INFO, FILE #Apeenderのクラス log4j.appender.FILE=org.apache.log4j.RollingFileAppender #出力先 log4j.appender.FILE.File=/opt/tomcat/logs/log4j.log #ローテーションサイズ設定 log4j.appender.FILE.MaxFileSize= 10MB #世代数設定 log4j.appender.FILE.MaxBackupIndex= 7 #追記する log4j.appender.FILE.Append=true #レイアウトクラス log4j.appender.FILE.layout=org.apache.log4j.PatternLayout #レイアウトパターン log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] [%C{1}] %m%n 設定できるプロパティ プロパティ 定義内容 MaxFileSize ローテンションするログファイルサイズを指定します。 「1024」、「2KB」、「5MB」と指定できます。 MaxBackupIndex バックアップファイルをいくつ保持するか指定します。 例えば、MaxBackupIndex=3を指定すると、ログファイル.1→ログファイル.2→ログファイル.3とローテンションしていき、それ以上古くなると破棄されます。 File 出力ファイルパス Append trueを指定した場合は、追加でファイル出力します。デフォルトはfalse BufferedIO trueを指定した場合、バッファリングします。デフォルトは、false BufferSize バッファリングする場合のバッファサイズを指定します。 Encoding ログ出力で使用するエンコーディングを指定します。デフォルトは、システムデフォルトエンコーディングが使用されます。 Threshold ”INFO”を指定すると、INFO以下のログは出力せずに無視する
https://w.atwiki.jp/myoss/pages/42.html
Tomcat クラスタ構成手順 HttpセッションのクラスタリングをTomcatで行う手順を以下に示す。 環境 OS SuSE 9.2 Tomcat 5.5.9 Apache 2.0.54 mod_jk 1.2.14.1 JDK 1.5.0_04 構成 Apache Tomcat1 Cluster1 Tomcat2 Cluster2 前提 Apache+Tomcatの連携手順、Tomcatロードバランシング設定手順を参照し、ApacheとTomcatの連携が完了していること。 修正ファイル sever.xml 対象アプリケーションのweb.xml(今回はservlets-examples) 修正方法 1.server.xml Cluster定義のコメントアウトを解除。Clusterタグで囲われている部分) SHUTDOWN,HTTP/1.1,AJP 13,tcpListenPortを、Cluster間で重複しないようにずらす mcastBindAddressの値に、ループバックアドレスを設定(N/Wに接続していない場合) 2.web.xml web-appタグ直下に、distributableタグをを追加する(属性なし) 確認方法 本来であれば、Apache経由でTomcatにアクセスするのだが、Tomcatのクラスタリング機能が正常に稼動していることを確認するため、直接Tomcatにアクセスする。 http //localhost [$Tomcat1のポート番号]/servlets-examples/servlet/SessionExample 1."Name of Session Attribute"と"Value of Session Attribute"に適当な値を入れて、実行ボタンを押す。 2.Tomcat1に障害が発生したと想定し、Tomcat1を終了させる。 3.http //localhost [$Tomcat2のポート番号]/servlets-examples/servlet/SessionExampleにアクセスする。 おおぉー、さっき入力した値が表示されていますね。
https://w.atwiki.jp/cz8686/pages/18.html
[Java]eclipseセットアップ ①フォントの設定 Windows ⇒Preferrence ⇒Fonts でText Fontを変更する。 ②JDKの設定 デフォルトでは、 JREのjava.exeが設定されているので JDKのjava.exeに変更する。 Windows ⇒Preference ⇒Java ⇒Installed JREs で Standard VMにJREがデフォルトチェックが 入っている これに インストールしてあるJDK1.4.XのJDKを設定する。 ●TOMCATプラグイン動作方法 ②のJDK設定の後、 Windows ⇒Preference ⇒Tomcat ⇒TOMCATの設定 でJREを変更したJDK1.4.xのものを指定する。 ●JSP.XMLの色分けプラグインの設定 (Solar Eclipse Web) Windows ⇒Preference ⇒Solar Eclipse Web で Add To List に xml を追加 [Java]HTTPでHTMLをゲット ■実行方法 以下の内容の.batファイルを作成、第一引数のURLのHTMLファイルを標準出力する。 java -Dhttp.proxyHost=proxy1.wwww.abc.co.jp -Dhttp.proxyPort=8080 DisplayURL2 %1 import java.io.*; import java.net.*; public class DisplayURL2{ public static void main(String[] args){ for(int i=0; i args.length;i++){ System.out.println("URL= "+ args[i]); try{ URL url = new URL(args[i]); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),"Shift_JIS")); String line=""; while((line =reader.readLine()) != null){ System.out.println(line); } reader.close(); }catch(MalformedURLException e){ System.out.println("URLの形式が間違っています " + e); }catch(IOException e){ System.out.println("I/Oエラーです " +e); } } } }} [Java]JUnit使用例 ■JUnitのテスト画面起動 java junit.ui.TestRunner ■サンプルコード ●テスト対象クラス public final class Sample{ public int value = 0; Sample(int v){ this.value = v; } public int twice(){ this.value *= 3; //this.value *=2; return(this.value); } public int add1(){ this.value+=1; return(this.value); } } ●Sampleクラスに対するテスト実行クラス import junit.framework.*; public final class SampleTester extends TestCase{ public SampleTester(String name){ super(name); } protected void setUp(){ //ここで設定する } public static TestSuite suite(){ TestSuite suite = new TestSuite(); //テストケースを加える suite.addTest(new SampleTester("testAdd1")); suite.addTest(new SampleTester("testTwice")); return suite; } //テスト用メソッドの記述 public void testAdd1(){ Sample s1 = new Sample(10); s1.add1(); assert(s1.value == 11); } public void testTwice(){ Sample s1 = new Sample(10); Sample s2 = new Sample(5); assert(s1.value != s2.value); s2.twice(); assert(s1.value == s2.value); } } //end of SampleTester 使用法: SampleTester.classのあるフォルダから java junit.ui.TestRunner でGUIを起動し、 testclassnameに SampleTester と入力しRUNボタンを押す。 その結果が表示される。 [Java]MyDBAccess.java //package myjdbc; //import myjdbc.*; import java.sql.*; public class MyDBAccess { private String driver; private String url; private String user; private String password; private Connection conn; private Statement stmt; private ResultSet resultset; /** * コンストラクタ * @param driver ドライバー * @param url URL * @param user ユーザ名 * @param password パスワード * */ public MyDBAccess( String driver, String url, String user, String password) { this.driver = driver; this.url = url; this.user = user; this.password = password; } /*引数なしのコンストラクタ * 既定値の利用 * */ public MyDBAccess() { this.driver = "oracle.jdbc.driver.OracleDriver"; this.url = "jdbc oracle thin @192.168.1.1 1521 DB01"; this.user = "test"; this.password = "test"; // this.driver = "com.mysql.jdbc.Driver"; // this.url = "jdbc mysql //192.168.1.1/test"; // this.user = "root"; // this.password = ""; } /** * データベースへの接続を行う */ public synchronized void open() throws Exception { // Class.forName(driver); Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); } /** * SQL 文を実行した結果の ResultSet を返す * @param sql SQL 文 */ public ResultSet getResultSet(String sql) throws Exception { if (stmt.execute(sql)) { return stmt.getResultSet(); } return null; } /** * SQL 文の実行 * @param sql SQL 文 */ public void execute(String sql) throws Exception { stmt.execute(sql); } /** * データベースへのコネクションのクローズ */ public synchronized void close() throws Exception { if (resultset != null) resultset.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } public static void main(String[] args) { MyDBAccess db = new MyDBAccess(); try { db.open(); ResultSet rs = db.getResultSet("SELECT * FROM LOGIN_TBL"); int i=0; while (rs.next()) { i++; String _user_id = rs.getString("USER_ID"); String _password = rs.getString("PASSWORD"); System.out.println(i + " "+ _user_id + "," + _password); } db.close(); } catch (Exception e) { e.printStackTrace(); } } } [Java]OracleJdbcTest1.java import java.sql.*; //import jdbc.sql.*; public class OracleJdbcTest1 { public static void main (String args []) throws SQLException, ClassNotFoundException { // Connectionの作成 Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc oracle thin @192.168.1.1 1521 DB01","scott", "tiger"); // OCIの場合 // DriverManager.getConnection ("jdbc oracle oci8 @TNSname","scott", "tiger"); // Statement の作成 Statement stmt = conn.createStatement (); // Resultset の作成 ResultSet rset = stmt.executeQuery ("select ENAME from EMP"); // データの表示 while (rset.next ()) System.out.println (rset.getString (1)); } } [Java]TripleDES DECODE import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date; import java.io.*; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; public class ANGO_DECODE { byte[] keyMaterial ={ (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD }; //暗号文 //ファイル読み込み String line = null; String ciphertext = null; int count = 0; try{ BufferedReader reader = new BufferedReader( new FileReader(args[0])); while( ( line = reader.readLine()) != null){ count++; ciphertext = line; // URLデコード処理 String a1; String a2; a1 = URLDecoder.decode(ciphertext); // System.out.println("a1=" + a1); // BASE64デコード処理 byte[] cipherbytes = a1.getBytes(); Base64 base64obj = new Base64(); byte[] base64decbytes = base64obj.decode(cipherbytes); String base64decodeStr = new String(base64decbytes); //System.out.println("base64decodeStr=" + base64decodeStr); // TripleDES復号化処理 // TripleDES鍵の生成 SecretKeySpec tdeskey = new SecretKeySpec(keyMaterial,"DESede"); // Cipherインスタンスの生成 Cipher desCipher = Cipher.getInstance("DESede"); // 初期化 desCipher.init(Cipher.DECRYPT_MODE,tdeskey); byte[] plainbytes = desCipher.doFinal(base64decbytes); String plaintext = new String(plainbytes); // System.out.println("plaintext "+ plaintext ); System.out.println(count + "," + a1 + "," + plaintext); } //for end reader.close(); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } } [Java]war アーカイブ作成方法 Jarツールを使って、Webアプリケーション全体をアーカイブします。アーカイブしたいWebアプリケーションのルートディレクトリに移動して、以下のコマンドを実行してください。 jar cvf WARファイル名 ./* WARファイル名は当然「.war」の拡張子が必要です。testというディレクトリ配下のWebアプリケーションを test.warというファイル名でアーカイブしたい場合は、testディレクトリに移動して以下のコマンドで行います。 jar cvf test.war ./* [Java]時間取得 import java.util.*; import java.io.*; import java.text.*; public class Utils{ // getNow("yyyy.MM.dd at hh mm ss"); public static String getNow(String dateformat){ SimpleDateFormat formatter = new SimpleDateFormat(dateformat); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } } [Java]日本語パラメータ %! public String toUnicode(String s) throws java.io.UnsupportedEncodingException{ return (new String(s.getBytes("8859_1"),"JISAutoDetect")); } % html body % String name= toUnicode(request.getParameter("name") ); %
https://w.atwiki.jp/myoss/pages/18.html
Apacheのインストール Apache Http Serverのソースファイルを入手.現在の最新版は,2.0.54. 圧縮ファイルを解凍しソースツリーを作成.今回は最低限必要なもののみソースツリーに含ませた. ./configure --prefix={$apache_install_dir} --enable-so --with-mpm=worker [--prefix] インストールするディレクトリを指定.指定しない場合は,/usr/local/apache2にインストールされる. [--enable-so] Dynamic Shared Object(動的共有オブジェクト)の使用を可能にする.このオプションを指定しないと,コンパイル後のモジュール追加が行えない. [--with-mpm=worker] MPM(Multi Processing Module)を指定する.現在使用可能なMPMは以下の通り. UNIX,Linux;prefork,worker Windows;mpm_winnt この後, make make install Tomcatのインストール TomcatのバイナリをJakarta Projectより入手.現在の最新版は,5.5.9. ソースファイルからビルドしても構わないが,非常に時間がかかるので推奨しない. 前提条件 J2SE 5.0以上 Tomcat導入後,環境変数にJAVA_HOME={$jdk_install_dir},CATALINA_HOME={$tomcat_install_dir}を設定しておく. Apache,Tomcatのインストール後,単体での稼動確認を行う. Apache+Tomcatの連携 Apache/Tomcatコネクタの導入 Apache/TomcatコネクタをJakarta Projectより入手.コネクタは,mod_jkの利用を推奨する(mod_jk2は現在開発終了).現在の最新版は1.2.14. 解凍しコンパイル/インストール. ./configure --with-apxs={$apache_install_dir}/bin/apxs make make install ${jakarta_connctor_src_dir}/jk/native/apache-2.0ディレクトリにモジュールが作成されるので,mod_jk.soという名前に変更し,{$apache_install_dir}/modulesにコピー. 変更ファイル Apache;httpd.conf,workers.properties Tomcat;server.xml [httpd.conf] 以下の記述を追加. LoadModule jk_module modules/mod_jk.so JKWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /servlets-examples/* ajp13w JkMount /jsp-examples/* ajp13w この記述はIfModule mod_jk.cタグで囲っても構わない. [workers.properties] {$tomcat_install_dir}/confにあるworkers.properties.minimalをコピーし,workers.propertiesに変更. ここで,workers.propertiesに記述されたworker名とhttpd.confに記述したworker名(今回はajp13w)を統一すること. [server.xml] Connector要素のポート8080をコメントアウト. Connector要素のポート8009のコメントアウトを外す. 稼動確認 Tomcat,Apacheの順番で起動する. 以下のURLにアクセスできれば成功. http //localhost/jsp-examples/またはhttp //localhost/servlets-examples/ #comment() と書くとこのようにコメント欄を付け加えることができます。 -- ikeda (2005-07-26 08 45 08) もしかして今Apache+Tomcatの連携環境つくられてます? -- ikeda (2005-07-26 08 45 45) 沢山あるよ。Linux,UNIX,Windows etc -- sugahara (2005-07-27 10 32 25) 名前 コメント
https://w.atwiki.jp/dotcom/pages/46.html
コンテナ起動時に特定のサーブレットを動かしてくれないのかしら。comです。 Tomcatでコンテナ起動時にやってほしいことがあるの web.xmlでサーブレットを起動する順番を設定する。 実際どうやって使うの? Tomcatでコンテナ起動時にやってほしいことがあるの Tomcatで作ったサーブレット。 これってブラウザでアクセスしないと動かないのね。 でも何事にも初期処理とか必要じゃん? たとえばログインして何かしないといけないってプロジェクト作ったとき。 ログインIDのファイルを持っていて、これをユーザーがログインするたびにIDが正しいかチェックする。 でもその度にログインIDのファイルをReadするのはダメダメー。 じゃ、プログラム内の配列で保持してればいいのよね。 って簡単に言うけどどうやるんだ??? appricationスコープ? 保持はできるのね。しかも全体で使えるようにもできるです。 でもこれって誰かが使うもっと前に保持するために読み込んどかないといけない。 これが初期処理ってやつなのね。 でも一番最初に動かすってどうやるんだろう? まさかユーザーさんの誰かが最初に起動するまで初期処理が動かないなんてのはおかしいでしょう。 Tomcat起動時ってのもおかしいし。 プロジェクトを動かした時かな? warファイルを作ってWEB-INFフォルダにぶちこんだときって 2007/02/05 11 22 21 org.apache.catalina.startup.HostConfig deployWAR 情報 Webアプリケーションアーカイブ test01.war を配備します みたいなのでるじゃない。 この時に動いてくれないかな。。。 調べました。 ありました。そりゃあるわな。 「Tomcat 起動時 ロード」でググってみたですよ。 JavaでHello World サーブレットweb.xml編 サーブレットをWEBアプリケーション開始時にロードする方法 ってところ。 いつもいつも思うけど、ググるにしてもどの言葉でひっかければいいかわからないとみつけられないのよね。うううう。 web.xmlでサーブレットを起動する順番を設定する。 サンプル。 これdotcomtestってプロジェクトを作ってtest01ってパッケージを作ったものです。 そのtest01には Login ってサーブレットがあるの。 でもってこのdotcomtestプロジェクトをwarファイル(dotcomtest.war)にしてTomcatのWEB-INFフォルダにぶちこんじゃうと展開されるのね。 これからやるのはこのdotcomtest.warが展開された時にInitっていうサーブレットをロードする。というもの。 dotcomtestに入ってるweb.xmlの中身にこんなの入れてみました。 Initをサーブレットマッピングする。 そのとき一行追加しちゃうです。 servlet servlet-name Init /servlet-name servlet-class test01.Init /servlet-class load-on-startup 0 /load-on-startup /servlet これこれ。 load-on-startup 0 /load-on-startup 中に入れるのは数字。いくつもロードさせたいときは小さい数字から順に指定していけばおっけー。 今回はInitサーブレットだけでいいので0にしちゃった。1がいいのかな?調べとこう。 全体はこんな。 dotcomtestのweb.xml ?xml version="1.0" encoding="ISO-8859-1"? !DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http //java.sun.com/dtd/web-app_2_3.dtd" web-app servlet servlet-name Init /servlet-name servlet-class test01.Init /servlet-class load-on-startup 0 /load-on-startup /servlet servlet servlet-name Login /servlet-name servlet-class test01.Login /servlet-class /servlet servlet-mapping servlet-name Login /servlet-name url-pattern /servlet/Login /url-pattern /servlet-mapping /web-app こんな感じ。 設定はできたけど肝心のInitサーブレット作らないと。。。 Init.java package test01; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.http.HttpServlet; public class Init extends HttpServlet{ private ServletContext context = null; public void init(ServletConfig config){ ここにかいたことをしてくれるのー } } load-on-startupで順番指定すると、そのサーブレットをロードするです。 なのでのinitメソッドに書かれた内容しかやってくれないのです。 だからやってほしいことを書くのはinitメソッド内。 じゃこれ作ったらwarファイル作り直してコンテナ起動しなおすとロードしてくれるのー。 実際どうやって使うの? 初期処理。具体的にどんなことをしたいかってのはもう上のほうでぐたぐだ書いてたけど、実際どうやったのかはまた今度。 ファイル読み込んでそのデータを保持してサーブレットで呼び出す、みたいなことしてみたの。 applicationスコープってやつですよはい。 テスト用に作った簡単なのをいつかUPしてみます。
https://w.atwiki.jp/javawa/pages/12.html
プログラムを始める前に・・・ プログラムとは 初めての出力 HelloWorld (おまけ1) Javaの正しい実行 数値演算 変数「int」と代入 四則演算プラスワン 文字列処理 文字列の足し算 数字と数値 やっと入力 (おまけ2) プログラム引数 実行中に入力する。 (おまけ3)コンソールプログラム→対話型→GUIへ もっと演算 条件分岐 論理演算 正しいか?間違いか?
https://w.atwiki.jp/dotcom/pages/27.html
Cvsからcheckoutしたパッケージをjavacでコンパイル。 「パッケージ javax.servlet は存在しません」なんていわれちゃったよどうしよう。 ググってみた 原因 解決 ググってみた 「パッケージ javax.servlet は存在しません」というエラーについて - Java Solution ANTを使っているとしたら、build.bat(build.sh)の中でCLASSPATHを上書きしてるのでその辺を確認するのもポイントかと思います。 うううう。 まさにそのとおり。 EclipseからAntプラグインつかってjavacしてます。 しかもとってきた先はCvs。 原因 Tomcatのjavax.servletのパッケージの場所を指定してあげればいいのね。 そういえばコマンドプロンプトでjavacした時は直接指定してたかも。 あそこで横着したのがいかんかったかな。 解決 まだしてないの。。。
https://w.atwiki.jp/m_shige1979/pages/661.html
ユーザー設定 「C \Tomcat 6.0\conf\tomcat-users.xml」を編集 ?xml version= 1.0 encoding= ms932 ? !-- 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.-- tomcat-users !-- NOTE The sample user and role entries below are wrapped in a comment and thus are ignored when reading this file. Do not forget to remove !.. .. that surrounds them.-- !-- role rolename="tomcat"/ role rolename="role1"/ user username="tomcat" password="tomcat" roles="tomcat"/ user username="both" password="tomcat" roles="tomcat,role1"/ user username="role1" password="tomcat" roles="role1"/ -- user username="tomcat" password="tomcat" roles="manager"/ /tomcat-users ※33行目のユーザー認証情報を追加(rolesをmanagerにする) URLを設定して、画面を開く 左のリンク「Tomcat Manager」リンクをクリックし、パスワードを入力後に画面を遷移する 「examples」をクリックしてサンプル画面へ遷移して遷移できることを確認
https://w.atwiki.jp/javamock/pages/15.html
HelloWorld.java 下記のHelloWorld.javaについて簡単にですが解説します HelloWorld.java class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } クラス クラスは以下のように記述します 修飾子 class クラス名 extends スーパークラス implements インターフェース, インターフェース, インターフェース ...{ フィールド,コンストラクタ,メソッド,内部クラスなど } 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 strictfp 厳密浮動小数修飾子 extends スーパークラス 継承するクラスを指定します ※記述しなければ「extends java.lang.Object」になります implements インターフェース, インターフェース, インターフェース ... インターフェースを指定します ※インターフェースが必要なければ記述しません メソッド メソッドは以下のように記述します 修飾子 戻り値 メソッド(引数,引数,引数,...) throws 例外クラス,例外クラス,例外クラス... { 処理など } 上記のHelloWorld.javaでは以下の箇所です public static void main(String[] args) { System.out.println("Hello World"); } ※javaコマンドで実行されるクラスは以下シグネチャを持つmainメソッドが定義されている必要があります ※実行後最初に呼び出されるメソッドです public static void main(String args[]) 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 native ネイティブ修飾子 synchronized 同期修飾子 strictfp 厳密浮動小数修飾子 戻り値 戻り値のデータ型を指定していします ※voidを指定すると何も返しません 引数 引数を指定します 上記のHelloWorld.javaでは以下の箇所です String型の配列を引数としています String[] args throws 例外クラス,例外クラス,例外クラス... 例外クラスを指定します 指定した例外が発生したとき例外を投げます System.out.println("Hello World"); java.lang.Systemクラスのフィールドout(java.io.PrintStreamクラス)の メソッドprintln()に引数として"Hello World"を渡すことでHello Worldと出力します
https://w.atwiki.jp/kanekotky/pages/6.html
java.util.concurrent Javaの理論と実践:ノンブロッキング・アルゴリズムの紹介 Servlet Performance report Comparing The Performance of J2EE Servers Comparing Apache Tomcat Performance Across Platforms TSS Tomcat Performance Higher on Linux Profiler NetBeans Profiler 見た目綺麗だが、重い・・・ Analyzing the Performance of Java EE application running on GlassFish server using Netbeans Profiler Java Profiling for Beginners JMP - Java Memory Profiler Memory Profilerと言う名前なのだが、メソッドの実行時間やコールグラフ、スレッドのモニタなんかもできる模様。 JVMPIを使って情報を取得し、GTK+で表示。 HPjmeter hprofを読み込んで解析するビューワー。スレッドコールグラフ、スレッド状態なんかを見れる。Agentを入れないので機能は限られているが、簡単に導入できるのがウリかな。 Java Interactive Profiler Instrulmentsを使った(と思われる)プロファイラ http //rektunpe.sakura.ne.jp/diary/?date=20060209#p01 InfraRED AOPを使ったプロファイラ Profiler4J その他のProfiler YourKit Java Profiler i³/Indepth for Web-J2EESymantec i3 7.5, app performance management software, released Yet Another Java Profilerhttp //pcweb.mycom.co.jp/news/2005/06/13/005.html Eclipse TPTPhttp //www.hitachi-sk.co.jp/research/techdoc/TPTP/ JProfilerreport Bytecode Instrumentation Profiling Toolkit for JavaBiptk is an eclipse based toolkit running on Linux that helps developers and performance specialists exploit bytecode instrumentation for the purpose of profiling Java applications. BIPTK includes a library for generating profiling traces, an Eclipse plug-in GUI for visualizing the traces, and some working examples of instrumenting code with Eclipse TPTP Probekit. Tool、ライブラリ Proguard 使われていないコードやフィールド等を削除し、クラスを軽量化してくれる。もっともそれらはEclipse等のIDEで検出してソースコードレベルで削除しておくべきだと思うが・・・。 クラス名やメソッド名、フィールド名を変換して、短くしてくれる機能もある。逆コンパイルされたときに意味が分かりづらくはなるので、そういう目的にも使える模様。 cache4j Article Open Source Profilers for Java Performance monitoring with AspectJTSS Javaworld 2006年3月号Java InstrumentとJava assistの組み合わせは使えそう! 独自のプロファイリング・ツールを構築するJava 5のエージェント・インターフェースとAOPを使って理想的なプロファイラーを作る Caching HTTP Responses in Java Design and performance improvements with JDBC 4.0 Springのための宣言的キャッシングサービス