我在Java中使用契约优先生成的Web服务时遇到问题。在我的架构中,我有类似的东西:
<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" />
使用这样的字段生成类:
protected long GUID;
现在,当我尝试触发我的webservice时,如果没有为GUID设置任何值,则new java long的默认值设置为(0)并且不会抛出异常。当然这不是好行为,因为我应该需要guid元素。 另一方面,当我将我的架构元素更改为这样的内容时:
<element maxOccurs="1" minOccurs="0" name="GUID" type="xs:long" />
(从逻辑上看,这是不正确的,因为需要GUID元素)生成的类字段如下所示:
{protected Long GUID; }
现在,当Web服务执行中没有设置GUID时,GUID值为null,我可以检查是否从java代码中抛出异常。
所以我想请教您如何使用带有受保护的Long GUID的minOccurs =“0”生成的类; (或者至少在未设置此值时获得异常)
我正在使用glassfish 2.1.1和SopaUI提供的JAXB来执行Web服务。
答案 0 :(得分:0)
我能够找到解决方案。很简单:我必须添加nillable =“true”:
<element maxOccurs="1" minOccurs="1" name="GUID" type="xs:long" nillable="true" />
生成的类中提交的类型现在很长!
BTW。这表明即使没有人回答它,描述你的问题也是好的(也许它是像“橡皮鸭调试”方法中的类似机制?:))