JBoss AS7でSAStrutsを動くようにしてみた

前回の続き。

Seasar2のソースを見てみたら、JBoss AS7のVFS API依存になってしまうが対応できそうなので、JBoss AS7向けの拡張モジュール(s2-jbossas7)を作ってみた。SAStruts+S2JDBC程度の簡単なサンプルでしか動作確認していませんが、公開しておきます。WARファイル形式、展開WAR形式の両方で確認しています。なお、Seasar2のJARは/WEB-INF/lib以下にあることが前提です。$JBOSS_HOME/modules以下に置いた場合は試していないです。

ついでにJBoss AS7はServlet 3.0対応しているので、@WebServletを使って設定も少し減らしてみた(他の設定があるのでほとんど無意味だけどね)。

ソースはGitHubにあります。また、バイナリファイルもGitHub上のMavenリポジトリに置いておいたので、Mavenから簡単に使えます。JARだけ欲しい場合はこちら

確認した環境

JDK 1.7.0_05-b05
JBoss AS 7.1.1.Final
SAStruts 1.0.4-sp9

使い方

pom.xmlの変更
...
  <repositories>
    <repository>
      <id>maven.seasar.org</id>
      <name>The Seasar Foundation Maven2 Repository</name>
      <url>http://maven.seasar.org/maven2</url>
    </repository>
    <!-- 以下を追加 -->
    <repository>
      <id>maven.wadahiro.github.com</id>
      <name>The wadahiro's Maven2 Repository</name>
      <url>http://wadahiro.github.com/maven/release</url>
    </repository>
  </repositories>
...
  • s2-jbossas7への依存関係を追加する。
...
    <!-- SAStruts -->
    <dependency>
      <groupId>org.seasar.sastruts</groupId>
      <artifactId>sa-struts</artifactId>
      <version>1.0.4-sp9</version>
    </dependency>
    <!-- 以下を追加 -->
    <dependency>
      <groupId>org.seasar.jboss</groupId>
      <artifactId>s2-jbossas7</artifactId>
      <version>0.1</version>
    </dependency>
...
web.xmlの変更
  • web-appタグをServlet 3.0の物に変更する。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 
  • S2ContainerServletの定義を削除(またはコメントアウト)する。
...
  <!-- 
  <servlet>
    <servlet-name>s2container</servlet-name>
    <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  -->
...
  <!--
  <servlet-mapping>
    <servlet-name>s2container</servlet-name>
    <url-pattern>/s2container</url-pattern>
  </servlet-mapping>
  -->
...

もし、web.xmlに明示的に書くのであれば、S2ContainerServletの代わりにorg.seasar.framework.container.servlet.S2ContainerServletOnJBossAS7を定義してください。その場合は、web-appタグは旧来の物でも構いません。

動かしてみる

前回と違ってデプロイ成功。サンプルアプリも動作しています。

10:28:25,839 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876: Starting deployment of "sastruts-sample.war"
10:28:26,859 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry commons-beanutils.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:26,861 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry commons-digester.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:26,862 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry commons-fileupload.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:26,863 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry commons-logging.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:26,864 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry commons-validator.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:26,865 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-6) Class Path entry jakarta-oro.jar in "/content/sastruts-sample.war/WEB-INF/lib/struts-1.2.9.jar"  does not point to a valid jar for a Class-Path reference.
10:28:27,325 INFO  [org.seasar.struts.validator.S2ValidatorPlugIn] (MSC service thread 1-2) Loading validation rules file from '/WEB-INF/validator-rules.xml'
10:28:27,374 INFO  [org.seasar.framework.container.factory.SingletonS2ContainerFactory] (MSC service thread 1-2) s2-frameworkのバージョンは2.4.44です。
10:28:27,376 INFO  [org.seasar.framework.container.factory.SingletonS2ContainerFactory] (MSC service thread 1-2) s2-extensionのバージョンは2.4.44です。
10:28:27,381 INFO  [org.seasar.framework.container.factory.SingletonS2ContainerFactory] (MSC service thread 1-2) s2-tigerのバージョンは2.4.44です。
10:28:27,688 INFO  [org.seasar.framework.container.factory.SingletonS2ContainerFactory] (MSC service thread 1-2) Running on [ENV]ct, [DEPLOY MODE]Hot Deploy
10:28:27,690 INFO  [org.jboss.web] (MSC service thread 1-2) JBAS018210: Registering web context: /sastruts-sample
10:28:27,728 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018565: Replaced deployment "sastruts-sample.war" with deployment "sastruts-sample.war"