JAX-WS Web服务涉及安全性和性能问题

时间:2012-07-13 17:11:51

标签: java multithreading web-services thread-safety jax-ws

我从其他一些帖子和我对JAX-WS Web服务的理解中了解到它们不是线程安全的。我的网络服务将被100个客户调用,我们需要能够处理大约200个事务/秒。

我的Web服务将与数据库进行交互以执行其工作,如果我在访问数据库的代码周围引入synchronized关键字我基本上将确保一次只有一个线程访问数据库,我想我是否还会在这种情况下能够达到所需的吞吐量。在此先感谢您的帮助。

我被告知实际上将数据库访问工作移动到另一个类中,并在方法级别实例化该类,这样我就不需要使用synchronized关键字并仍然实现线程安全。这是对的吗?

2 个答案:

答案 0 :(得分:2)

如果您需要事务和线程安全,为什么不只是将EJB用作JAX-WS端点?

答案 1 :(得分:1)

我们需要有关该应用程序的更多信息。

一般而言 - 在我描述+数据库访问的情况下,为了表现,我建议。

  1. 仔细规划您的数据库 - 索引尽可能/有意义,使用视图等......
  2. 尝试使用具有良好锁定机制的数据库(每行锁定)。这样,当两个请求访问不同的行时,您将不会受到整个表锁定的影响。
  3. 让您的交易尽可能短。如果使用EJB - 确保“读取数据”方法的事务范围不是Required或RequiredNew(这可能会导致打开事务)。
  4. 如果您使用同步 - 请小心使用正确的锁。不要试图自动使用“synchronized”作为最容易编码的。考虑尽可能使用ReaderWriterLock。
  5. 考虑尽可能使用缓存,但要仔细规划,以便您的流程处理“相关”数据。
  6. 从这些指示开始 - 我想你会发现你可以达到这样的性能目标。