gpt4 book ai didi

java - spring或servlet请求范围问题

转载 作者:行者123 更新时间:2023-12-04 06:24:29 25 4
gpt4 key购买 nike

我使用 java、spring-ws 并有一个 Web 服务。

每次我运行时向我的 Web 服务发出一个新请求,我都希望一切都重置并且所有变量都是新的并且为空。所以我在我的 web 服务的 application-context.xml 中添加了“scope=request”,但我仍然保留了我之前请求中的变量值(甚至不是静态变量)。

我的 Web 服务(作为 jar 文件)被用作另一个主要 Web 项目的插件。我引用了我的网络服务 来自主 Web 项目的 web.xml 像这样的文件;

<servlet>
<servlet-name>mws</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/resources/webservice/applicationContext-WebService.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

同样在这个 web.xml 中,我为主项目定义了另一个调度程序 servlet,它是否有可能创建 2 个 spring 容器并且它们相互干扰?

这就是我在 Web 服务的 appcontext.xml 文件中定义范围的方式:
<bean id="infService" class="com.ws.im.InfService" scope="request">
<property name="webServiceConfiguration" ref="wsConfiguration" />

<property name="properties">
<bean class="com.ws.PropertyResource">
<property name="resource" value="/WEB-INF/clientspecific/Inf.properties" />
</bean>
</property>

</bean>

所以我想每次我运行我的主 web 项目时,它都会在我的 web 服务的 app context.xml 文件开始时加载一次,无论我改变它的范围它都不起作用,因为主项目定义了范围?我可以在上面定义 servlet 的范围吗?或者这个想法是完全错误的,我在我的 web 服务配置 xml 中做错了什么?

谢谢

最佳答案

我认为您可能在其他地方出错了,因为您的配置看起来不错。

你能在com.ws.im.InfService的构造函数中添加一些代码吗? :

java.util.logging.Logger.getAnonymousLogger().info(
"Instantiated, identity [" + System.identityHashCode(this) +"]");

如果请求范围正常工作,这应该为每个请求打印不同的身份字符串。

编辑:

需要添加 <aop:scoped-proxy/>到 bean 定义

关于java - spring或servlet请求范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6200722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com