Web Service Client Non nillable element ' ' is null 问题 的 解决

原创 2007年10月03日 16:44:00
上次编 飞机订票系统 的 Web Service Client 时,要在客户端JSP页面上显示整个飞机航班的列表,就出现过 org.apache.jasper.JasperException ,,,Non nillable element 'newOperationRequest' is null 。。。的问题,当时的原因是搭建Web Service Client的时候,WSDL的定位定成 local路径了,当修改为Web WSDL Referenz之后,问题就解决了。

这次编 Web Service Forum,要在客户端JSP页面上显示所有 论坛里面所有主题名字 的信息时,又出现同样的信息,
org.apache.jasper.JasperException: Exception in JSP: /TomcatForum.jsp:18
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:381)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
java.io.IOException: java.io.IOException: Non nillable element 'themaListAnzeigenReq' is null.

并且问题不是出在WSDL定位上面。那是什么原因呢,Web Service上一切正常的。。。

客户端的核心代码不过是几行而已,

<jsp:useBean id="proxy" scope="session"
class="ForumSS07.Forum.ForumProxy" />
...
<%
ThemaListAnzeigenResponse tLaResponse;
tLaResponse = proxy.themaListAnzeigen(new ThemaListAnzeigenRequest());

Thema[] themen = tLaResponse.getThemenListItems();
...

%>

并且自动生成的测试客户端,在http://localhost/ForumSS07JSPClient/sampleForumProxy/TestClient.jsp
下也很正常。。。那问题在什么地方,根据所给的提示,又能获得什么信息呢?一定要找出来!
--------
  今天找到了问题的所在。

原来Eclipse里自动生成的WSDL 的文件并不完整,有时候总要添加一些新建的OPERATION等。关于nillable 这个问题,解决方法如下:

1 查看提示为
Non nillable element 'themaListAnzeigenReq' is null.


2 在WSDL中找到 themaListAnzeigenReq,看到如下的代码

<element name="ThemaListAnzeigenRequest">
<complexType>
<sequence>
<element name="themaListAnzeigenReq" type="xsd:string"/>
</sequence>
</complexType>
</element>


3 应该在其属性中,定义 nillable 允许为真,即:

<element name="ThemaListAnzeigenRequest">
<complexType>
<sequence>
<element name="themaListAnzeigenReq" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>

4 右键点击WSDL文件,Web Services-->Generate Java Bean sekleton,WSDL的路径应为其默认的LOCAL 路径。

5 新建一个WEB SERVICES CLIENT (WSDL路径应为WEB SERVICE 的 WEB SERVICE REFERENCE,即 http://localhost/.../.wsdl)以及在其 WEBCONTENT 下建立一个JSP文件

6 编写JSP文件,然后在浏览器中打开,应该就能看到效果了。

2007.10.10

WebService对象可空、nillable、minOccurs 、转xml字段丢失

从WebService 引用来的模型  根据wsdl中 nillable、minOccurs的不同 可能会生成后缀带Specified的bool类型属性,此时这个属性默认值是false  当被转换成x...

WebService对象可空的困惑,关于nillable和minOccurs

首先来看minOccurs和Nillable的官方解释 minOccurs:表示XML文档中某个元素节点是否可以不出现,默认值为1,表示必须出现 nillable:表示XML文档中某个元素的取值是否可...

wsdl属性nillable和minOccurs所表示的含义

术语约定 文章中会反复出现[值类型]、[包装类型]、[普通引用类型]、[元素节点]和[元素取值]的表述 1> [值类型]指的是java和.NET中的基本数据类型,如:int; 2> [包装类型]...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web Service Client Non nillable element ' ' is null 问题 的 解决
举报原因:
原因补充:

(最多只允许输入30个字)