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]