프로그래밍 방식으로 WAR/EAR을 중지 할 수있는 방법이 있습니까?WAR/EAR을 프로그래밍 방식으로 종료하는 방법
시작/구성 프로세스 중에 문제가 발생하면 응용 프로그램 배포를 중단해야합니다.
우리의 애플리케이션은 JBoss AS 7 및 Websphere 7/8에서 실행되어야하기 때문에 가능하면 솔루션은 크로스 서버와 호환되어야합니다.
현재 응용 프로그램이 JBoss에서 시작되지 않고 배포 중에 알 수없는 오류가 발생하며 해당 데스 위치에서 로더가 사라지지 않습니다. 내 ServerHttpServlet를 파괴하고있어하지만, 내가 저지 서블릿을 파괴 할 수없는있어 보인다 구성
에서 몇 가지 오류를 시작하지만 은 웹 스피어에 응용 프로그램이 시작됩니다. 이 구현하는 방법에 대한 아이디어?
web.xml의
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Server</display-name>
<servlet>
<description></description>
<display-name>ServerHttpServlet</display-name>
<servlet-name>ServerHttpServlet</servlet-name>
<servlet-class>com.transactionservice.service.ServerHttpServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<description></description>
<servlet-name>Jersey Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<description></description>
<param-name>javax.ws.rs.Application</param-name>
<param-value>callers.REST_Application</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>com.transactionservice.service.ServerServletContext</listener-class>
</listener>
</web-app>
callers.REST_Application
package callers;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import com.exictos.callers.DEBUG_CONFIG;
import com.exictos.log4j.LoggerCommon;
public class REST_Application extends Application
{
private static final LoggerCommon logger = new LoggerCommon(REST_Application.class);
public REST_Application()
{
}
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> classes = null;
try
{
// The available REST services
classes = new HashSet<Class<?>>();
classes.add(API_CALL_REST.class);
classes.add(API_CALL_REST_ENC.class);
classes.add(API_CALL_CONFIG.class);
classes.add(API_CALL_ABOUT.class);
classes.add(DEBUG_CONFIG.class);
}
catch(Exception e)
{
logger.error("", e);
}
return classes;
}
}
com.transactionservice.service.ServerServletContext
package com.transactionservice.service;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.exictos.exception.ApplicationLoadingException;
public class ServerServletContext implements ServletContextListener
{
@Override
public void contextInitialized(ServletContextEvent aServletContext)
{
//THIS IS JUST AS TEST EXAMPLE TO SEE IF WOULD WORK
throw new RuntimeException(e);
}
@Override
public void contextDestroyed(ServletContextEvent aServletContext)
{
System.out.println("------------------");
}
}
응용 프로그램 종료가 의미하는 바를 약간 명확하게해야합니다. 관리 도구에서 중지 된 것으로 표시 (하드)하거나 요청하지 않습니다 (ServletFilter에서는 간단 함). 그러나 나에게는 배포 문제를 인식하는 것이 여전히 어려워 보인다. 특히 신뢰성있게 * 모든 것을 인식하고 싶다면 –
JBoss에서 현재 일어나고있는 관리 도구에서 이상적으로 정지 된 것으로 표시되어야합니다. –