ASi

Amazon Linux / MySQL JPA servlet を tomcat に deploy

http://d.hatena.ne.jp/ashura156/20170203/1486094264 の続き


下記を参考
http://www.javaroad.jp/opensource/js_tomcat8.htm
http://edgegram.hatenablog.jp/entry/2015/11/17/171300

tomcat の DataSource の設定を行う


/conf/server.html
(※ Eclipse で実行する場合、tomcat のインストールディレクトリではなく、Project Explorer の Servers/Tomcat v8.0 Server at localhost-config 等の下にあるものが使われるので注意。


の子として下記を追加。 EclipseAmazon Linux で url が異なる。この例の Amazon Linux では自身の中で MySQL が走っているので、MySQL の listeningポートを指定している。Eclipse では sshトンネルの入り口を指定。 Context タグの source も Amazon Linux では不要。

<!-- Eclipse -->
<Context docBase="dynamic_web" path="/dynamic_web" reloadable="true" 
  source="org.eclipse.jst.jee.server:dynamic_web">
    <Resource
      name="jdbc/MySQL"
      auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      maxActive="20"
      maxIdle="10"
      maxWait="-1"
      username="root"
      password=""
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:6501/DB1"/>

<!-- Amazon Linux -->
<Context docBase="dynamic_web" path="/dynamic_web" reloadable="true">
    <Resource
      name="jdbc/MySQL"
      auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      maxActive="20"
      maxIdle="10"
      maxWait="-1"
      username="root"
      password=""
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/DB1"/>

Servlet プロジェクトの persistence.xmltomcat の DataSource への接続を設定する。


http://d.hatena.ne.jp/ashura156/20170203/1486094264 の設定とは異なり、下に MySQL の接続情報は書かない。これは tomcat の DataSource を使用するから。

<persistence-unit name="dynamic_web" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
	<non-jta-data-source>java:comp/env/jdbc/MySQL</non-jta-data-source>
	<class>model.Tb1</class>
	<properties>
		<property name="eclipselink.jdbc.native-sql" value="true"/>
	</properties>
</persistence-unit>

data-source名が java:comp/env/ から始まるのはtomcatの仕様

Amazon Linux に deploy する。

  • sudo service tomcat8 stop
  • Amazon Linuxtomcat の server.xml を更新する。場所は /usr/share/tomcat8/conf/server.xml
  • Amazon Linux の /usr/share/tomcat8/lib/ に mysql-connector-java-5.1.40-bin.jar をコピー
  • Amazon Linux の /usr/share/tomcat8/webapps/dynamic_web ディレクトりを削除
  • Amazon Linux の /usr/share/tomcat8/webapps/ に dynamic_web.war を copy
  • sudo service tomcat8 start


ブラウザで remote PC から接続して確認する。