【发布时间】:2015-12-26 07:13:13
【问题描述】:
我是新的 Java Web 服务程序员,我想知道为什么当我打开 2 个网页时会看到创建了 2 个服务实例(一个在 localhost 上,另一个来自使用服务器 PC 的 IP 的另一台 PC地址和网络服务 URL)。
堆栈详细信息:使用 Tomcat,Windows 7 PC 下的 Java Web 服务。
我有一个连接到内部黑匣子的小型 Web 服务。每次我打开 Web 服务并打开与之关联的 URL 时,我都可以从黑匣子中看到详细信息。问题是,当我有 2 个网页向 Web 服务打开时(一个在 localhost 上,另一个来自使用服务器 PC 的 IP 地址和 Web 服务 URL 的不同 PC),我看到正在创建的服务的两个实例正在尝试同时连接一个黑匣子。我需要能够远程或本地启动到黑匣子的连接。但是,只有本地主机连接应该获胜。我尝试创建一个 servlet 以在 Tomcat 启动时启动该服务,但运气不佳。使用 servlet,我看到我的自动装配数据源连接为空。
对此的任何想法都会有所帮助。
@Repository 公共类 HServiceDAO {
@Autowired
private DataSource mySql_dataSrc;
web.xml
<servlet>
<servlet-name>StartWebApp</servlet-name>
<servlet-class>com.StartWebApp</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
【问题讨论】:
-
您是否将服务创建为单例?还要注意 servlet 本身不是单例的:stackoverflow.com/questions/11820840/is-servlet-the-singleton
-
将尝试将其创建为单例。根据这篇文章,该服务作为单例运行,是吗? stackoverflow.com/questions/11096310/…
-
是的,您可以使用静态变量,或者让 Spring 为您完成工作。
-
我正在尝试让 Spring 使用 @Autowired 完成工作
标签: tomcat servlets web service autowired