首先,题目是个伪命题, 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标准接口的一个实现而已?

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

在jboss中部署可执行jar, deploy executable jar in jboss的更多相关文章

  1. 在JBoss中部署GeoServer

    GeoServer一直就不能在 JBoss应用服务器中正常部署.最近我在一个国外的论坛上找到了该问题的解决方案.以下方法经测试,可以将GeoServer 2.1.3 成功部署在 JBoss 5.0 和 ...

  2. 使用Maven打包可运行jar和javaagent.jar的区别

    简介 javaagent 是 Java1.5 之后引入的新特性,其主要作用是在class被加载之前对其拦截,以插入我们的字节码. java1.5 之前使用的是JVMTI(jvm tool interf ...

  3. 可执行代码(Executable Code)目标代码(object code)

    小结: 1.可执行代码(Executable Code)是指将目标代码(object code)连接后形成的代码,简单来说是机器能够直接执行的代码. https://baike.baidu.com/i ...

  4. 记录JAVAWEB部署到JBOSS中遇到的问题

    服务器环境 jdk1.8.0_212 + jboss-eap-6.4  系统是 Service 2008 R2 数据服务器 oracle12c  系统是 Service 2008 R2 首先安装的or ...

  5. myelipse中部署路径deploy location出现错误

    背景: 因java_web项目中的所有代码以及资源文件突然无法提交,在尝试过诸多方法无果后,果断删除项目重新将down下来.启动Tomcat无问题,使用原来的访问连接报错.经检查发现加载至Tomcat ...

  6. IDEA中执行MAVEN命令打jar包

    SpringBoot Jar包打包 1.工程POM配置packaging为jar. <packaging>jar</packaging> 2.增加MAVEN运行配置 添加MAV ...

  7. jboss 7部署cas3.4.11

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. maven nexus deploy方式以及相关注意事项(增加eclipse执行maven deploy)

    以前公司都是配管负责管理jar的,现在没有专职配管了,得自己部署到deploy上供使用.总的来说,jar部署到nexus上有两种方式: 1.直接登录nexus控制台进行上传,如下: 但是,某些仓库可能 ...

  9. 在jboss上部署web应用

    1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...

随机推荐

  1. Java RandomAccessFile类

    RandomAccessFile类是Java中操作文件内容功能最强大的类,既可以读,也可以写. RandomAccessFile支持随机访问,可以直接访问文件的任意位置,在文件的任意位置读写数据.如果 ...

  2. 词典对象(NSDictionary和NSMutableDictionary)

    词典(dictionary)顾名思义就是同由键-值组成的数据集合.与在词典中查找单词定义一样,可以通过对象的键从词典中获取需要的对象,看到 这里,你是不是想起了java中的map?和NSArray一样 ...

  3. Ubuntu 安装 spark

    环境: Unbunt 12.04 Hadoop 2.2.x Sprak 0.9 Scala scala-2.9.0.final.tgz 步骤 1. 下载 scala 2. 解压scala,然后改动/e ...

  4. cocos2d-x-3.x bringToFront &amp; sendToBack实现

    void Node::bringToFront(void) { auto parent = this->getParent(); if (parent != nullptr && ...

  5. urllib(最基本的)库的应用

    Urllib库 python内置的http请求库 1.urllib.request 请求模块 2.urllib.error 异常处理模块(try,catch) 3.urllib.parse url解析 ...

  6. vs项目添加链接文件

    在vs2012(或以后版本)中,从一个项目中拖拽文件到另一项目,并按住alt键,会生成链接文件. 项目文件中会生成link节点. <ItemGroup> <Compile Inclu ...

  7. 【C语言】求两个数中不同的位的个数

    //求两个数中不同的位的个数 #include <stdio.h> int count_different(int a, int b) { int count = 0; int c = a ...

  8. JSTL简单介绍

    1.JSTL简单介绍: JSTL(JSP Standard Tag Library.JSP标准标签库)是一个不断完好的开放源码的JSP标签库.其提供两组标签,一组使用 EL(Expression La ...

  9. TCP/IP协议组学习笔记

    TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP ...

  10. OcelotAPI 简单使用—服务发现、流控

    我这人比较懒 直接上配置文件的图 其中serviceName是服务名称, LoadBalancer是负载均衡策略. 对于流控我为了做测试写的1s 限制5次请求. 剩下的看名字就OK了. 要使用服务发现 ...