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

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

时间: 2024-11-09 03:51:40

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

Jboss7.1中部署webservice的问题-1

(1)使用web容器模式在jboss中部署web service 通常会报无法找到相应的类的错误,(这里如果没有web.xml的话就无法部署也不会出现下面错误) Not installing optional component org.jboss.as.quickstarts.wshelloworld.OrderServiceImpl due to exception: java.lang.ClassNotFoundException: org.jboss.as.quickstarts.wsh

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

服务器环境 jdk1.8.0_212 + jboss-eap-6.4  系统是 Service 2008 R2 数据服务器 oracle12c  系统是 Service 2008 R2 首先安装的oracle数据库的时候,基本没啥大问题,参考步骤:http://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 安装好之后,配置下环境变量参考:http://jingyan.baidu.com/article/e73e26c0c20f1a

在jboss上部署web应用

1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Transaction Service / Java Transaction API) Servlet and JSP (JavaServer Pages) JNDI (Java Naming and Directory Interface) 它还提供一些高级特性,比如集群.JMX.Web Servic

CentOS6.5中部署java web环境

原来在linux中部署java web环境,没有做好总结,这次在部署的过程中,将部署的过程做了记录,希望对大家有帮助.主要内容包括CentOS安装以后的网络设置,系统自带jdk的卸载,新版本jdk的安装,tomcat的安装部署. 一 CentOS的网络设置 利用桥接模式,让CentOS连接到网络. Vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改onboot=yes 保存退出 Ifconfig命令查看网络情况 可以看到ip地址 这时就能够ping通外

在Ubuntu中部署并测试HyperLedger Fabric

最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来了,所以打算对区块链2.0,也就是智能合约入手. 智能合约比较成功的就是以太坊了.以太坊主要是公有链,其实对企业应用来说并不是特别合适,而且本身并没有权限控制功能,面向企业的,主要还是超级账本HyperLedger的Fabric和刚刚开源出来的R3的Corda.关于这些项目的应用场景和区别,我觉得这

在Tomcat中部署Web应用的方式

在Tomcat中部署Web应用的方式有以下几种: 利用Tomcat的自动部署 将一个Web应用复制到Tomcat的webapps下,系统将会把该应用部署到Tomcat中.这是最简单.最常用的方式. 利用控制台部署 启动Tomcat,在命令行执行窗口中,cd D:\Program Files\Java\apache-tomcat-8.0.23\bin,然后startup.bat 浏览器登录http://localhost:8080 进入Manager App控制台(需要在D:\Program Fi

Linux服务器上的tomcat中部署web项目

首先了解一下下面几个概念,讲得不太准确: 1.JVM JVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class和jar文件.你可以通过-classpath参数指定你需要加载的jar文件 2.JDK JDK就是JAVA的命令行开发环境,内置了JVM,特征就是javac命令,这个命令允许你将.java源文件批量或者单个编译成.class文件,从而可以通过JVM的java命令执行.在编译时你可以通过-clas

Eclipse中部署hadoop2.3.0

1 eclipse中hadoop环境部署概览 eclipse 中部署hadoop包括两大部分:hdfs环境部署和mapreduce任务执行环境部署.一般hdfs环境部署比较简单,部署后就 可以在eclipse中像操作windows目录一样操作hdfs文件.而mapreduce任务执行环境的部署就比较复杂一点,不同版本对环境的要求度 高低不同就导致部署的复杂度大相径庭.例如hadoop1包括以前的版本部署就比较简单,可在windows和Linux执行部署运行,而hadoop2 及以上版本对环境要求

Java Web开发: Tomcat中部署项目的三种方法

web开发,在tomcat中部署项目的方法: 注意大小写 1.在conf目录中新建Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了,改xml文件的内容为: <Context path="/qxmobile"  docBase="/usr/local/webroot/qxmobile" reloadable="false"  debug="0" p