Java 动态定义的webmethod参数

Java 动态定义的webmethod参数,java,web-services,jaxb,jax-ws,osgi,Java,Web Services,Jaxb,Jax Ws,Osgi,简短介绍。有一个生产系统,其中一些独立的客户机发明了一些具有某些属性和行为的对象-可以为这些对象分配一些值,启动它们并在执行时读取它们的状态。 一切都是通过web界面实现的:客户端登录、赋值、注入对象、启动容器并看到其对象发生变化 一切都基于客户机的JAXB兼容模式。模式被编译成Java类并打包为客户机的jar。非常感谢stackoverflow的成员,他们帮助我快速完成了这项工作 问题是:他们希望webservicesoap通过web接口完成他们目前所做的一切。当然,对于根据JAXB模式的ws

简短介绍。有一个生产系统,其中一些独立的客户机发明了一些具有某些属性和行为的对象-可以为这些对象分配一些值,启动它们并在执行时读取它们的状态。 一切都是通过web界面实现的:客户端登录、赋值、注入对象、启动容器并看到其对象发生变化

一切都基于客户机的JAXB兼容模式。模式被编译成Java类并打包为客户机的jar。非常感谢stackoverflow的成员,他们帮助我快速完成了这项工作

问题是:他们希望webservicesoap通过web接口完成他们目前所做的一切。当然,对于根据JAXB模式的wsdl类型,它们每天都会动态更改和部署: 实际上,他们通过web进行的所有操作都是:

启动/停止应用程序容器常见任务,没有问题 将客户端定义的对象注入容器 从容器中检索特定类型的对象 一旦2正常,3就不是问题。但是2快把我逼疯了,在我开始做事之前我需要你的建议。关于WebService,我的问题是:假设参数类型由客户端的JAXB模式定义,如何使用以下方法发布WS-endpoint:

以下是我想到的方法:

使用Object作为参数:public void injectObject obj;并编写ServletFilter代码,根据客户机的模式修改xml请求/响应。但我不确定WS-servlet在这种情况下不会检查方法签名并抛出异常。另一个问题是,我是否可以从该方法中访问请求的xml以执行JAXB解组

由于我已经在编译客户机JAR,我还可以编译webservice端点并将它们作为OSGI捆绑包动态部署。我对OSGI完全陌生,这里有太多的问题:有可能吗,我的ear呢,我需要把所有东西都做成OSGI吗,如何与EJB通信,等等

更多的谷歌搜索,但我担心布林和佩奇会开始向我收费


还有其他想法吗?

最终决定支持OSGi选项,如解决方案中所述。一旦我的管理战从ear中退出,变成OSGi捆绑包,从而获得对BundleContext的访问权,就可以动态部署/取消部署客户端的个人Web服务:

  Bundle clientWsBundle = bundleContext.installBundle(bundleId, bundleWarInputStream);
  registerNewBundle(clientWsBundle);

不确定此解决方案是否适用于其他非基于OSGi的应用程序服务器。我认为需要一些额外的OSGI配置,以使其与EAR的其余部分顺利交互。

最终决定支持解决方案中所述的OSGI选项。一旦我的管理战从ear中退出,变成OSGi捆绑包,从而获得对BundleContext的访问权,就可以动态部署/取消部署客户端的个人Web服务:

  Bundle clientWsBundle = bundleContext.installBundle(bundleId, bundleWarInputStream);
  registerNewBundle(clientWsBundle);
不确定此解决方案是否适用于其他非基于OSGi的应用程序服务器。我想需要一些额外的OSGI配置,以使它能够与EAR的其余部分顺利交互