[Seasar-user:8574] [s2axis] SOAPのリクエストが正常に送信されない

TAKEUCHI Hideyuki [E-MAIL ADDRESS DELETED]
2007年 6月 22日 (金) 03:13:52 JST


竹内と申します。

s2axis2にてWebサービスを立ち上げてようとしているのですが、
環境によって、SOAPのリクエストが正常に送信されません。
Axis2の方の問題の気もするのですが、もしこころあたりが
あればお願いいたします。以下状況です。

-- 概要
Windows機からリモートのサーバにSOAPリクエスト本体が送信されない。
・HTTP POSTは行われる。
・ローカルでは問題なく動作する。
・HTTPヘッダの直後にchunk-sizeとして0が送信される。
 かつ、その直後もう一度chunk-sizeとして0が送られる。
・リクエスト本体がないためにサーバ側でparseエラーが
 発生する以外は、それっぽいエラーは発生しない。

-- 環境
共通:
  tomcat 5.5.20
  s2container 2.4.13
  s2axis2 0.3.0
  Axis2 1.2
ホストA(開発環境):
  WindowsXP
  Java 1.6.0_01
ホストB(実行サーバ):
  CentOS
  Java 1.6.0_01
ホストC(サブ機):
  Debian
  Java 1.6.0

-- 結果
成功
  A → A
  B → B
  C → A
  C → B

失敗
  A → B

-- 結果をふまえて
Windowsの問題の様に見えるが、ローカルでは正常に動作するのが謎。
きわめて不可解。

-- dicon
Service.dicon:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
	"http://www.seasar.org/dtd/components21.dtd">
<components>
  <component name="remoting"
    class="org.seasar.remoting.common.interceptor.RemotingInterceptor" />

  <component class="org.apache.axis2.description.AxisService"
    autoBinding="none" />

  <component name="connector"
    class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
    <property name="baseURL">
      new java.net.URL("http://remote-machine/services/")
    </property>
  </component>

  <component name="ExecutionTest"
    class="example.service.ExecutionTestService"
    instance="prototype">
    <aspect>remoting</aspect>
  </component>
</components>


-- 通信内容
Wiresharkにより取得。見やすくするために、SOAPメッセージに
改行を挿入しているのと、プロジェクトに関係する部分を
置き換えているため、chunk-sizeは一致しません(chunk-sizeは
元のままです)。

失敗動作時 (A → B):
>> POST /services/ExecutionTest HTTP/1.1
>> Content-Type: text/xml; charset=UTF-8
>> SOAPAction: "urn:authenticate"
>> User-Agent: Axis2
>> Host: remote-machine
>> Transfer-Encoding: chunked
>>
>> 0
>>
>> 0
>>

<< HTTP/1.1 500 Internal Server Error
<< Server: Apache-Coyote/1.1
<< Content-Type: text/xml;charset=UTF-8
<< Transfer-Encoding: chunked
<< Date: Thu, 21 Jun 2007 16:31:13 GMT
<< Connection: close
<<
<< 1f8
<< <?xml version='1.0' encoding='UTF-8'?>
<< <soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
<<   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<< <soapenv:Header>
<< <wsa:Action>
<<   http://www.w3.org/2005/08/addressing/soap/fault
<< </wsa:Action>
<< </soapenv:Header>
<< <soapenv:Body>
<< <soapenv:Fault>
<< <faultcode></faultcode>
<< <faultstring>
<<   com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
<<   at [row,col {unknown-source}]: [1,0]
<< </faultstring>
<< <detail />
<< </soapenv:Fault>
<< </soapenv:Body>
<< </soapenv:Envelope>
<< 0
<<

成功動作時 (C → A) :
>> POST /services/ExecutionTest HTTP/1.1
>> Content-Type: text/xml; charset=UTF-8
>> SOAPAction: "urn:authenticate"
>> User-Agent: Axis2
>> Host: local-machine:8080
>> Transfer-Encoding: chunked
>>
>> 15b
>> <?xml version='1.0' encoding='UTF-8'?>
>> <soapenv:Envelope
>>   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
>> <soapenv:Body><authenticate xmlns="http://service.example/xsd">
>> <arg0 xmlns="">username</arg1>
>> <arg1 xmlns="">password</arg2>
>> </authenticate>
>> </soapenv:Body>
>> </soapenv:Envelope>
>> 0
>>

<< HTTP/1.1 200 OK
<< Server: Apache-Coyote/1.1
<< Set-Cookie: JSESSIONID=280AAA53BCA2916007EBB6D0E0BBDA3A; Path=/
<< Content-Type: text/xml;charset=UTF-8
<< Transfer-Encoding: chunked
<< Date: Thu, 21 Jun 2007 16:21:19 GMT
<<
<< 118
<< <?xml version='1.0' encoding='UTF-8'?>
<< <soapenv:Envelope
<<   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<< <soapenv:Body>
<< <ns:authenticateResponse xmlns:ns="http://service.example/xsd">
<< <ns:return>true</ns:return></ns:authenticateResponse>
<< </soapenv:Body>
<< </soapenv:Envelope>
<< 0
<<


-- エラー内容 (クライアントサイド)
Exception in thread "main"
org.seasar.remoting.axis2.S2AxisClientException: [EAXS1002]サービスの呼
び出しに失敗しました : Address: http://remote-machine/services/ExecutionTest
  at
org.seasar.remoting.axis2.connector.AbstractRPCConnector.invoke(AbstractRPCConnector.java:107)
  at
org.seasar.remoting.common.connector.impl.TargetSpecificURLBasedConnector.invoke(TargetSpecificURLBasedConnector.java:105)
  at
org.seasar.remoting.common.interceptor.RemotingInterceptor.invoke(RemotingInterceptor.java:84)
  at
ddd.admin.service.FileAccessService$$EnhancedByS2AOP$$1c282a1$$MethodInvocation$$authenticate6.proceed(MethodInvocationClassGenerator.java)
  at
ddd.admin.service.FileAccessService$$EnhancedByS2AOP$$1c282a1.authenticate(FileAccessService$$EnhancedByS2AOP$$1c282a1.java)
  at
ddd.admin.service.ServiceFactory.createFileAccess(ServiceFactory.java:41)
  at Example.main(Example.java:17)
Caused by: org.apache.axis2.AxisFault:
com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
  at
org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:434)
  at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:373)
  at
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294)
  at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:520)
  at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:500)
  at
org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:97)
  at
org.seasar.remoting.axis2.connector.AxisInOutConnector.execute(AxisInOutConnector.java:55)
  at
org.seasar.remoting.axis2.connector.AbstractRPCConnector.invoke(AbstractRPCConnector.java:105)
  ... 6 more

--
たけうち
[E-MAIL ADDRESS DELETED]




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