繁体   English   中英

如何设计可以提供接口作为JAX-WS Web服务,通​​过JMS或Java EE框架内的本地方法调用的服务?

[英]How to design service that can provide interface as JAX-WS web service, or via JMS, or as local method calls within Java EE framework?

使用典型的Java EE框架,如何开发和部署可以称为Web服务(具有WSDL接口),通过JMS消息调用或直接从同一容器中的其他服务调用的服务?

这里是一些更多的上下文:

目前,我负责具有以下属性的服务(简称为Service X):

  • 接口定义是人类可读的文档,需要手动更新。
  • 接受对单个URL的HTTP形式编码的请求。
  • 发送简单的旧XML响应(无模式)。
  • 使用Apache接受请求+专有应用程序服务器(不基于servlet或EJB),其中包含在单独层中运行的所有逻辑。
  • 大量使用关系数据库。
  • 既可以使用多种语言编写的内部应用程序调用,也可以由少数第三方调用。

我想要(或至少已被告知!):

  • 切换到著名的(首选开放源代码)Java EE堆栈,例如JBoss,Glassfish等。

  • 将服务X分为服务A和服务B,以便我们可以在不影响服务A的情况下关闭服务B进行维护。请注意,服务B将取决于(即需要向服务A发出请求)。

  • 通过提供至少一个WS-I样式的接口(WSDL + SOAP + XML + HTTP)以及可能的JMS接口,使第三方更易于集成这两种服务。 将来我们可能还会考虑使用更轻量级的API(REST + JSON?Google Protocol Buffers?),但这真是太好了。

其他注意事项是:

  • 在较小的部署中,服务A和服务B可能会在同一台机器上运行,并且使用HTTP或消息总线进行通信似乎很愚蠢; 如果它们可以在同一个容器中运行并彼此进行方法调用,则更好。

  • 不需要与现有的临时Service X界面向后兼容,并且我们不打算将过多的现有代码用于新服务。

  • 我对契约优先(我猜是WSDL)或(注释)代码优先的开发感到满意。

抱歉,如果我的术语有点朦胧-我对Java和Web编程有相当的经验,但是发现很难掌握所有这些企业/ SOA的知识-看来我有很多东西要学习! 我也不太习惯使用框架,而不是简单地编写调用某些程序包来执行操作的代码。

我已经下载了Glassfish,下载了一个简单的WSDL文件,并使用wsimport和一些虚拟代码将其转换为我已部署的WAR文件。

本文的第2页: 带有Java EE 6的精益服务体系结构讨论了如何使用Facade模式向远程和本地用户公开服务。 我对使用JMS并不熟悉,所以我不确定它是否适合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM