如何添加 WSDL 以编程方式进行限制?
在我工作的地方,我们制定了一项政策,规定我们应该尝试“自下而上”(代码优先)构建 Web 服务。
执行此操作时,如何在 XSD
WSDL 元素中添加限制?例如,如下所示:
import javax.jws.WebService;
import javax.xml.ws.BindingType;
@WebService
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public class ProofOfConcept {
public String sayHello(String guest){
return "Hello "+guest;
}
}
我的 WSDL 中的输出如下:
...
<xs:complexType name="sayHello">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
</xs:sequence>
</xs:complexType>
...
我想向“guest”字符串添加 minLength
和 maxLength
限制。这是否可以通过代码来完成,而不是直接编辑 WSDL?
我知道我可以使用自定义类并使用 @XmlElement
或 @XmlAttribute
注释我的字段来获得一些自定义项(名称、必需等),但什么也没有特定于诸如字符串之类的东西(长度等);是否可以修改/扩展这些注释以添加对长度或模式等内容的支持?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现有趣的是,您的策略是尝试自下而上构建 Web 服务,因为我建议自上而下构建 Web 服务,以便清晰地定义契约。无论如何......
我不知道使用注释的具体解决方案,并且我发现您在搜索中也没有找到解决方案。如果您希望自动化该过程以避免每次重新生成 WSDL 时覆盖对模式的更改,您可以向生成的 WSDL 添加 XSL 转换以添加这些属性。虽然不是理想的解决方案,但它应该允许您设置属性并继续工作。
I find it interesting that your policy is to try to build Web services bottom-up as I recommend building Web services top-down in order to cleanly define the contract. At any rate...
I'm not aware of a specific solution using annotations and I see that you haven't found one in your search either. If you want to automate the process so as to avoid overwriting your changes to the schema every time you regenerate the WSDL you can add an XSL transform to the resulting WSDL to add these attributes. While not an ideal solution it should allow you to set the attributes and continue working.