Có cách nào để dừng WAR/EAR theo chương trình không?Cách tắt WAR/EAR theo lập trình
Tôi cần ngừng triển khai ứng dụng nếu xảy ra sự cố trong quá trình khởi động/định cấu hình.
Nếu có thể, giải pháp phải tương thích với máy chủ chéo, vì ứng dụng của chúng tôi phải chạy trong JBoss AS 7 và Websphere 7/8.
Hiện tại, ứng dụng không khởi động trên JBoss, nó cung cấp Lỗi không xác định trong quá trình triển khai và trình tải không biến mất khi triển khai. Trên Websphere ứng dụng bắt đầu mặc dù nó khởi chạy một vài lỗi từ cấu hình
Dường như mặc dù tôi đang phá hủy ServerHttpServlet của mình, tôi không thể phá hủy servlet Jersey. Bất kỳ ý tưởng về cách thực hiện điều này?
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("------------------");
}
}
Có thể bạn nên rõ ràng hơn về việc tắt một ứng dụng có ý nghĩa gì với bạn: Đánh dấu là đã dừng trong công cụ quản trị (cứng) hoặc không yêu cầu (đơn giản với ServletFilter). Nhưng tuy nhiên với tôi nó vẫn có vẻ khó khăn hơn để nhận ra các vấn đề triển khai. Đặc biệt nếu bạn muốn * đáng tin cậy * nhận ra * tất cả * của chúng –
Lý tưởng nhất nó nên được đánh dấu là dừng lại trong công cụ quản trị, vì nó hiện đang xảy ra với JBoss. –