Axis传递附件

li820828308 2006-03-07 02:58:08
我用DataHandler来传递附件,但是客户端一调用,就报如下错误:

java.lang.RuntimeException: No support for attackments;

这是为什么呀. 我刚刚开始学,请大家指教.我上网找过例子了,就是觉得不够详细呀.希望大侠给予帮助,有教程就更好了,我的邮箱li820828@126.com .

谢谢了.
...全文
262 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
YuLimin 2006-05-04
  • 打赏
  • 举报
回复
看AXIS里的samples\attachments
twowolf 2006-03-10
  • 打赏
  • 举报
回复
是在一台机器上吗,如果不是,防火墙关了吗?还有这个函数recDH.getName()打出来看看对不对
li820828308 2006-03-09
  • 打赏
  • 举报
回复
up
zouyf 2006-03-08
  • 打赏
  • 举报
回复
我也想知道这个答案
li820828308 2006-03-07
  • 打赏
  • 举报
回复
把代码都贴出来了 希望得到解答
li820828308 2006-03-07
  • 打赏
  • 举报
回复
服务端:
package tree;

import javax.activation.*;
public class TransFile
{
public DataHandler[] sendFile(String a) throws Exception
{
DataHandler ret[] = new DataHandler[1];

java.io.File myFile = new java.io.File("E:\\upload\\134.txt");
if(myFile.isFile() && myFile.canRead())
{
String fname = myFile.getAbsoluteFile().getCanonicalPath();
ret[0] = new DataHandler(new FileDataSource(fname));
}
return ret;
}
}

客户端:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.net.URL;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
import javax.activation.DataHandler;
import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;
import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
public class getFile
{
public static void main(String[] args)
{
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( "http://localhost:1234/axis/services/TransFile" );
call.setOperationName( "sendFile" );
QName qnameAttachment = new QName("TransFile","DataHandler");
call.registerTypeMapping(DataHandler.class, qnameAttachment,

JAFDataHandlerSerializerFactory.class,JAFDataHandlerDeserializerFactory.class);
call.addParameter("a", XMLType.XSD_STRING ,ParameterMode.IN);
call.setReturnType(XMLType.SOAP_ARRAY);
javax.activation.DataHandler[] ret = (javax.activation.DataHandler[])call.invoke(new

Object[]{"lishu"});
for (int i = 0; i < ret.length; i++)
{
DataHandler recDH = ret[i];
java.io.File receivedFile = new java.io.File("c:/"+recDH.getName());//文件生成
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}


deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"

xmlns:ns1="TransFile" >
<service name="TransFile" provider="java:RPC" >
<parameter name="className" value="tree.TransFile"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory"
languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler"
serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>
</deployment>



错误信息:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.RuntimeException: No support for attachments
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: java.lang.RuntimeException: No
support for attachments
at org.apache.axis.Message.setup(Message.java:336)
at org.apache.axis.Message.<init>(Message.java:234)
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.j
ava:664)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:128)

at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
y.java:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:180)
at org.apache.axis.client.Call.invokeEngine(Call.java:2564)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at getFile.main(getFile.java:37)


java.lang.RuntimeException: No support for attachments
at org.apache.axis.AxisFault.makeFault(AxisFault.java:129)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:131)

at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
y.java:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:180)
at org.apache.axis.client.Call.invokeEngine(Call.java:2564)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at getFile.main(getFile.java:37)
Caused by: java.lang.RuntimeException: No support for attachments
at org.apache.axis.Message.setup(Message.java:336)
at org.apache.axis.Message.<init>(Message.java:234)
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.j
ava:664)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:128)

... 10 more
Press any key to continue...

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧