CodeZine(コードジン)

特集ページ一覧

Java開発者のためのCurl入門-クライアントサイドCurlとサーバサイドJavaの通信

第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/10/28 14:00

目次

アプリケーションの作成 1

サーバーサイドの作成

 JSONICには、SeasarやSpringと連携する機能があります。そこで今回は、Seasar、JSONICとTomcatを使用してサーバーサイドを作成します。

 まず、JSONICからコールされるServiceやDaoを作成します。インターフェースやDaoについては省略しますが、Serviceの実装クラスのコードは次のようになります。

EmpServiceImpl
package sample.service.impl;

...中略...

public class EmpServiceImpl implements EmpService {

	public List<Emp> find(EmpQuery query) {
		return empDao.getDatas(query);
	}

	public void create(Emp emp) {
		empDao.insert(emp);
	}

	public void update(Emp emp) {
		empDao.update(emp);
	}

	public void delete(Emp emp) {
		empDao.delete(emp);
	}

	...中略...

}

 上記のコードは複雑なロジックを記述していないので、Webアプリケーションを作成した事のあるJava技術者であれば理解できると思います。

 作成したServiceや、Daoをdiconファイルに記述します(注:今回は、理解しやすさを優先して、app.diconに直接記述しています)。

app.dicon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
	"http://www.seasar.org/dtd/components24.dtd">
<components>
	<include path="aop.dicon"/>
	<include path="dao.dicon"/>

	<component class="sample.service.impl.EmpServiceImpl" >
		<aspect>aop.traceThrowsInterceptor</aspect>
		<aspect>aop.traceInterceptor</aspect>
		<aspect>j2ee.requiredTx</aspect>
	</component>
	<component class="sample.dao.EmpDao" >
		<aspect>dao.interceptor</aspect>
	</component>
</components>

 そして、JSONICとSeasarを連携させるためには、web.xmlを次のように記述します。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">

	<filter>
		<filter-name>s2filter</filter-name>
		<filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>s2filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>s2servlet</servlet-name>
		<servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet>
		<description>JSON-WebService</description>
		<servlet-name>json-ws</servlet-name>
		<servlet-class>net.arnx.jsonic.web.WebServiceServlet</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>
				container: 'net.arnx.jsonic.web.S2Container'
				debug: true
				mappings: {
					'/[package]/[class]/[id].[ext]': 'sample.web.${package}.service.${class}Service'
					'/[package]/[class].[ext]': 'sample.web.${package}.service.${class}Service'
					'/[class].[ext]': 'sample.service.${class}Service'
				}
			</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>s2servlet</servlet-name>
		<url-pattern>/s2servlet</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>json-ws</servlet-name>
		<url-pattern>*.json</url-pattern>
	</servlet-mapping>
</web-app>

 JSON-WebServiceのinit-paramに注目してください。containerに、'net.arnx.jsonic.web.S2Container'と記述することで、Seasarとの連携が可能になります('net.arnx.jsonic.web.SpringContainer'と記述すればSpringと連携できます)。また、mappingsには、URLとDIコンテナに登録されたコンポーネントのマッピングを記述します。この記述の場合、例えば、/emp.jsonというURLでアクセスした場合、sample.service.EmpServiceがコールされます。

 RESTスタイルの場合、コールされるメソッドは、次のようにHTTPのメソッドによって決定されます。

  • GET

     findメソッドが呼び出される。引数はURLのクエリ文字列で指定

  • POST

     createメソッドが呼び出される。メソッドの引数はリクエストボディにJSONとして指定

  • PUT

     updateメソッドが呼び出される。メソッドの引数はリクエストボディにJSONとして指定

  • DELETE

     deleteメソッドが呼び出される。メソッドの引数はリクエストボディにJSONとして指定

 動作確認をするには、Tomcatを起動し、ブラウザに次のURLを入力しアクセスします(注:URLはTomcatの設定により変わります)。

  • http://localhost:8080/curl_server/emp.json

 すると、次のようなリクエストが返ってきます。

リクエスト
[
	{
		"deptno": 20,
		"empno": 7369,
		"ename": "SMITH",
		"hiredate": 345826800000,
		"job": "CLERK",
		"mgr": 7902,
		"sal": 800.0
	},
	{
		"deptno": 30,
		"empno": 7499,
		"ename": "ALLEN",
		"hiredate": 351442800000,
		"job": "SALESMAN",
		"mgr": 7698,
		"sal": 1600.0
	},
	
	...中略...

]

 Service、Daoを作成して、それをSeasarに登録し、web.xmlを記述するだけで、サーバーサイドの準備は完了です。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 木村聡(キムラサトシ)

    2000年からJavaによるWeb開発に携わる。Seasarプロジェクトコミッタであり、コミッタとしての経験をもとに現在は仕事としてフレームワークの開発を行っている。 著書に、「Javaフレームワーク開発入門」や「Eclipseで学ぶはじめてのJava」等がある。

バックナンバー

連載:Java開発者のためのCurl入門
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5