`

关于cxf生成客户端代码中的JAXBElement<String>

阅读更多
    在使用cxf或者x-fire进行webservice开发时,从wsdl文件生成客户端代码时,如果有属性的类型是String,可能会出现JAXBElement<String>类型。
    为什么webservice客户端不直接使用String,而使用JAXBElement<String>类型,自然是有原因的,是因为服务器端的wsdl文件有nillable="true"这个属性。
   此时有两种方法对这个JAXBElement<String>类型赋值。
   1.
User user = new User();  
JAXBElement<String> name = new JAXBElement<String>(new QName("http://memberService", "username"), String.class, "smallnest");
user.setUsername(name);

使用这种方法时,有很多人发现客户端的数据确实存入了,可是到了服务器端,通过.getUsername().getValue()调用时,却是null,原因就是Qname值不对!注意,在生成的客户端代码里有private static final QName SERVICE_NAME = new QName("xxx","xx");
并不是这个QName,真正的Qname要去ObjectFactory.java文件去找。只要QName写对,这种调用方法是可以的。
   2.当然,还有一种更简单的方法,直接使用ObjectFactory这个类来调用:
User user = new User();
ObjectFactory objFac=new ObjectFactory();
JAXBElement<String> name = objFac.createUserUsername("smallnest");
user.setUsername(name);

这样就简便多了。
分享到:
评论

相关推荐

    cxf生成客户端 服务端代码

    cxf生成客户端 服务端代码

    CXF生成ws客户端代码

    ### CXF生成WS客户端代码详解 #### 一、概述 CXF(Camel-XML-Fuery)是一款开源框架,支持开发和维护基于SOAP、REST等协议的服务。它提供了强大的工具集来简化服务的创建、发布及消费过程。其中,“wsdl2java”...

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-spring-boot-starter-jaxws&lt;/artifactId&gt; &lt;version&gt;3.x.y&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` 这里的`3.x.y`应替换为当前最新的CXF版本。 接下来...

    cxf和springnvc整合

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-core&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-...

    开发CXF JAVA客户端

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;3.x.y&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-...

    CXF客户端添加soapHeader代码 + jar包 + apache-cxf-3.1.15

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;3.1.15&lt;/version&gt; &lt;/dependency&gt; ``` 2. 创建客户端配置:在CXF客户端中,我们需要创建一个`JaxWsProxyFactoryBean...

    cxf 开发webservice客户端

    3. 创建客户端实例:生成的代码中会包含一个客户端接口,你需要创建这个接口的实现类实例来调用Web服务。例如: ```java JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass...

    springboot+cxf实现webservice示例

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-spring-boot-starter-jaxws&lt;/artifactId&gt; &lt;version&gt;3.1.7&lt;/version&gt; &lt;/dependency&gt; &lt;!-- CXF webservice --&gt; &lt;dependency&gt; &lt;groupId&gt;org.spring...

    CXF客户端支持最少jar

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-...

    spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

    1. **定义数据模型**:创建对应的Java类,如`ComplexObject`,其中包含List&lt;Map&lt;String, String&gt;&gt;字段。 2. **创建服务接口**:定义一个服务接口,声明接受List&lt;Map&lt;String, String&gt;&gt;参数的方法。 3. **实现服务逻辑...

    关于CXF的用例

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;3.4.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-...

    CXF搭建webservice案例

    &lt;sourceRoot&gt;${project.build.directory}/generated-sources/cxf&lt;/sourceRoot&gt; &lt;wsdlOptions&gt; &lt;wsdlOption&gt; &lt;wsdl&gt;${basedir}/src/main/resources/HelloWorld.wsdl&lt;/wsdl&gt; &lt;/wsdlOption&gt; &lt;/wsdlOptions&gt; &lt;/...

    CXF契约优先开发方式之客户端实现(client)

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-codegen-plugin&lt;/artifactId&gt; &lt;version&gt;${cxf.version}&lt;/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;generate-sources&lt;/id&gt; &lt;phase&gt;generate-sources&lt;/phase...

    cxf 开发restful服务

    &lt;sourceRoot&gt;${project.build.directory}/generated-sources/cxf&lt;/sourceRoot&gt; &lt;wsdlOptions&gt; &lt;wsdlOption&gt; &lt;wsdl&gt;${basedir}/src/main/resources/your.wsdl&lt;/wsdl&gt; &lt;/wsdlOption&gt; &lt;/wsdlOptions&gt; &lt;/...

    xfire根据WSDL生成客户端代码

    其中,`&lt;output_directory&gt;`是你希望生成代码的目录,`&lt;wsdl_file&gt;`是你的WSDL文件路径。 3. **编译生成的代码**:将生成的Java源代码编译成字节码,放入你的项目类路径中。如果你使用的是IDE,可以直接导入这些源...

    CXF客户端,自动生成方式

    当我们谈论“自动生成”CXF客户端时,通常是指利用IDE中的功能,根据服务的WSDL(Web Service Description Language)文档,自动生成对应的客户端代码。在MyEclipse这样的IDE中,这个过程相当直观。以下是具体步骤:...

    CXF 项目集成示例

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-frontend-jaxws&lt;/artifactId&gt; &lt;version&gt;3.4.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-...

    Spring3整合CXF(Maven项目)

    客户端可以通过WSDL地址(通常是`http://yourserver/context-path/services/MyWebService?wsdl`)自动生成对应的Java客户端代码,例如在Eclipse中使用`wsimport`工具。 总结来说,Spring3与CXF的整合提供了便捷的...

    基于cxf 的webService 接口开发及调用步骤文档

    &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf&lt;/artifactId&gt; &lt;version&gt;2.5.2&lt;/version&gt; &lt;type&gt;pom&lt;/type&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-rt-...

Global site tag (gtag.js) - Google Analytics