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」から必要なクラスに関しても同様の手順でコード生成を行います。