[Seasar-user:9429] [Teeda+S2Axis2] Re:異なるWebアプリケーションとの協調

Applied_MATSUDA Masaaki [E-MAIL ADDRESS DELETED]
2007年 7月 25日 (水) 16:02:27 JST


TigerCatです.


で,ようやく本題に戻ります.(ごめんなさい)

Dolteng 0.21.0 で生成した EasyEnterprise (Teeda + Kuina-Dao) な開発を
行っております.

WebアプリとWebアプリの間の裏方のデータ連携を,S2Axis2で実現することに
し,まったりと検証していたのですが,いまだうまくいっておりません.

S2Axis2のサンプル単体ではしっかり動いていることから,こりゃおそらく
TeedaとS2Axis2を併用するにはどうやるべきか?というFAQネタではないか
とは思いますが,Webでひとしきり検索してはみたものの,決定的な結論が
紹介されていなかったため,この場で確認させてください.


いちおう前提として,当方の事情によりどちらのWebアプリも相互に通信しま
す.なので,どちらもサーバでありクライアントである.よってS2Axis2のサ
ーバ側設定・クライアント側設定両方しています.

とりあえずS2Axis2のサンプルのEchoを動かそうと思い,
サーバ1で Echo1Service をディプロイ・公開.
サーバ2で Echo2Service をディプロイ・公開.
としたうえで,サーバ1からサーバ2のEcho2Serviceを呼ぶテストをやってい
ます.もちろん,ここでつまづいています.
※ このメールのいちばんさいごに,スタックトレース.

うまくいけば,サーバ2からサーバ1のEcho1Serviceを呼んだり,TeedaなWeb
アプリで結果を表示してみたりしてゆこうと思っています.

S2Axis2は現在ダウンロードできる0.3.0で,TeedaやS2ContainerやKuina-Dao
等は上記Doltengがお膳立てしてくれる現状最新版が入っています.


----- 以下,サーバ1 (http://localhost:8080/s2axis1/ ) の構成 -----

(Doltengの元々の設定を変更している部分や,追加したりしている部分は
<!-- @@@@ 理由 @@@@@ --> のコメントで囲っています.あと余分なコメント
類も割愛してます)


■ まず web.xml

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <!--
    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
            /WEB-INF/faces-config.xml
        </param-value>
        <description>
            Comma separated list of URIs of (additional) faces config files.
            (e.g. /WEB-INF/my-config.xml)
            See JSF 1.0 PRD2, 10.3.2
        </description>
    </context-param>
    -->

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
        <description>
            State saving method: "client" or "server" (= default)
            See JSF Specification 2.5.2
        </description>
    </context-param>

    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.html</param-value>
    </context-param>

    <filter>
        <filter-name>encodingfilter</filter-name>
        <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

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

    <filter>
        <filter-name>hotdeployfilter</filter-name>
       
<filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
    </filter>
    
    <filter>
        <filter-name>extensionfilter</filter-name>
       
<filter-class>org.seasar.teeda.extension.filter.ExtensionFilter</filter-class>
    </filter>

	<!--
    <filter>
        <filter-name>requestDumpFilter</filter-name>
        <filter-class>org.seasar.teeda.core.filter.RequestDumpFilter</filter-class>
    </filter>
	-->

    <filter-mapping>
        <filter-name>encodingfilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>

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

    <filter-mapping>
        <filter-name>hotdeployfilter</filter-name>
        <url-pattern>/*</url-pattern>
        <!--
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
         -->
    </filter-mapping>

	<!--
    <filter-mapping>
        <filter-name>requestDumpFilter</filter-name>
        <url-pattern>/view/*</url-pattern>
    </filter-mapping>
	-->
    
    <filter-mapping>
        <filter-name>extensionfilter</filter-name>
        <url-pattern>/teedaExtension/*</url-pattern>
    </filter-mapping>

	<!--
    <listener>
       
<listener-class>org.seasar.teeda.core.webapp.TeedaConfigureListener</listener-class>
    </listener>
	-->

<!-- @@@@ S2Axis2
@@@@@ -->
    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <!--<init-param>-->
            <!--<param-name>axis2.xml.path</param-name>-->
            <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
            <!--<param-name>axis2.repository.path</param-name>-->
            <!--<param-value>/WEB-INF</param-value>-->
        <!--</init-param>-->
        <load-on-startup>1</load-on-startup>
    </servlet>
<!-- @@@@ S2Axis2
@@@@@ -->

	<!-- Teeda initialize servlet -->
    <servlet>
        <servlet-name>teedaServlet</servlet-name>
        <servlet-class>org.seasar.teeda.core.webapp.TeedaServlet</servlet-class>
        <init-param>
        	<param-name>configPath</param-name>
        	<param-value>app.dicon</param-value>
    	</init-param>
    	<init-param>
        	<param-name>debug</param-name>
        	<param-value>true</param-value>
    	</init-param>
<!-- @@@@ S2Axis2
        <load-on-startup>1</load-on-startup>
@@@@@ -->
        <load-on-startup>2</load-on-startup>
    </servlet>

    <!-- facesServlet -->
    <servlet>
        <servlet-name>facesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<!-- @@@@ S2Axis2
        <load-on-startup>2</load-on-startup>
@@@@@ -->
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>ajaxServlet</servlet-name>
        <servlet-class>org.seasar.teeda.ajax.AjaxServlet</servlet-class>
<!-- @@@@ S2Axis2
        <load-on-startup>4</load-on-startup>
@@@@@ -->
        <load-on-startup>5</load-on-startup>
    </servlet>

<!-- @@@@@ S2Axis2
@@@@@ -->
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/servlet/AxisServlet</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
<!-- @@@@ S2Axis2
@@@@@ -->

    <servlet-mapping>
        <servlet-name>facesServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

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

    <servlet-mapping>
        <servlet-name>ajaxServlet</servlet-name>
        <url-pattern>*.ajax</url-pattern>
    </servlet-mapping>

	<!--
    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>
	-->

<!-- @@@@ S2Axis2
@@@@@ -->
    <mime-mapping>
        <extension>wsdl</extension>
        <mime-type>text/xml</mime-type>
    </mime-mapping>

    <mime-mapping>
        <extension>xsd</extension>
        <mime-type>text/xml</mime-type>
    </mime-mapping>
<!-- @@@@ S2Axis2
@@@@@ -->

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>


■ 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="convention.dicon"/>
	<include path="aop.dicon"/>
	<include path="app_aop.dicon"/>
	<include path="teedaExtension.dicon"/>
	<include path="kuina-dao.dicon"/>
	<include path="dxo.dicon"/>
<!-- @@@@ S2Axis2 Server
@@@@@ -->
	<include path="s2axis2.dicon"/>
	<include path="s2axis2Deploy.dicon"/>
<!-- @@@@ S2Axis2 Server
@@@@@ -->
<!-- @@@@ S2Axis2 Client
@@@@@ -->
	<include path="s2axis2Client.dicon"/>
<!-- @@@@ S2Axis2 Client
@@@@@ -->
</components>


■ s2axis2Deploy.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<!-- @@@@ S2Axis2 Server
@@@@@ -->
<components>
    <component name="Echo1Service"
class="s2axis.example.service.impl.Echo1ServiceImpl">
        <meta name="axis-service"/>
    </component>
</components>
<!-- @@@@ S2Axis2 Server
@@@@@ -->


■ s2axis2Client.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<!-- @@@@ S2Axis2 Client
@@@@@ -->
<components>
    <!-- リモート呼び出しのインターセプタ 同期型要求応答形式 -->
    <component name="ioRemoting"
class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
        <property name="connector">ioConnector</property>
    </component>
    <!-- Axisコネクタ 同期型要求応答形式 -->
    <component name="ioConnector"
class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
        <property name="baseURL">baseURL</property>
    </component>
    <!-- Axisサービス -->
    <component class="org.apache.axis2.description.AxisService" autoBinding="none"/>
    <!-- 接続URL -->
    <component name="baseURL" class="java.net.URL" autoBinding="none">
        <arg>"http://localhost:8080/s2axis2/services/"</arg>
    </component>
    
    <!-- Webサービスのプロキシ -->
    <component name="Echo2Service" class="s2axis.example.service.Echo2Service">
        <aspect>ioRemoting</aspect>
    </component>
</components>
<!-- @@@@ S2Axis2 Client
@@@@@ -->


■ Echo1Service インターフェイス
サーバとして公開用.

package s2axis.example.service;

public interface Echo1Service {
    public String echo( int id, String message );
}


■ Echo1ServiceImpl クラス
サーバとして公開用.

package s2axis.example.service.impl;

import s2axis.example.service.Echo1Service;

public class Echo1ServiceImpl implements Echo1Service {

	public String echo(int id, String message) {
		return "[id = " + id + "] " + message;
	}

}


■ Echo2Service インターフェイス
クライアントとして利用.

package s2axis.example.service;

public interface Echo2Service {
    public String echo( int id, String message );
}


■ Echo2ServiceImpl クラス
なし!


■ ReceiveEcho2 クラス
サーバ2 からS2Axis2を介して Echo2ServiceImplのインスタンスをもらう
とりあえず,このmainを叩いて実験してる.

package s2axis.example.logic;

import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;

import s2axis.example.service.Echo2Service;

public class ReceiveEcho2 {

	public static void main(String[] args) {
		ReceiveEcho2 re = new ReceiveEcho2();
		System.out.println( re.getEcho() );
	}
	
	public String getEcho(){
		SingletonS2ContainerFactory.init();
		Echo2Service service = SingletonS2Container.getComponent( Echo2Service.class );
		return service.echo( 5, "This is a test from sv1 to sv2." );
	}

}


----- 以下,サーバ2 (http://localhost:8080/s2axis2/ ) の構成 -----

■ web.xml
サーバ1と内容まったくいっしょ.


■ app.dicon
サーバ1と内容まったくいっしょ.


■ s2axis2Deploy.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<!-- @@@@ S2Axis2 Server
@@@@@ -->
<components>
    <component name="Echo2Service"
class="s2axis.example.service.impl.Echo2ServiceImpl">
        <meta name="axis-service"/>
    </component>
</components>
<!-- @@@@ S2Axis2 Server
@@@@@ -->


■ s2axis2Client.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<!-- @@@@ S2Axis2 Client
@@@@@ -->
<components>
    <!-- リモート呼び出しのインターセプタ 同期型要求応答形式 -->
    <component name="ioRemoting"
class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
        <property name="connector">ioConnector</property>
    </component>
    <!-- Axisコネクタ 同期型要求応答形式 -->
    <component name="ioConnector"
class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
        <property name="baseURL">baseURL</property>
    </component>
    <!-- Axisサービス -->
    <component class="org.apache.axis2.description.AxisService" autoBinding="none"/>
    <!-- 接続URL -->
    <component name="baseURL" class="java.net.URL" autoBinding="none">
        <arg>"http://localhost:8080/s2axis1/services/"</arg>
    </component>
    
    <!-- Webサービスのプロキシ -->
    <component name="Echo1Service" class="s2axis.example.service.Echo1Service">
        <aspect>ioRemoting</aspect>
    </component>
</components>
<!-- @@@@ S2Axis2 Client
@@@@@ -->


■ Echo1Service インターフェイス
クライアントとして利用.サーバ1と内容まったくいっしょ.


■ Echo1ServiceImpl クラス
なし!


■ Echo2Service インターフェイス
サーバとして公開用.サーバ1と内容まったくいっしょ.


■ Echo2Service クラス
サーバとして公開用.

package s2axis.example.service.impl;

import s2axis.example.service.Echo2Service;

public class Echo2ServiceImpl implements Echo2Service {

	public String echo(int id, String message) {
		return "[id = " + id + "] " + message;
	}

}


■ ReceiveEcho1 クラス
サーバ1 からS2Axis2を介して Echo1ServiceImplのインスタンスをもらう
とりあえず,片側の通信がうまくいくまでは,省略!!


----- 以下,ReceiveEcho2実行時のスタックトレース -----

DEBUG 2007-07-25 15:27:13,598 [main] 環境変数#Envにファイル(env.txt)から値(ct)が
設定されました
DEBUG 2007-07-25 15:27:14,098 [main] S2Containerを作成します。path=hotdeploy.dicon
DEBUG 2007-07-25 15:27:14,160 [main] S2Containerを作成します。path=convention.dicon
DEBUG 2007-07-25 15:27:15,223 [main] S2Containerを作成しました。path=
convention.dicon
DEBUG 2007-07-25 15:27:15,223 [main] S2Containerを作成します。path=customizer.dicon
DEBUG 2007-07-25 15:27:15,317 [main] S2Containerを作成します。path=default-
customizer.dicon
DEBUG 2007-07-25 15:27:15,364 [main] S2Containerを作成します。path=std-
customizer.dicon
DEBUG 2007-07-25 15:27:15,567 [main] S2Containerを作成しました。path=std-
customizer.dicon
DEBUG 2007-07-25 15:27:15,598 [main] S2Containerを作成しました。path=default-
customizer.dicon
DEBUG 2007-07-25 15:27:15,645 [main] S2Containerを作成しました。path=
customizer.dicon
DEBUG 2007-07-25 15:27:15,645 [main] S2Containerを作成します。path=creator.dicon
DEBUG 2007-07-25 15:27:16,051 [main] S2Containerを作成しました。path=creator.dicon
DEBUG 2007-07-25 15:27:16,082 [main] S2Containerを作成しました。path=hotdeploy.dicon
DEBUG 2007-07-25 15:27:16,442 [main] S2Containerを作成します。path=app.dicon
DEBUG 2007-07-25 15:27:16,536 [main] S2Containerを作成します。path=convention.dicon
DEBUG 2007-07-25 15:27:16,567 [main] S2Containerを作成しました。path=
convention.dicon
DEBUG 2007-07-25 15:27:16,567 [main] S2Containerを作成します。path=aop.dicon
DEBUG 2007-07-25 15:27:16,754 [main] S2Containerを作成しました。path=aop.dicon
DEBUG 2007-07-25 15:27:16,754 [main] S2Containerを作成します。path=app_aop.dicon
DEBUG 2007-07-25 15:27:16,911 [main] S2Containerを作成しました。path=app_aop.dicon
DEBUG 2007-07-25 15:27:16,911 [main] S2Containerを作成します。path=
teedaExtension.dicon
DEBUG 2007-07-25 15:27:16,989 [main] S2Containerを作成します。path=teeda.dicon
DEBUG 2007-07-25 15:27:17,036 [main] S2Containerを作成します。path=
teedaErrorPage.dicon
DEBUG 2007-07-25 15:27:17,192 [main] S2Containerを作成しました。path=
teedaErrorPage.dicon
DEBUG 2007-07-25 15:27:17,192 [main] S2Containerを作成します。path=
teedaCustomize.dicon
DEBUG 2007-07-25 15:27:17,286 [main] S2Containerを作成しました。path=
teedaCustomize.dicon
DEBUG 2007-07-25 15:27:18,270 [main] S2Containerを作成しました。path=teeda.dicon
DEBUG 2007-07-25 15:27:19,145 [main] S2Containerを作成しました。path=
teedaExtension.dicon
DEBUG 2007-07-25 15:27:19,145 [main] S2Containerを作成します。path=kuina-dao.dicon
DEBUG 2007-07-25 15:27:19,161 [main] S2Containerを作成します。path=jpa.dicon
DEBUG 2007-07-25 15:27:19,223 [main] S2Containerを作成します。path=s2hibernate-
jpa.dicon
DEBUG 2007-07-25 15:27:19,254 [main] S2Containerを作成します。path=javaee5.dicon
DEBUG 2007-07-25 15:27:19,301 [main] S2Containerを作成します。path=j2ee.dicon
DEBUG 2007-07-25 15:27:19,333 [main] S2Containerを作成します。path=jta.dicon
DEBUG 2007-07-25 15:27:19,583 [main] S2Containerを作成しました。path=jta.dicon
DEBUG 2007-07-25 15:27:19,583 [main] S2Containerを作成します。path=jdbc.dicon
DEBUG 2007-07-25 15:27:19,629 [main] S2Containerを作成します。path=jdbc-
extension.dicon
DEBUG 2007-07-25 15:27:19,723 [main] S2Containerを作成しました。path=jdbc-
extension.dicon
DEBUG 2007-07-25 15:27:19,864 [main] S2Containerを作成しました。path=jdbc.dicon
DEBUG 2007-07-25 15:27:19,895 [main] S2Containerを作成しました。path=j2ee.dicon
DEBUG 2007-07-25 15:27:19,895 [main] S2Containerを作成します。path=jpa-support.dicon
DEBUG 2007-07-25 15:27:19,958 [main] S2Containerを作成します。path=jpa-support-
smart.dicon
DEBUG 2007-07-25 15:27:20,239 [main] S2Containerを作成しました。path=jpa-support
-smart.dicon
DEBUG 2007-07-25 15:27:20,504 [main] S2Containerを作成しました。path=jpa-
support.dicon
DEBUG 2007-07-25 15:27:20,504 [main] S2Containerを作成します。path=ejb3tx.dicon
DEBUG 2007-07-25 15:27:20,551 [main] S2Containerを作成しました。path=ejb3tx.dicon
DEBUG 2007-07-25 15:27:20,551 [main] S2Containerを作成しました。path=javaee5.dicon
DEBUG 2007-07-25 15:27:20,614 [main] S2Containerを作成しました。path=s2hibernate
-jpa.dicon
DEBUG 2007-07-25 15:27:20,723 [main] S2Containerを作成しました。path=jpa.dicon
DEBUG 2007-07-25 15:27:20,723 [main] S2Containerを作成します。path=kuina-dao-
builder.dicon
DEBUG 2007-07-25 15:27:21,036 [main] S2Containerを作成しました。path=kuina-dao-
builder.dicon
DEBUG 2007-07-25 15:27:21,036 [main] S2Containerを作成しました。path=kuina-dao.dicon
DEBUG 2007-07-25 15:27:21,036 [main] S2Containerを作成します。path=dxo.dicon
DEBUG 2007-07-25 15:27:21,255 [main] S2Containerを作成しました。path=dxo.dicon
DEBUG 2007-07-25 15:27:21,270 [main] S2Containerを作成します。path=s2axis2.dicon
DEBUG 2007-07-25 15:27:21,551 [main] S2Containerを作成しました。path=s2axis2.dicon
DEBUG 2007-07-25 15:27:21,551 [main] S2Containerを作成します。path=
s2axis2Deploy.dicon
DEBUG 2007-07-25 15:27:21,614 [main] S2Containerを作成しました。path=
s2axis2Deploy.dicon
DEBUG 2007-07-25 15:27:21,614 [main] S2Containerを作成します。path=
s2axis2Client.dicon
DEBUG 2007-07-25 15:27:22,239 [main] S2Containerを作成しました。path=
s2axis2Client.dicon
DEBUG 2007-07-25 15:27:22,239 [main] S2Containerを作成しました。path=app.dicon
WARN  2007-07-25 15:27:23,270 [main]
org.seasar.teeda.extension.config.taglib.impl.ServletContextTaglibManagerImplの
プロパティ(servletContext)が見つからないので設定をスキップします
Exception in thread "main" java.lang.NullPointerException
	at
org.seasar.teeda.extension.config.taglib.impl.ServletContextTaglibManagerImpl.scanJars(ServletContextTaglibManagerImpl.java:47)
	at
org.seasar.teeda.extension.config.taglib.impl.ServletContextTaglibManagerImpl.init(ServletContextTaglibManagerImpl.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:73)
	at
org.seasar.framework.container.assembler.AbstractMethodAssembler.invoke(AbstractMethodAssembler.java:94)
	at
org.seasar.framework.container.assembler.DefaultInitMethodAssembler.assemble(DefaultInitMethodAssembler.java:49)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:69)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
	at
org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
	at
org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
	at
org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
	at
org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at
org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
	at s2axis.example.logic.ReceiveEcho2.getEcho(ReceiveEcho2.java:26)
	at s2axis.example.logic.ReceiveEcho2.main(ReceiveEcho2.java:22)

-----

ちなみに,Teedaの ServletContextTaglibManagerImpl.java:47 あたりを見てみますと,

31: public class ServletContextTaglibManagerImpl extends AbstractTaglibManager {
32:     
33:     private static Logger logger = Logger
34:             .getLogger(ServletContextTaglibManagerImpl.class);
35: 
36:     private ServletContext servletContext;
37: 
38:     public void setServletContext(ServletContext servletContext) {
39:         this.servletContext = servletContext;
40:     }
41: 
42:     public void init() {
43:         scanJars("/WEB-INF/lib/");
44:     }
45: 
46:     public void scanJars(String libPath) {
47:         Set jars = servletContext.getResourcePaths(libPath);

となっており,
要はinit()に入ったときにServletContextがまったくフィールドにセットされ
ていないくていきなりコケている様子です.
この状態でTeedaがまともに動かないのも確認済みでして,
<span id="hoge">Oh, my god!!</span>
を表示するとき,Pageクラスでhogeをどう変更しても画面出力の結果は
<span id="hoge">Oh, my god!!</span>
のままで,spanタグもそのまんまです.


非常に長くなりましたが,やっぱり,S2ContainerとTeedaとS2Axisが正しく
動作する順番とかがあるのかなと・・・
web.xml あたりを疑っているのですが・・・

以上,よろしくおねがいいたします.




Seasar-user メーリングリストの案内