请问我在soap服务端的函数中可以返回一个JDOM的Document对象吗?

huangry 2003-03-23 10:47:52
我在服务器端的类:
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.Attribute.*;
import org.jdom.input.*;
import java.io.*;

public class MyService
{
public Document serviceMethod (String arg)throws Exception
{
SAXBuilder sb = new SAXBuilder();

Document doc = sb.build(new FileInputStream("exampleA.xml"));

return doc;
}
}


client端的类:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import org.jdom.*;

import org.jdom.output.*;
import org.jdom.Attribute.*;
import org.jdom.input.*;

import java.io.*;

import javax.xml.namespace.QName;

import javax.xml.rpc.ParameterMode;

public class Client
{
public static void main(String [] args) throws Exception
{
try {
String endpointURL ;
//endpointURL="http://localhost:1234/axis/services/MyService";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress("http://localhost:1234/axis/services/MyService");
call.setOperationName( "serviceMethod" );
//call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING );

Document doc = (Document) call.invoke( new Object[] { "textToSend" } );


String indent = " ";

boolean newLines = true;

XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");

outp.output(doc, new FileOutputStream("exampleB.xml"));

} catch (Exception e) {
System.err.println(e.toString());
}
}
}

运行client端的程序后,报告(500)Internal Server Error

请问我该怎么才能返回一个Document类呢?


如果不能返回一个DOCUMENT类的话,那我到底应该怎么来传送一个XML文件或者是一个XML对象呢?
...全文
42 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangry 2003-03-26
  • 打赏
  • 举报
回复
谢谢 结贴先 我自己再试试
Norwaywoods 2003-03-26
  • 打赏
  • 举报
回复
是的!不懂再问!
huangry 2003-03-26
  • 打赏
  • 举报
回复
你的意思就是说 我如果想要传送这个jDOM的 Document对象, 就是两种方法:

1. 实现序列化和反序列化接口
2. 用CDATA

你确实是说只有这两种方法是不是啊?
Norwaywoods 2003-03-25
  • 打赏
  • 举报
回复
你所说的消息传递是Document style吧!如果是的话,我可以准确的告诉你!这是将来的趋势,RPC方式有很多无法解决的问题!而Document风格却又很多的优点,尤其在互操作性上!
所以,我觉得没什么的就用Document style吧!君不见,www.xmethods.net上的Document style越来越多吗?不过,Axis对于Document style的支持成度一般,不如对Rpc的好!所以,如果你一定要传文件,或者二进制流,就用<![CDATA[试试吧!
huangry 2003-03-25
  • 打赏
  • 举报
回复
我的意思也就是说, 对于document这样已经实现好的类, 我该怎么样使用它已经定义好的序列化方法?
huangry 2003-03-25
  • 打赏
  • 举报
回复
可是我要传输的是Document对象, 照理说它本身在JDOM的实现中已经实现了序列化,但是我使用它就是出错, 我就是想知道正确的使用方法阿 , 或者根本就不能实现呢 :(


ps: 我自己按照例子做的JAVABEAN的类并且传输确实是可以的,但是换成已有的类我实在是不知道怎么办了,我也找不到这样的资料,大家帮帮我
huangry 2003-03-25
  • 打赏
  • 举报
回复
我知道啊, 可是不是说要用attachment的话,就要用消息传递,而不能用RPC吗? 我担心的是如果使用消息的话, 会不会有可能产生一定的延迟, 这在我要开发的那个系统中有可能是无法忍受的阿 :(

再次谢谢在这个问题上对我的指教啊 ;)
Norwaywoods 2003-03-25
  • 打赏
  • 举报
回复
如果是符合JavaBean格式的复杂对象(这个复杂对象里面都是由String,Struct,等东西组成,可不包含那些hashtable等类型),Axis可以用BeanSerializer,序列化它。


如果你要传文件,可以考虑attchment.其实,我这么说,你这么问都是没什么用的,还是去看看Axis的Userguide吧!
http://cvs.apache.org/viewcvs.cgi/~checkout~/xml-axis/java/docs/user-guide.html
huangry 2003-03-25
  • 打赏
  • 举报
回复
当然好啊, 如果我有这个能力的话 ;(

不过还是要谢谢你的回贴!;)

其实我想要做的也就是传输一个XML的对象,或者是文件也可以,你有什么可行的方法吗?
Norwaywoods 2003-03-25
  • 打赏
  • 举报
回复
JDom的序列化和WebService的序列化不是一回事的。Jdom的序列化应该是说他实现了java.io.Serializable这个接口。我说的是的序列化是指在包org.apache.axis.encoding.ser下面有相应的XXXXXDeserializer,XXXXXSerializer,XXXXXDeserializerFactory,XXXXSerializerFactory类。

具体的例子见\axis\samples\encoding。我也没做过,不过方向应该没错!如果你做出来了,给我一份,如何?呵呵!
huangry 2003-03-24
  • 打赏
  • 举报
回复
来人啊,救救我
huangry 2003-03-24
  • 打赏
  • 举报
回复
顶阿
Norwaywoods 2003-03-24
  • 打赏
  • 举报
回复
其实传什么类型不是问题的关键!关键是这种类型能不能被序列化!这里的序列化有两种方式,一个是你的soap引擎,如Apache Soap或者Apache Axis已经包含有这种类型的序列化类,那么你就可以传,如果没有,就必须自己写序列化方法!
huangry 2003-03-24
  • 打赏
  • 举报
回复
我该怎么传这个xml对象呢? 能不能告诉我如何做?
bnfan 2003-03-24
  • 打赏
  • 举报
回复
yes ,you can!
huangry 2003-03-24
  • 打赏
  • 举报
回复
为什么没有人回答我呢? :(

67,512

社区成员

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

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