-Web開発にはWTPを使うのがこれからの主流・・・になりそうなのでお勉強
#contents
*WTPのインストール [#pa012192]
関連するプロダクトが多いのであらかじめJ2EEパッケージのeclipseを落としてくるのが楽(というかそれ以外はやったことない)
*とりあえずプロジェクトを動かす [#x1fb5bc9]
+プロジェクト新規作成→Web→動的Webプロジェクト
+ターゲットラインタイムでアプリケーションサーバーを選択する
上記手順のターゲットランタイムを指定しないとservlet.jarなどが見つからないのでJSPがコンパイルエラーになる。
*アプリケーションサーバーの実行 [#qbf642d4]
サーバーの構成を設定しておいてそれとプロジェクトをマッピングさせるようだ。
サーバータブの構成をダブルクリックするとモジュールを選択する画面が出てくる。
*メモリ不足のとき [#m940d5ad]
**共通操作 [#zccd21ea]
起動引数を変更すればよい。
サーバーの構成をダブルクリックし、起動構成を開くをクリック。
**java head space [#xe67eb71]
JVM引数に-Xms512mでも入れときな!
**PermGen space [#k92d9217]
-XX:MaxPermSize=96mでも入れときな!
**アプリケーションサーバーの起動 [#jdb692a3]
プロジェクト右クリック→実行→Run on server
Tomcatプラグインのようにツールバーに出現しないので慣れるまではわかりづらい。デフォルトではデバッグモードで起動しないのでブレークポイントを使いたければサーバービューからデバッグモードで起動すること。
**WTPのwebappsなど [#p8b87368]
-サーバーの実行構成の引数タブを見るべし
ワークスペース\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
**サーバーの構成 [#uf1e6522]
ウィンドウ→設定→サーバー→インストール済みランタイム
*ビルドパスの設定 [#caf7bfe9]
**Webアプリ系ライブラリ一括追加 [#w3a575ff]
ビルドパスの設定でAdd Library,Server Runtime,Apache Tomcatを選択するとServletAPIが使えるようになる
*注意点 [#c1c79bae]
便利さの裏返しで裏でいろいろ動くので何をするにも重い・・・・OutOfMemoryErrorをeclipseではじめて見た。GC領域が不足しがちなのでメモリ2G必要かもしれない。pleiadesによる日本語はかなりリソースを食うらしく日本語化をはずしたら比較的エラーが出にくくなるがそれでもOutOfMemoryErrorが出てしまった。
*設定など [#a8c16fa9]
**Datasouceの設定(JDBCドライバはWEB-INF/libにあればOK) [#f7ff42b8]
-projectのMETA-INF/context.xmlとして以下のように配置
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="projectname" path="/projectname" reloadable="tr ue" source="org.eclipse.jst.j2ee.server:sjp">
<Resource
auth="Container"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/DBNAME"
driverClassName="com.mysql.jdbc.Driver"
name="jdbc/sample"
username="USERNAME"
password="PASSWORD" />
</Context>
-取得するのは以下のように記述
import java.io.IOException;
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
@WebServlet(urlPatterns={"/DataSourceServlet"})
public class DataSourceServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
InitialContext initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
// JNDI名を使ってDataSourceオブジェクトを検索(lookup)
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/sample");
Connection conn = dataSource.getConnection();
}catch(Exception e) {
throw new RuntimeException(e);
}
}
}
*Tips [#pd08e3d2]
**ログの場所 [#xe015084]
$WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0.
**ログを出力する [#i3a7a0b8]
JVM引数に下記を追加
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="/path/to/logging.properties"
#counter