首先,题目是个伪命题, 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. 被动路由跟踪工具InTrace

    被动路由跟踪工具InTrace   InTrace是一款类似于Traceroute的路由跟踪工具.但它不同的是,他不主动发送数据包,而是通过监听当前主机和目标主机的数据包,进行分析,从而获取路由信息. ...

  2. JNA 相关问题

    JNA 相关问题 结构体对齐问题 要注意调用的c库字段对齐方式的相关设置. #pragma pack (push,1) #pragma pack(pop) jna中提供了4种对齐方式: /** Use ...

  3. go语言:函数参数传递详解

    参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程.比较常见的参数传递有:值传递,按地址传递参数或者按数组传递参数. 1.常规传递 使用普 ...

  4. eclipse主题下载网站

    http://eclipsecolorthemes.org/

  5. objective-c 类目(Category)和延展(Extension)

    类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法 ...

  6. 邁向IT專家成功之路的三十則鐵律 鐵律九:IT人社群互動之道-縮小自己

    身為一位專業的IT人士所要學習的東西實在非常的多,然而對於時間相當有限的我們,最快速的學習方法就是向他人學習,而向他人學習的首要態度就是「縮小自己」.唯有將自己縮小到別人的眼睛裡,才能夠讓他們真心誠意 ...

  7. git 强制覆盖,分支合并

    强制合并 git fetch --all && git reset --hard origin/master && git pull 合并代码 git commit - ...

  8. WinDbg加载不同版本CLR

    WinDbg调试.net2.0和.net4.0程序有所不同,因为.net4.0使用新版本的CLR.例如: mscoree.dll 变为 mscoree.dll 和 mscoreei.dll, msco ...

  9. C#使用WebBrowser对指定网页截图

    使用webbrowser获取html,然后输出的位图即可. WebBrowser wb = new WebBrowser(); // 创建一个WebBrowser wb.ScrollBarsEnabl ...

  10. Springmvc返回信息乱码解决

    恩...基本上所有的配置信息都弄上了,但是还是乱码,最后在方法上面添加了下面的参数,就完美解决了: @RequestMapping(value="/action.action",m ...