[英]Generate documentation from POJO with Java Bean Validation annotations
[英]How can I generate Java objects with Bean Validation annotations from an XSD?
我正在編寫一個EJB作為契約第一個SOAP服務,我從WSDL生成java類和SEI。 WSDL指定了幾種帶約束的類型(最大長度,模式等)。 生成的java類是JAXB注釋但缺少約束元數據,因為JAXB注釋不支持這些。 這意味着只有在通過SOAP端點調用服務時才會發生輸入驗證。
問題是 ,當EJB被另一個EJB調用時,驗證被繞過,因為它位於XML堆棧中。 我想禁用XML Schemavalidation並使用Bean Validation,因此驗證適用於調用EJB的兩種方式(SOAP和RMI)。
問題 :如何在Java類上生成JAXB注釋以及Bean Validation注釋?
您可以使用javax.xml.valdation
API來驗證針對XML模式使用JAXB映射的域模型。 此方法的一個優點是您對兩個用例使用相同的驗證規則(在XML模式中定義):
import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.util.JAXBSource;
import javax.xml.validation.*;
public class Demo {
public static void main(String[] args) throws Exception {
Customer customer = new Customer();
customer.setName("Jane Doe");
customer.getPhoneNumbers().add(new PhoneNumber());
customer.getPhoneNumbers().add(new PhoneNumber());
customer.getPhoneNumbers().add(new PhoneNumber());
JAXBContext jc = JAXBContext.newInstance(Customer.class);
JAXBSource source = new JAXBSource(jc, customer);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("customer.xsd"));
Validator validator = schema.newValidator();
validator.setErrorHandler(new MyErrorHandler());
validator.validate(source);
}
}
完整的例子
我所知道的最佳答案是使用Annotate插件添加JSR 303注釋。
您可以使用此插件從xsd生成Bean Validation注釋https://github.com/krasa/krasa-jaxb-tools
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.