2014-05-09 15 views
5

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("------------------"); 
    } 
} 
+0

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 –

+0

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. –

Trả lời

0

Hãy xem xét số JSR-88 - Application Deployment. Một WebSphere QuickStart can be found here. Lưu ý rằng Wildfly removed JSR-88 support.

Dừng lập trình một cách triển khai cũng có thể được thực hiện with cargo.

Tôi không thực sự chắc chắn bạn muốn làm gì nhưng tôi cho rằng cách thức người dùng hoặc quy trình triển khai ứng dụng nên xác minh rằng triển khai đã hoạt động và không triển khai theo cách tương tự nếu không.

0

Thông thường triển khai được khôi phục nếu có sự cố trên hầu hết các máy chủ. Nhưng nếu bạn vẫn muốn chắc chắn rằng bạn chỉ có thể sử dụng lệnh system.exit trong mã init của bạn.

Các vấn đề liên quan