zoukankan      html  css  js  c++  java
  • 在jboss中部署可执行jar, deploy executable jar in jboss

        首先,题目是个伪命题, jboss容器是不支持直接部署可执行jar包的,jar只会被加载当作lib对待。这里提供了一个小的变通方案。

        今天我遇到个问题,把我们的项目中的监控模块独立成一个小项目部署,监控逻辑比较简单,这个小项目的实现只依赖了常用的一些jar包和spring jdbcTemplate.

    所以我一直不想把部署搞的太复杂,直接写main()入口部署jar是最理想的。 但如上,jboss不支持。

        只能改造成web项目打war包,在纠结用哪个框架实现servet 监听及启动入口时, 灵机一动,为何不自己写一个servletlistener.

        下面开始:把项目改成web结构不必多说, 之后开始实现一个servlet listener, 很简单,只要继承ServletContextListener就像, 然后把启动代码贴到contextInitialized里面。

    public class StartMonitor implements ServletContextListener{
    @Override
    public void contextInitialized(ServletContextEvent sce) {
    //这里写原来executable jar的main方法逻辑
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
    }

          在web.xml中配置上listener., 一切搞定。 打成war包就可运行了

    <web-app>

    <listener>
        <listener-class>
              ${pakagePath}.StartMonitor
         </listener-class>
    </listener>

    </web-app>

        

         回头看,其实这个解决方案很平常, 只是由于我对servlet容器的运行原理一知半解,总是觉得运行一个web必须离不开spring Listener那种类似的东西,要引入许多组件等等。 但实质上,servlet本身非常简洁? 只是提供了一系列标准接口供第三方扩展(比如listener),任何人都可以随意按需实现这些接口。

    更进一步,在web中常用的组件struts2, spring,spring mvc只不过是高手们根据经验对servlet标准接口的一个实现而已?

         因为新手一开始接触就是各种框架啥的,反而容易忽略其最基本的原理。谨此提醒!

  • 相关阅读:
    浅谈css中的盒模型(框模型)
    Linux 字符设备驱动及一些简单的Linux知识
    java实现person类 override(重写) comparable接口
    java之内部类
    mac下sublime text3 安装px转rem插件
    python pip安装扩展报错
    curl http_code 状态码
    sed 批量替换文件
    centos 7 开机优化shell
    一个tcp连接可以发多少http请求
  • 原文地址:https://www.cnblogs.com/surprizeFuture/p/deployJar.html
Copyright © 2011-2022 走看看