Java 使用JAX-WS的并发Web服务请求

Java 使用JAX-WS的并发Web服务请求,java,multithreading,web-services,jax-ws,Java,Multithreading,Web Services,Jax Ws,我需要为我的问题设计一个解决方案。所以,请帮帮我 我的问题是: 我们有一个网络项目。在这里,我们使用四个表,称为A、B、C、D。 对于每个表,我们都创建了一个前端页面,并提供了一个按钮,用于将记录保存到各个表中。 现在,我们需要使用Web服务集成将每个记录数据共享给另一个应用程序。 我有JAX-WSWeb服务方面的知识 我们确定了所需的字段,并且只为所有四个表创建了一个公共WSDL。 当用户试图保存记录时,此时只有我需要发起web服务调用。(事件库) 在这里,我们将暂停同步web服务。即,对于每

我需要为我的问题设计一个解决方案。所以,请帮帮我

我的问题是:

我们有一个网络项目。在这里,我们使用四个表,称为A、B、C、D。 对于每个表,我们都创建了一个前端页面,并提供了一个按钮,用于将记录保存到各个表中。 现在,我们需要使用Web服务集成将每个记录数据共享给另一个应用程序。 我有JAX-WSWeb服务方面的知识

我们确定了所需的字段,并且只为所有四个表创建了一个公共WSDL。 当用户试图保存记录时,此时只有我需要发起web服务调用。(事件库) 在这里,我们将暂停同步web服务。即,对于每个请求,系统将等待另一端的响应

假设,首先我尝试将记录保存在表A中。因此,我在表格A中填写了所有必填字段,并尝试点击“保存”按钮。记录保存在数据库中,并向另一端发出web服务请求,将记录发送到服务器并等待响应。。。。。 如果在这意味着,而如果我再次试图发送另一个记录相同的表格A(或)新的记录表格B

然后,如何处理这种情况,因为已经有一个线程忙于服务器响应。那么,如何在同步的情况下并发地提出多个请求呢

请向我推荐可能的解决方案,我可以申请。 一个建议对我很有帮助


(很抱歉我的英语不好)

看看你的情景,我发现你有以下几点:

数据库->Web JAX-WS服务器->多个JAX-WS客户端

当您从客户端调用WS-Server时,将创建一个新线程来处理请求并处理每个客户端的响应。Web服务器是“多线程”的,支持多个客户端同时调用。您的问题可能是在WS服务之后

如果您使用WS尝试使用两个客户端读取同一个表,则没有问题,但是如果一个客户端在其他读取或两个或多个客户端更新表时尝试保存,则事务锁可能是问题所在

根据数据库配置,您应该需要配置事务隔离选项,并认真处理数据库连接,仅在绝对需要时打开和关闭事务

例如,如果您在InnDB()中使用MySQL,并且在执行查询时事务隔离是“可序列化的”,则所有表都将被锁定,直到事务结束,并且任何其他客户端都在等待,直到事务被释放或引发超时

但是如果您具有“可重复读取”,则只有一个事务读取的记录被锁定到其他事务。在某些环境中,这可能是“好的”,但应用于同一行的两个SQL语句可能会导致死锁。*MySQL InnDB的默认值

您还应该使用readcommitted或readuncommitted来允许读取所有表和修改不同的记录。另外,为了处理相同的记录,总是建议“只在所需的最短时间内打开事务”


检查WS-client是否存在在创建第二个请求时破坏第一个请求的单例模式。还要检查您是否正在使用WS-with-state,在用户会话中保留会话或其他服务器端对象,这些对象对于不同的请求是相同的

与Stateles有关:


查看您的场景,我发现您有如下情况:

数据库->Web JAX-WS服务器->多个JAX-WS客户端

当您从客户端调用WS-Server时,将创建一个新线程来处理请求并处理每个客户端的响应。Web服务器是“多线程”的,支持多个客户端同时调用。您的问题可能是在WS服务之后

如果您使用WS尝试使用两个客户端读取同一个表,则没有问题,但是如果一个客户端在其他读取或两个或多个客户端更新表时尝试保存,则事务锁可能是问题所在

根据数据库配置,您应该需要配置事务隔离选项,并认真处理数据库连接,仅在绝对需要时打开和关闭事务

例如,如果您在InnDB()中使用MySQL,并且在执行查询时事务隔离是“可序列化的”,则所有表都将被锁定,直到事务结束,并且任何其他客户端都在等待,直到事务被释放或引发超时

但是如果您具有“可重复读取”,则只有一个事务读取的记录被锁定到其他事务。在某些环境中,这可能是“好的”,但应用于同一行的两个SQL语句可能会导致死锁。*MySQL InnDB的默认值

您还应该使用readcommitted或readuncommitted来允许读取所有表和修改不同的记录。另外,为了处理相同的记录,总是建议“只在所需的最短时间内打开事务”


检查WS-client是否存在在创建第二个请求时破坏第一个请求的单例模式。还要检查您是否正在使用WS-with-state,在用户会话中保留会话或其他服务器端对象,这些对象对于不同的请求是相同的

与Stateles有关:


我不明白这个问题。如果您向Web服务提出请求。。这在客户端并不重要。服务器端应该注意这一点scenario@VKSingla,谢谢你的回复。我已经向web服务器发送了一条记录并等待响应。这意味着,如果我试图触发另一个记录,那么之前的请求被取消,新的请求被提出。所以,我需要同时发送这两个请求。我不理解这个问题。如果您向Web服务提出请求。。这在客户端并不重要。服务器端应该注意