木村 様

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

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]

メールによる返信