Chuさん

 木村です。

 Exceptionを見る限りでは、DataHandler型に対する
デシリアライザの解決ができていないように見えます。
どのような*.wsddでデプロイしているでしょうか?
今回は、typeMapping設定が重要ですが、wsddファイル
全体と、wsdlファイル全体をの2つをお送りください。
(WSDLは、下記のURLにアクセスすれば取得できます)
http://localhost:8080/axis/services/IFileDownloadService?wsdl

よろしくお願いします。
---
Toshi <[EMAIL PROTECTED]>

On Sun, 27 Feb 2005, chu wrote:

木村 様

いつもお世話になっております。

FileDownloadServiceを作成したんですが、サーバのリータンあと、
クライントがリータン値を受けるところでエラーになってしまいました。

そのFileDownloadServiceはgetFile(filename)を提供して
ファイル名へのDataHandlerをクライントへ返します。
http://localhost:8080/axis/services/IFileDownloadService?method=getFile&;
in0=bf1942_weenie.mpeg
IEで下記のようにそれらしいものが表示・返されました。
...
 <getFileReturn href="cid:3144DFE2E2CA459086792463EEC998EC";
xsi:type="ns1:DataHandler"
      xmlns:ns1="FileDownloadService" />
...


サーバ(サービス)側: public class FileDownloadService { DataHandler datahandler; .... public DataHandler getFile(String filename){ .... FileDataSource source; try { source = new FileDataSource(filepath + filename); System.err.println("source=[" + source + "]"); <----(a) } catch (RuntimeException e) { System.err.println(e.toString()); return null; } datahandler = new DataHandler(source); System.err.println("datahandle=[" + datahandler + "]"); <----(b) return datahandler; } Tomcatの画面はエラーなくて [EMAIL PROTECTED] <----(a) [EMAIL PROTECTED] <----(b) が表示されて残っているのは return datahandler; だけです。

クライント側:
public class FileDownloadServiceStub {
        ...
        public FileDownloadServiceStub() {
                try {
                        qnhandler = new QName( "IFileDownloadService",
"DataHandler" );
                        qngetimage = new QName( "IFileDownloadService",
"getFile" );

                        service = new Service();
                        call = (Call)service.createCall();
                        ...
                }
                catch( Exception e ) {
                        e.printStackTrace();
                }
        }

        public DataHandler getFile( String filename ) throws
RemoteException {
                System.out.println("FileServiceStub::getFile[" +
filename + "]");              <------(1)
                handler = (DataHandler)call.invoke(new Object[]
{filename});
                System.out.println("FileServiceStub::getFile[" +
filename + "] done"); <------(2)
                return handler;
        }
}

クライントの画面で(1)が表示されて(2)の前に、下記のエラーになってしまいま
した。
サーバの(b)のreturnから handler =... の前までのエラーかな。

FileServiceStub::getFile[bf1942_weenie.mpeg]
AxisFault
faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: Deserializing parameter
'getFileReturn':
 could not find deserializer for type {FileDownloadService}DataHandler
faultActor:
faultNode:
faultDetail:

{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Deseri
alizing parameter 'getFileReturn':  could not find deserializer for type
{FileDo
wnloadService}DataHandler
       at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:273)
       at
org.apache.axis.encoding.DeserializationContext.startElement(Deserial
izationContext.java:1031)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
va:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElemen
t.java:1140)
       at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238)
       at org.apache.axis.message.RPCElement.getParams(RPCElement.java:
386)
       at org.apache.axis.client.Call.invoke(Call.java:2402)
       at org.apache.axis.client.Call.invoke(Call.java:2301)
       at org.apache.axis.client.Call.invoke(Call.java:1758)
       at
networkrobot.logicserver.etcdata.FileDownloadServiceStub.getFile(File
DownloadServiceStub.java:63)
       at
networkrobot.logicserver.subLogic.MoviePlay.downloadEtcData(MoviePlay
.java:223)
       at
networkrobot.logicserver.subLogic.MoviePlay.startPlay(MoviePlay.java:
157)
       at
networkrobot.logicserver.subLogic.MoviePlay.execute(MoviePlay.java:67
)
       at
networkrobot.logicserver.subLogic.ContentsAdapter.execute(ContentsAda
pter.java:220)
       at
networkrobot.logicserver.Polling.execEvent(LogicServer.java:415)
       at networkrobot.logicserver.Polling.run(LogicServer.java:99)

       {http://xml.apache.org/axis/}hostname:spike

org.xml.sax.SAXException: Deserializing parameter 'getFileReturn':
could not fi
nd deserializer for type {FileDownloadService}DataHandler
       at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
       at org.apache.axis.client.Call.invoke(Call.java:2405)
       at org.apache.axis.client.Call.invoke(Call.java:2301)
       at org.apache.axis.client.Call.invoke(Call.java:1758)
       at
networkrobot.logicserver.etcdata.FileDownloadServiceStub.getFile(File
DownloadServiceStub.java:63)
       at
networkrobot.logicserver.subLogic.MoviePlay.downloadEtcData(MoviePlay
.java:223)
       at
networkrobot.logicserver.subLogic.MoviePlay.startPlay(MoviePlay.java:
157)
       at
networkrobot.logicserver.subLogic.MoviePlay.execute(MoviePlay.java:67
)
       at
networkrobot.logicserver.subLogic.ContentsAdapter.execute(ContentsAda
pter.java:220)
       at
networkrobot.logicserver.Polling.execEvent(LogicServer.java:415)
       at networkrobot.logicserver.Polling.run(LogicServer.java:99)
Caused by: org.xml.sax.SAXException: Deserializing parameter
'getFileReturn':  c
ould not find deserializer for type {FileDownloadService}DataHandler
       at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:273)
       at
org.apache.axis.encoding.DeserializationContext.startElement(Deserial
izationContext.java:1031)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
va:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElemen
t.java:1140)
       at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238)
       at org.apache.axis.message.RPCElement.getParams(RPCElement.java:
386)
       at org.apache.axis.client.Call.invoke(Call.java:2402)
       ... 9 more


長くなってすみませんが、なにか解決するヒントをお願いします。 宜しくお願い申し上げます。


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



メールによる返信