Curlコードの自動生成 1
サーバーサイドの準備
サーバーサイドでの準備は、コードの記述と、web.xml、curl-config.xmlの設定です。コードは、前回作成したEmpServiceなどを利用することとします。
Curl ORB for Java固有の設定をweb.xmlに追記する必要があります。設定を行ったweb.xmlは次のようになります。下記のソースコードでは、S2Servletの記述をコメントアウトしていますが、これについては後述します。
<?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>DefaultFilter</filter-name>
<filter-class>com.curlap.orb.servlet.DefaultInstanceManagementFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DefaultFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>InvokeInContextServlet</servlet-name>
<servlet-class>com.curlap.orb.servlet.InvokeInContextServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InvokeInContextServlet</servlet-name>
<url-pattern>/invoke-in-context</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>NewInstanceServlet</servlet-name>
<servlet-class>com.curlap.orb.servlet.NewInstanceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NewInstanceServlet</servlet-name>
<url-pattern>/new-instance</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>InvokeServlet</servlet-name>
<servlet-class>com.curlap.orb.servlet.InvokeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InvokeServlet</servlet-name>
<url-pattern>/invoke</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DestroyInstanceServlet</servlet-name>
<servlet-class>com.curlap.orb.servlet.DestroyInstanceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DestroyInstanceServlet</servlet-name>
<url-pattern>/destroy-instance</url-pattern>
</servlet-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-mapping>
<servlet-name>s2servlet</servlet-name>
<url-pattern>/s2servlet</url-pattern>
</servlet-mapping>
-->
</web-app>
Seasar2をDIコンテナに利用する場合には、次のようにcurl-config.xmlのSeasar2ApplicationContextを有効にします。curl-config.xmlは、web.xmlと同じディレクトリ内に配置します。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Curl ORB Configuration file -->
<curl-config>
<!-- ApplicationContext ServletContext(default), spring2, seasar2 -->
<!-- Spring2 -->
<!--
<application-context
name="spring2"
class="com.curlap.orb.context.Spring2ApplicationContext"
/>
-->
<!-- Seasar2 -->
<application-context
name="seasar2"
class="com.curlap.orb.context.Seasar2ApplicationContext"
/>
<!-- ACL(Access control list) -->
<access-control-list>
<allow class="*" />
</access-control-list>
</curl-config>
通常、S2コンテナの初期化処理はS2Servletによって行われますが、Curl ORB for Javaでは、Seasar2ApplicationContextによってS2コンテナの初期化処理が行われます。仮に、web.xmlにS2Servletの記述が有効であれば、初期化処理が2度行われてしまいます。そのため、web.xmlのS2Servletに関する箇所をコメントアウトしています。
また、Webアプリケーションは、次のURLでアクセス可能な箇所に配置する必要があります。
- http://localhost:8080/curl-orb-server/
これは、Curlクライアントのコードを生成するときの制限となっています。また、Curl ORB for Java実行時に利用されるデフォルトのURLでもあります。
Curlコードの自動生成
Webアプリケーションを起動したあとに、「Curl ORB - Code Generator Wizard(以下、Generator Wizard)」を起動します。curl-orb_0.5_stable_binに含まれるcode-generator.dcurlはデスクトップアプリケーションなので、ダブルクリックすることで起動できます。起動すると次のような画面が表示されます。
Service Class(DI)を選択し、「Next」ボタンをクリックします。
生成対象を選択し、「Next」ボタンをクリックします。
インターフェースを選択し、「Next」ボタンをクリックします。
生成するメソッドなどを選択し、「Class File」でコードの出力場所指定し、「Generate」ボタンをクリックするとコードが生成されます。
さらに、Generator Wizardの最初の画面で、「Data Class」や「Exception Class」から必要なクラスに関しても同様の手順でコード生成を行います。







