小编yd3*_*d39的帖子

在类型生成期间使用jaxb绑定替换XmlType.namespace

我的Web服务应用程序正在从Axis转移到JAX-WS,我在进行一些转换时遇到了麻烦.我的主要问题是我有几个XSD,其定义的相同类型略有不同,但名称相同.在我的wsimport期间,我能够使用外部JAXB绑定文件来解析包,但生成的类仍然以相同的@XmlType注释结束.

V1:

package com.service.v1.bill.request;
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"})
public class FileBillReqType extends AbstractContextMethodRequest...
Run Code Online (Sandbox Code Playgroud)

V2:

package com.service.v2.bill.request;
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"})
public class FileBillReqType extends AbstractContextMethodRequest...
Run Code Online (Sandbox Code Playgroud)

捆绑:

<jaxb:bindings schemaLocation="file:../wsdl/v1/bill/BillRequest.xsd" 
    node="/xs:schema[@targetNamespace='http://service.example.com/bill/request']">
    <jaxb:schemaBindings>
        <jaxb:package name="com.service.v1.bill.request" />
    </jaxb:schemaBindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)

以前,这将通过轴提供的类型映射(我们硬编码为大量丑陋的wsdd)解决:

<service name="v1" provider="java:RPC" style="document" use="literal">...
<typeMapping
    xmlns:ns="http://service.example.com/bill/request"
    qname="ns:FileBillReqType"
    type="java:com.service.v1.bill.request.FileBillReqType"
    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
    encodingStyle=""
  />...
Run Code Online (Sandbox Code Playgroud)

反正有没有让我生成的JAXB对象拥有自定义命名空间,而不是每次重新生成它们时手动修改生成的文件(有数百个)?

binding axis jax-ws jaxb wsimport

5
推荐指数
1
解决办法
5943
查看次数

打破一个大的Java枚举

采用具有1300个值并将其放入有组织组的Java枚举的建议做法是什么?我知道你不能只扩展枚举组,那么还有其他好的选择吗?

java enums

5
推荐指数
3
解决办法
2976
查看次数

标签 统计

axis ×1

binding ×1

enums ×1

java ×1

jax-ws ×1

jaxb ×1

wsimport ×1