争论-从数据库层还是Java层调用webservice?

争论-从数据库层还是Java层调用webservice?,java,oracle,design-patterns,database-design,architecture,Java,Oracle,Design Patterns,Database Design,Architecture,哪种方法是调用Web服务(SOAP)的好方法? 它是来自Java层还是Oracle数据库层? 我的数据库同事正在努力在数据库层而不是Java层实现这一点 更新:- 简单地说,我们有一个管理Oracle数据库中数据的web应用程序。稍后,我们需要通过第三方提供的Web服务(SOAP)将其中一些数据同步到外部应用程序 进入Java层的原因 这些是我自己在Java层的考虑事项 出于安全原因,DB主机可以与公共internet访问隔离,并且不能访问世界 JavaWebService客户端可以部署在应用服

哪种方法是调用Web服务(SOAP)的好方法? 它是来自Java层还是Oracle数据库层? 我的数据库同事正在努力在数据库层而不是Java层实现这一点

更新:-

简单地说,我们有一个管理Oracle数据库中数据的web应用程序。稍后,我们需要通过第三方提供的Web服务(SOAP)将其中一些数据同步到外部应用程序

进入Java层的原因

这些是我自己在Java层的考虑事项

  • 出于安全原因,DB主机可以与公共internet访问隔离,并且不能访问世界
  • JavaWebService客户端可以部署在应用服务器中,并利用其可伸缩性等特性
  • ?

  • 据我所知,你提到的层对应于技术。 我想说,您必须从Java层调用Web服务。 然而,该Web服务执行的功能将决定应该在哪个体系结构层调用它。因此,您应该考虑它是与业务相关的Web服务还是与数据持久性相关的Web服务。
    在大多数情况下,在所谓的“java层”中有一组服务在单独的层中执行CRUD功能是一个好主意。

    感谢您在我搜索时提出这个问题,我知道SOAP Web服务也可以从Oracle PL/SQL调用。如果不知道这一点,我的建议也是在Java层中进行。但现在我的想法不同了

    由于web服务调用的目的纯粹是数据同步,因此我建议您用PL/SQL编写一个调用web服务的存储过程。您可以使用Oracle scheduler根据数据同步频率计划存储的过程执行


    我回答这个问题的原因是——如果您只想定期同步数据,那么就编写一个基于java的计划作业,打开数据库连接,获取要从数据库同步到java层的数据,然后进行SOAP调用,获取SOAP响应,然后通过打开数据库连接更新表(虽然您可以使用批处理更新,但仍然),绝对是一种更消耗资源\时间的方式,而不仅仅是使用基于PL/SQL的web服务调用直接进行数据库到SOAP和反向通信。

    这方面的经验不多,但我的想法是,SOAP与数据库有什么关系?SOAP是与可能的数据源进行某种交互的结果,但与数据库几乎没有什么关系。这难道不会让数据库暴露在一个更容易到达的点上吗?比如说,在web和数据库之间有一个服务层来处理请求——IMHOThanks,我同意对于这样一个用例来说,在DB中是完全有意义的。但是有一个可能的问题……打开internet访问将敏感数据暴露给数据库服务器并可能受到攻击?安全性是一个考虑因素,但作为一个已建立的服务器,Oracle“应该”处理它没有列出任何此类漏洞-但我不是数据库/网络安全专家。因此,在继续之前,请确保Oracle数据库服务器的安全方面。