gpt4 book ai didi

java - Spring *-servlet.xml 在 Websphere 服务器启动时未加载

转载 作者:行者123 更新时间:2023-11-30 07:10:15 25 4
gpt4 key购买 nike

我一直在尝试在服务器启动后立即运行一个方法。 (根据我的理解,问题可能是服务器启动或重新启动时未加载上下文)。 下面的内容适用于 Tomcat 感觉 Websphere 正在执行不应该的惰性初始化

当我在 Websphere 上部署组件或重新启动它时,除非我点击 URL,例如“http://localhost/myapp/”,否则不会加载上下文

我尝试了3种方法来运行该方法

  1. Scheduling
@EnableScheduling
public class MyClass{

MyClass(){
}

@Scheduled(cron = "2 * * * * *")
public void myMethod() {
}
  1. Init
<bean id="myClass" class="com.abc.abc.billing.myClass"   init-method="readConfigScheduler"/>
  1. ApplicationListener
@Component
public class StartUp implements ApplicationListener<ContextRefreshedEvent>
{
@Autowired
private MyClass cls;
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0)
{
System.out.println("ContextLoaded");
cls.MyMethod();
}
}

当我点击 URL“http://localhost/myapp/”时,上述三种方法都有效。

我已经尝试过以下链接寻求帮助,但我无法使其工作。

Execute method on startup in spring

applicationContext.xml is not getting loaded when I have kept the spring-servlet.xml in Web application

我还和几个人交谈过,他们说当他们尝试时它可以工作,但在后来的调查中我发现当你通过 eclipse 部署应用程序时,它会自动打开应用程序的 url 来加载上下文。

所以当我们重新启动应用程序时它不起作用

My Web.xml looks something like this

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>MyApp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/MyApp-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<session-config>
<session-timeout>60</session-timeout>
</session-config>

我对 Spring 很陌生,所以任何帮助都会很好

最佳答案

似乎您遇到了与此 question 中描述的相同问题

默认情况下,websphere 通过在收到 Web 应用程序请求之前不启动 servlet 来优化服务器启动时间和内存使用,如果您想在安装 Web 应用程序时加载 servlet,请将以下行添加到 server.xml 配置文件或其包含的文件:

<webContainer deferServletLoad="false"/>

关于java - Spring *-servlet.xml 在 Websphere 服务器启动时未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343523/

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