我需要从我的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
}
我知道这是一个奇怪的要求,并不确定我是否清楚地解释了我的问题。 我会尝试继承(动态方法调度),但我想随机组合。
任何帮助将不胜感激!
答案 0 :(得分:0)
我已经通过创建模板文件(免费标记模板)解决了这个问题,该文件包含所需类的占位符。这将在运行时用必需的类名替换,使用自由标记api创建java源文件,然后由java编译器api创建java类。还开发了自定义类加载器以在运行时加载类。所有操作都将在运行时在后台执行。我无法找到更好的解决方案来满足我的要求,但我对此感到满意,因为它可以达到预期的完美效果。