首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JAX-WS + xjc +绑定向我的WSDL存根添加可序列化和默认的UID。

使用JAX-WS + xjc +绑定向我的WSDL存根添加可序列化和默认的UID。
EN

Stack Overflow用户
提问于 2014-03-25 14:22:28
回答 2查看 3.8K关注 0票数 3

我试图使用globalBindings元素向我的WSDL存根类添加可序列化的+默认UID,这样我就可以消除来自Eclipse的一系列恼人的警告。

我试图遵循this answer中的建议,但没有运气。仍然会得到Eclipse中的所有警告。

我是不是在pom文件里遗漏了什么?

我可以升级到一个更新版本的jaxws插件,甚至移动到不同的插件,如果需要。

这是我的绑定文件:

代码语言:javascript
复制
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.1"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
    <globalBindings>
        <xjc:serializable uid="1" />
    </globalBindings>
    <bindings
        schemaLocation="../resources/com/satorisoftware/ws/infuseiac/intladdresscorrection/intladdresscorrection.wsdl#types?schema3"
        version="1.0">

        <schemaBindings>
            <package name="com.satorisoftware.ws.infuseiac-intladdresscorrection" />
        </schemaBindings>
        <!-- Tell JAXB to generate Java class specifically named CorrectRequestElement 
            for this element, to avoid the name clash that automatic naming causes. -->
        <bindings node="//xsd:element[@name='CorrectRequest']">
            <class name="CorrectRequestElement" />
        </bindings>
    </bindings>
</bindings>

下面是我的pom.xml文件的相关部分:

代码语言:javascript
复制
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>1.12</version>
            <executions>
                <execution>
                    <id>import-iac-wsdl</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <inherited>false</inherited>
                    <configuration>
                        <packageName>com.satorisoftware.ws.infuseiac.intladdresscorrection</packageName>
                        <wsdlLocation>com/satorisoftware/ws/infuseiac/intladdresscorrection/intladdresscorrection.wsdl</wsdlLocation>
                        <staleFile>${project.build.directory}/jaxws/stale/wsdl.intladdresscorrection.done</staleFile>
                        <sourceDestDir>${project.build.directory}/generated/jaxws-infuseiac-intladdresscorrection</sourceDestDir>
                        <wsdlDirectory>src/main/resources/com/satorisoftware/ws/infuseiac/intladdresscorrection</wsdlDirectory>
                        <bindingFiles>
                            <!-- See http://www.jroller.com/gmazza/entry/enhancing_jaxb_artifacts#BindingFile 
                            for an end-to-end-example of doing bindings files for WSDL files. -->
                            <bindingFile>${basedir}/src/main/bindings/bindings-intladdresscorrection.xjb</bindingFile>
                        </bindingFiles>
                        <!-- <wsdlUrls> <value>https://infuseiac.satorisoftware.com/wsdl/IntlAddressCorrection.2012.12.wsdl</value> 
                            </wsdlUrls> -->

                        <!-- Generate JAX-WS 2.0 compatible stubs -->
                        <target>2.0</target>
                    </configuration>
                </execution>
            </executions>
        </plugin>

下面是一个没有UID的生成类的示例

代码语言:javascript
复制
package com.satorisoftware.ws.infuseiac.intladdresscorrection;

import javax.xml.ws.WebFault;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.7-b01-
 * Generated source version: 2.0
 * 
 */
@WebFault(name = "DuplicateFieldFaultContract", targetNamespace = "infuse.satorisoftware.com/2012/08")
public class IntlAddressCorrectionCorrectDuplicateFieldFaultContractOfInfuseSingleFieldFaultFaultMessage
    extends Exception
{

    /**
     * Java type that goes as soapenv:Fault detail element.
     * 
     */
    private DuplicateFieldFaultContract faultInfo;

    /**
     * 
     * @param message
     * @param faultInfo
     */
    public IntlAddressCorrectionCorrectDuplicateFieldFaultContractOfInfuseSingleFieldFaultFaultMessage(String message, DuplicateFieldFaultContract faultInfo) {
        super(message);
        this.faultInfo = faultInfo;
    }

    /**
     * 
     * @param message
     * @param faultInfo
     * @param cause
     */
    public IntlAddressCorrectionCorrectDuplicateFieldFaultContractOfInfuseSingleFieldFaultFaultMessage(String message, DuplicateFieldFaultContract faultInfo, Throwable cause) {
        super(message, cause);
        this.faultInfo = faultInfo;
    }

    /**
     * 
     * @return
     *     returns fault bean: com.satorisoftware.ws.infuseiac.intladdresscorrection.DuplicateFieldFaultContract
     */
    public DuplicateFieldFaultContract getFaultInfo() {
        return faultInfo;
    }

}

下面是一些WSDL请求:

代码语言:javascript
复制
        <xsd:complexType name="DuplicateFieldFaultContract">
            <xsd:annotation>
                <xsd:appinfo>
                    <GenericType xmlns="http://schemas.microsoft.com/2003/10/Serialization/"
                        Name="DuplicateFieldFaultContract" Namespace="infuse.satorisoftware.com/2012/08">
                        <GenericParameter Name="InfuseField"
                            Namespace="http://schemas.datacontract.org/2004/07/Satori.Infuse.Single" />
                    </GenericType>
                </xsd:appinfo>
            </xsd:annotation>
            <xsd:complexContent mixed="false">
                <xsd:extension base="tns:InfuseFaultContract">
                    <xsd:sequence>
                        <xsd:element
                            xmlns:q4="http://schemas.datacontract.org/2004/07/Satori.Infuse.Single"
                            name="DuplicateFields" nillable="true" type="q4:ArrayOfInfuseField" />
                    </xsd:sequence>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
        <xsd:element name="DuplicateFieldFaultContract" nillable="true"
            type="tns:DuplicateFieldFaultContract" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-04 13:24:05

安德斯

这就是我从WSimport的帖子中了解到的

  1. 默认情况下,JAXB生成的代码不能序列化
  2. 我们需要添加一种机制来生成用于POjos的UID
  3. 它不会为异常类创建serialVersionUID。

默认情况下,生成的异常类将具有一个wsdl2java。

请试试wsdl2java,希望这能解决你的问题

票数 3
EN

Stack Overflow用户

发布于 2014-04-02 17:35:04

安德烈斯

你没看到这个吗

私人静态最终长serialVersionUID="1L“?

生成的每个类都是可序列化的,并且具有指定的uid:此过程的一个限制是生成的每个类都具有相同的uid。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22637401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档