用Axis和SOAP开发基于JAX-RPC的Web服务,遇到的问题!

RZZZB 2004-02-27 05:19:59
在文章“用Axis和SOAP开发基于JAX-RPC的Web服务”中讲到如下内容:

..........
参数模式(Parameter Modes)

基于JAX-RPC的Web服务调用使用的是拷贝传值的参数传递方式。它不支持引用传值的参数传递方式。

JAX-RPC支持下列参数模式:

A. IN模式:一个IN类型的参数传递的是一个拷贝。IN类型参数的值在Web服务调用之前就被拷贝。返回值也被创建为一个拷贝,然后返回给Web服务的客户端。

B. OUT模式:OUT类型的参数被作为一个没有任何输入值的拷贝传递给Web服务方法。Web服务方法填充OUT参数,然后把它返回给客户端。

C. INOUT模式:INOUT参数被作为一个具有一个输入值的拷贝传递给给Web服务方法。Web服务方法使用这个输入值,处理它,用一个新值填充INOUT参数,然后返回给客户端。

OUT和INOUT参数的参数传递模式都是使用Holder类。使用Holder类使得映射可以保持预期的WSDL签名和参数传递语义。JAX-RPC规范包括简单XML类型到Java数据类型的映射的“Holder类”。在JAX-RPC实现的javax.xml.rpc.holders包中可以得到原子数据类型(例如,int,float等等)的Holder类。对复杂的XML数据类型来说,Holder类的名字是通过在相对应的Java类的后面附加"Holder"来构成的。这些生成Holder类作为生成子包Holders的一部分被包装在WSDL到Java的映射中。

每个Holder类提供下列方法和属性:

A. 一个公共属性“value”,“value”的类型就是相映射的Java类型。

B. 一个默认的构造函数,用来初始化“value”属性为一个默认的值。

C. 一个把“value”属性的值设置为传入参数的构造函数。
....................

以上说的Holder类定义的格式是固定的吗?如果是的,我也照做了一个web service,
可是在axis里查看已部署的服务时提示:
Exception - java.lang.IllegalArgumentException: Illegal argument passed to ParameterDesc.setJavaType. The java type orderservice.holders.OrderHolder does not match the mode out

其中orderservice.holders.OrderHolder是我定义的一个Holder类! 究竟是哪出了问题,请大家帮忙看一下,谢谢!

...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
usabcd 2004-04-23
  • 打赏
  • 举报
回复
out型参数必须在部署的wsdd文件中声明
把你的wsdd文件贴出来我看看,

一般情况下,你并不需要用到Out型的参数,直接当成返回对象即可。

(有关axis 的东西可以移到java板块的 web service栏里去。)
jesse01 2004-04-21
  • 打赏
  • 举报
回复
我遇到同样的问题,急需答案

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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