0

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

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

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

public class InputBean {

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

其中 XYZ、ABC、PQR 是一些 java 对象,而 InputBean 在我的服务实现类中使用。

要求是根据许可证有条件地拥有这些字段

 if(XYZ Licensed){
   Include XYZ in bean
 }

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

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

任何帮助,将不胜感激!

4

1 回答 1

0

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

于 2012-09-18T17:48:46.107 回答