我正在使用Apache CXF從WSDL文件生成類,但他們沒有實現將對象放入JMS隊列所需的可序列化。是否有可能做到這一點,或者我必須將生成的類轉換爲我自己的併發送這些?是否可以使用CXF生成可序列化的類?
10
A
回答
13
我找到了解決自己,所以這裏是如果有人需要它的未來:
1. add this plugin to pom.xml
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java</sourceRoot>
<wsdlRoot>${basedir}/src/main/resources</wsdlRoot>
<includes>
<include>*Service.wsdl</include>
</includes>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/your_wsdl.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-impl</extraarg>
<extraarg>-server</extraarg>
<extraarg>-verbose</extraarg>
<extraarg>-validate</extraarg>
</extraargs>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/binding.xml</bindingFile>
</bindingFiles>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
2. write a custom binding (binding.xml)
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings wsdlLocation="Send.wsdl"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<jaxws:bindings
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://wsdl/SendService.wsdl']">
<jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:serializable uid="11082011"/>
</jxb:globalBindings>
</jaxws:bindings>
</jaxws:bindings>
3. run 'mvn generate-sources'
4
一個簡單的版本bindings.xml,這確保所有生成的文件都實現Serializable接口:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
elementFormDefault="qualified" attributeFormDefault="unqualified"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings>
<xjc:serializable />
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
</xs:schema>
4
綁定文件與< JAXWS:綁定與JAXB >根元素的工作:globalBindings只有你的wsdl只有一個模式。問題是,jaxb:globalBindings是全局的,所以它不能被指定多次。
如果這是你的情況下,你可以使用下面的綁定與JAXB文件:綁定:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jaxb:globalBindings>
<jaxb:serializable uid="1"/>
</jaxb:globalBindings>
</jaxb:bindings>
相關問題
- 1. 使用maven生成可休眠WADL中的可序列化類
- 2. 派生自DependencyObject的類是否可以標記爲可序列化?
- 3. 子類是否序列化不可序列化的父類'成員?
- 4. Gradle - 使用jaxb生成可序列化的類
- 5. 是否可以使用Mojo的Hibernate插件生成Annotated Java類?
- 6. 是否可以在ddply中重複使用生成的列?
- 7. 子類是可序列化的超類不可序列化
- 8. AutoCAD實體是否可以序列化?
- 9. 是否可以序列化hibernate EntitiyManagerFactory?
- 10. 是否可以序列化$ _FILES?
- 11. 我是否需要序列化抽象基類以使派生類可序列化
- 12. 我可以從XSD爲XML序列化/反序列化生成動作類嗎?
- 13. 是否可以使用類型提供程序來生成類型擴展?
- 14. 是否可以將java類對象序列化爲類文件?
- 15. JAXB生成的類可以使用JAX-WS綁定來序列化
- 16. 是否可以在Windows Phone 7/8上使用protobuf-net序列化/反序列化不可變類型?
- 17. 是否可以使用ngx-datatable自動生成列?
- 18. 可序列化對象的組合是否也可序列化?
- 19. kryo序列化對不可序列化的類和類是否有不可序列化的屬性?
- 20. 使用XmlSerializer時,是否可以在xml序列化中使用抽象類?
- 21. 是否可以使用循環引用來執行序列化?
- 22. PHP /反序列化 - 是否可以反序列化$ _GET值?
- 23. 是否有可能通過反序列化某些協議生成C#類?
- 24. Java可序列化類生成的uuid不適用於ehcache
- 25. 是否可以從XmlSerializer序列化中排除某些類型的成員?
- 26. 從實體框架類生成可序列化的類?
- 27. Scala是否可以使用XStream序列化?
- 28. 是否可以「序列化?」使用註釋在Java中
- 29. 是否可以使用序列化屬性進行關聯?
- 30. 是否可以使用生成的Java接口而不是AIDL
請注意,你需要做一些修改到您的binding.xml文件。 1.將第2行中的Send.wsdl替換爲您的WSDL所指定的任何名稱,2.將第8行中的node屬性替換爲您的目標名稱空間所在的位置,如[建議](http:// markmail。組織/消息/ aw52wgp6bdpwo5rx) –