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标准接口的一个实现而已?

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

  • 相关阅读:
    js获取前一页面连接的参数值
    window.onload()函数和jQuery中的document.ready()有什么区别
    jquery中$.get()提交和$.post()提交有区别吗?
    JQuery有几种选择器?
    jQuery 库中的 $() 是什么?
    JavaScript内置可用类型
    .JS 中 == 和 === 区别是什么
    undefined,null 和 undeclared 有什么区别
    JS中如何将页面重定向到另一个页面
    数据库设计中,一对多如何处理?
  • 原文地址:https://www.cnblogs.com/surprizeFuture/p/deployJar.html
Copyright © 2011-2022 走看看