问题陈述:
目前,有两个要求,即在SOAP Fault中具有正确填充的“”元素,并尽可能接近来自Axis Web Service的迁移前和迁移后的CXF Web服务的SOAP Request和SOAP Response之间的匹配。 / p>
对于上述第一个需求,我们探讨了以下选项:
- 我们为CXF配置了自定义Interceptor类,它将根据需要处理SOAP Fault。我们还修改了服务实现中的方法,以便“元素”的内容可以直接在Java代码中设置。但是,我们遇到了与JAXB Context无法正确地将Java异常解组到SOAP Fault中的问题
- 我们创建了两个新类,一个作为简单Java bean的异常实际容器,另一个作为扩展Java异常类的包装器。我们在服务实现中使用了异常包装类,允许将应用程序异常转换为SOAP Fault。但是,我们遇到了JAXB Context
不知道这些类的问题
- 我们尝试使用wsdl2java工具为JAX-WS和JAXB生成各种工件 - 我们引入了更改以在可用的XSD片段中指定SOAP Fault(即Axis / WebLogic的遗留)WSDL,并使用JAXB工件,特别是处理JAXB Context的ObjectFactory和DamageCatalogElementArray类。发布这个,我们遇到了错误,即各种XML类型,即它们引用的相应类未定义为指定的命名空间
- 我们使各个类中使用的名称空间(QName实例)保持一致,并使用另一个类package-info来指定包结构的模式映射。此时,我们收到的错误是集合中的模式与特定类的数组冲突,服务实现方法中的DamageCatalogElement,与类相关的catalogDamage(),DamageCatalogElementArray。这是因为服务实现中此方法的返回类型是一个类型为DamageCatalogElement的数组,而当我们在ObjectFactory中返回JAXBElement实例时,我们必须使用类DamageCatalogElementArray
醇>
我们使用的是CXF 2.4.2,JDK1.6,JBoss AS 4.2。
任何帮助或指示将非常感谢!!