WSDL for Cxf Webservice中的自定义字段

时间:2012-08-23 05:31:20

标签: web-services wsdl conditional cxf

我需要从我的java工件生成自定义wsdl。我使用cxf apis来生成服务。

让我详细描述一下情景, 我想从同一组java工件生成不同的WSDL。这种要求背后的想法是向客户提供基于许可证的操作/消息。我们将一组java对象定义为消息和服务接口/实现。使用Cxf API(ServerFactoryBean)我按需生成Service / WSDL(纯运行时操作)。

为了说清楚,我给出了示例场景

public class InputBean {

    private XYZ xyz;
    private ABC abc;
    private PQR pqr; 

其中XYZ,ABC,PQR是一些java对象,而InputBean用于我的Service Implementation类。

要求是根据许可证

有条件地设置这些字段
 if(XYZ Licensed){
   Include XYZ in bean
 }

 if(PQR Licensed){ 
     Include PQR in bean
  }
 if(XYZ and PQR licensed){  
   Inlcude XYZ and PQR
 }

我知道这是一个奇怪的要求,并不确定我是否清楚地解释了我的问题。 我会尝试继承(动态方法调度),但我想随机组合。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我已经通过创建模板文件(免费标记模板)解决了这个问题,该文件包含所需类的占位符。这将在运行时用必需的类名替换,使用自由标记api创建java源文件,然后由java编译器api创建java类。还开发了自定义类加载器以在运行时加载类。所有操作都将在运行时在后台执行。我无法找到更好的解决方案来满足我的要求,但我对此感到满意,因为它可以达到预期的完美效果。