Jerseyの使用に向けてアプリケーションを設定する
CardDealerアプリケーションにおいてJerseyを使用するには、JerseyサーブレットをURLルートに設定する必要があります。また、Javaリソースクラスとして使用するJavaコードの場所をJerseyに知らせる必要があります。この情報は、Webアプリケーションのweb.xmlファイルにあります。リスト3に、Jerseyの構成設定を行うweb.xmlの抜粋を示します。
<servlet>
<servlet-name>REST</servlet-name>
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<!-- Make classes in com.edmunds.fun.cards Jersey RESTful-->
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.edmunds.fun.cards</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map /rest/* to Jersey -->
<servlet-mapping>
<servlet-name>REST</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
RESTエントリポイントを設定する
リスト3では、REST URLのエントリポイントを/rest/*に設定していることに注意してください。以下のコード行は、リスト3で設定されたエントリポイントに従った、RESTエントリポイントの例を示したものです。
http://localhost:9090/card-dealer-rest/rest/....
各パーツはそれぞれ次の情報を表します。
http://localhost:9090:ドメイン/card-dealer-rest/:Webアプリケーション/rest/:RESTエントリポイント
RESTトラフィックは/rest/*にダイレクトします。Webサーバが次のような標準的なWebトラフィックのURLを処理できるように、ルートディレクトリは空けておきたいためです。
ここでの利点は、Webアプリケーションを、RESTサーバと、RESTサーバを使用する通常のWebページを提供するWebサイトの両方として設定できるという点です。RESTサーバとWebページに同じドメインを共有させるのは、RESTサーバに対するAJAXコールバックを記述し、クロスサイトのセキュリティ問題を回避できるようにするためです。AJAXでは、呼び出し元のサイト以外のサイトに対し、XmlHttpRequestを呼び出すことができません。このため、すべてを同じサイトに配置することにより、RESTサービスをWebページで利用できるようにしています。
カード画像ディレクトリを定義する
上述のように、CardDealerでは、Springのインジェクションを用いて、CardDealerHelperにカード画像ディレクトリの場所を設定します。また、空のカード画像のファイル名を設定するためにもSpringのインジェクションを使用しています。この情報は、リスト4に示すように、Springコンテキスト構成ファイルにあります。
<context:component-scan base-package="com.edmunds.fun.cards" /> <!-- Inject cardDealerHelper with the information for imageDirectoryLocationFileSpec and emptyShoeImageFileSpec --> <bean id="cardDealerHelper" class="com.edmunds.fun.cards.CardDealerHelper"> <property name="imageDirectoryLocationFileSpec" value="C:/Projects/CardGames/card-deck" /> <property name="emptyShoeImageFileSpec" value="empty-shoe.jpg" /> </bean>
