草庐IT

java - 如何最好地验证 JAX-WS 输入?

我目前正在使用JAX-WS编写一组新的Web服务,但我在决定验证输入的最佳方式时遇到困难。我可以在我的实现类中进行一些验证,但一些输入错误会悄无声息地失败。例如,数字元素中的字符数据将导致JAXB对象中的空整数。这些是我遇到的设计。@SchemaValidation我可以将此注释添加到端点类,JAX-WS将负责验证。这在tomcat中本地工作,但有人担心它在某些服务器上无法工作。我的主要提示是我不得不放弃对错误在响应中的输出方式的控制。所有输入都是字符串我讨厌这种方法,但我见过其他所有输入都定义为字符串的Web服务。这会捕获数字元素中字符数据的情况,因为我可以在我调用我们的API的地方

java - 在 Maven 项目中管理 JAXB 生成的类

我有一个基于Maven的项目,我试图在其中添加一些由“jaxb2-maven-plugin”Maven插件自动生成的JAXB类。然而,我的第一次剪辑让我陷入了循环依赖循环:因为这些JAXB类还没有生成,所以我引用它们的其他来源有编译错误。因为其他来源存在编译错误,所以不会生成这些JAXB类。解决这个问题似乎有两种明显的可能性:注释掉损坏的引用,以便自动生成项目构建和JAXB类。然后将那些生成的源从/target复制到/src/main/java,这样对它们的引用就不会导致编译错误。创建一个完全独立的项目,只包含JAXB内容。将其作为依赖项包含在我的主项目中。我是不是漏掉了什么?选项#1

java - 在 JAXB 编码中使用 BigDecimal

我有一个带有JAXB字段注释的REST网络服务。例如,@XmlAccessorType(XmlAccessType.PROPERTY)publicclassMyClass{privateBigDecimalsum;//+getterandsetter}如果字段“sum”包含大值,例如1234567890.12345,它编码为1.23456789012345E9如何编写仅编码此类的规则? 最佳答案 创建适配器puclicclassBigDecimalAdaptorimplementsXmlAdapter并用于(XmlAccessTyp

java - 来自 java 包的 jaxb.properties 文件未包含在 Maven 构建的 .war 中

我在我的类所在的包中放置了一个jaxb.properties文件,我在其中使用了不同的JAXB提供程序(如此链接SpecifyingEclipseLinkMOXyasYourJAXBProvider中所示),我将其用于解码。发生以下情况:当我从Eclipse/STS运行项目时,解码工作正常,因为它读取jaxb.properties文件。当我使用Maven3(mvncleaninstall)构建项目时,jaxb.properties文件未包含在包中-因此这些类无法成功解码XML文件.然后,我必须通过导航到部署的应用、输入包并粘贴文件来手动放置jaxb.properties文件。解决方案?

java - JAXB 忽略响应 XML 中的 'extra' 元素

我收到了一个XML响应,它不断变化(节点不断增加或减少)。每次更新响应xml后,我的代码都会中断,因为我映射的Java类没有所有文件。如果响应XML发生任何更改,是否有任何方法可以避免我的代码中断。我们将不胜感激。谢谢。 最佳答案 使用JAXB.unmarshal()简单地从XML创建Java对象。默认情况下它是非常自由的。引自javadoc:Inaddition,theunmarshalmethodshavethefollowingcharacteristic:Schemavalidationisnotperformedonthe

java - JAXB、自定义绑定(bind)、Adapter1.class 和 Joda-time

我对JAXB为XML模式生成绑定(bind)类的方式有疑问(为了精确起见,我无法修改)。我想将xsd:date类型映射到Joda-timeLocalDate对象,并读取here,here和here,我创建了以下DateAdapter类:publicclassDateAdapterextendsXmlAdapter{privatestaticDateTimeFormatterfmt=DateTimeFormat.forPattern("yyyyMMdd");publicLocalDateunmarshal(Stringv)throwsException{returnfmt.parseLo

java - jaxb2-maven-plugin 只执行第一次执行

我正在尝试使用JAXB使用jaxb-maven插件将多个XSD转换为不同包中的POJO。我已将其设置为使用多个执行block,第一个执行block执行,然后我收到一条消息:在模式或绑定(bind)文件中未检测到任何更改这是我的pom.xml的摘录:...org.codehaus.mojojaxb2-maven-plugin1.5org.codehaus.mojojaxb2-maven-plugin1.5Application0generate-sourcesxjcsrc/main/webapp/WEB-INF/xsd/version1za.co.mycee.application.mo

java - 嵌套元素列表的 JAXB 注释

我有以下XML:asdasd123asdsad023123sqwerty我将其映射到以下java类:@XmlRootElement(name="mappings")publicclassMappings{@XmlElement(name="mapping")privateListmMappings;publicListgetMappings(){returnmMappings;}publicvoidsetMappings(ListaMappings){this.mMappings=aMappings;}}publicclassMapping{@XmlElement(name="para

java - 如何使用@XmlElement 和@XmlRootElement 在对象内编码对象?

我见过许多JAXB的实现,我们可以在其中使用@XmlElement注释将java原语转换为XML元素。但是,我想将以下POJO转换为XML(请注意,员工类中有一个地址对象,而不仅仅是原语):publicclassEmployee{privateAddressaddress;privateintemployeeId;//constructors+setters+getters}如何使用这些JAXB注释将员工对象编码为XML?谢谢。 最佳答案 编码POJO属性与编码原始属性没有什么不同。引用的POJO类不需要用@XmlRootEleme

java - 如何以编程方式更改默认的 JAXB 日期序列化?

有没有一种方法可以更改jaxb序列化/反序列化类型的默认方式,在我的例子中是日期,而不通过注释和/或通过xmljaxb绑定(bind)指定它,如此处所述http://jaxb.java.net/guide/Using_different_datatypes.html我基本上想做这样的事情:JAXBContextjaxbContext=...;Marshallermarshaller=jaxbContext.createMarshaller().setAdapter(newDateAdapter(dateFormat));要有一个预配置的JaxBContext或Marshaller/Un