java - 使用 Java、Apache Axis2、Hibernate 和 MySQL 的 Restful Webservices 及其性能

标签 java mysql web-services hibernate axis

我在某处读到过在应用程序中使用 webservcies。经过大量研究,我能够创建一个 Web 服务,它将相应地接受 Json 和 JsonP 两种格式作为请求和响应。我使用 Java、Apache Axis2、Hibernate 和 MySQL 作为数据库开发了 webservcies。有几个问题,我不知道如何解决?

  1. 插入或删除选项,有时,如果同时有两个以上的用户调用插入或删除任何行的服务,查询将进入 hibernate 模式,下次有人尝试获取该服务时,他无法获取该服务。根据服务器日志,它显示错误 SQL 锁定状态。如果我在 MYSQL 中检查 Processlist,它会在 Sleep 中显示该查询,我必须终止才能恢复。

  2. webservice 的性能似乎没有达到标准,它需要更多的时间,因为我所经历的不应该。简单来说如何通过服务获得更好的性能

  3. 如何实现安全功能,以便在用户登录时向他/她提供一个 ID 并验证该 ID,从而防止未经授权的访问

或者只是指导我应该使用 Java 的最合适和优化的 Web 服务方法是什么

最佳答案

此问题的答案并非特定于 Android。以下是我的调查,可能对您有用。

关于MySQL连接进入 hibernate 模式的要点,可以做如下操作。

  • 调试 Hibernate 使用的数据源,尝试增加池大小并检查其中是否存在任何问题。
  • 定义连接的超时时间。 JBoss 有几个与此相关的配置,如 blocking-timeout-millisidle-timeout-minutes 等。
  • 声明一种机制来定期验证池中连接资源的 Activity 性。您可以探索 OracleStaleConnectionChecker 的选项。
  • 在池中配置最小连接数。这很重要,因为当所有过时的连接都被丢弃时,空池需要预先填充并准备好 Activity 连接。

关于插入/删除操作和 SQL 锁定状态的性能,请尝试重新排序您在每次请求时向 DB 触发的查询的顺序。这可能不是死锁情况,但正确排序数据库查询肯定会导致更少的锁定时间和更好的性能。

这个答案可能对你有用。 Hibernate: Deadlock found when trying to obtain lock

您开发的 Web 服务可能需要一些性能优化才能达到标准。以下是您可以采取的前几个步骤来提高性能。

  • 避免嵌套循环。迭代 lust 中的每个额外参数都会以指数方式增加 lopp 的阶数。
  • 移除对象的早期初始化。这可能会导致不必要的长时间 GC 周期。

除了上述优化之外,还有多种框架和工具可为您服务,以评估代码质量及其性能。 PMD、FindBugs、JMeter、Java 探查器只是其中的一小部分。

希希尔

关于java - 使用 Java、Apache Axis2、Hibernate 和 MySQL 的 Restful Webservices 及其性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847525/

相关文章:

mysql - mysql中没有插入数据

mysql - 根据 2 个电子邮件地址查找列的重复条目

java - CXF选择性服务曝光

Java:使用带有箭头键的击键

java - 为什么由返回另一个静态变量的方法调用初始化的静态变量仍然为空?

java - 对这个泛型用例感到困惑

mysql - 在 Symfony 1.4 中使用 "Having Count"构建对等查询

java - 代号一网络服务 SOAP 调用不起作用

java - 从 .Net 调用 Java Web 服务

java - 如何在 JerseyTest 套件中使用 @BeforeClass 和 @AfterClass