JAXB使用JAX-WS绑定生成可序列化的类

拥有JAXB-RI和CXF。 WSDL首先。 我想要一个生成的类来实现Serializable 。 我现在有以下绑定xml,它工作(SEI类名称被更改)

       

不,在这种情况下,我应该添加的位置和内容。 我试过了:

        

    

标记内部和外部 – 未添加Serializable ,或者根本不生成类(没有任何错误)。

另见这个主题

那么,究竟如何做到这一点

我用两种方式使它工作:

  1. 使用第二个绑定文件,只有JAXB,就像Pascal在他的回答中所显示的那样

  2. 通过指定另一个处理整个命名空间的标记:

          

你可以实现一个XJC插件来做到这一点:

 public class SerializablePlugin extends Plugin { @Override public boolean run(Outline outline, Options options, ErrorHandler errorHandler) throws SAXException { for (ClassOutline classOutline : outline.getClasses()) { JDefinedClass definedClass = classOutline.implClass; definedClass._implements(codeModel.ref(Serializable.class)); } return true; } ... } 

然后,您可以将插件添加到SchemaCompiler选项:

 WsimportOptions wsimportOptions = new WsimportOptions(); wsimportOptions.getSchemaCompiler().getOptions().activePlugins.add(new SerializablePlugin());