设为首页 收藏本站
查看: 841|回复: 0

[经验分享] 深入浅出Jetty嵌入式服务器教程

[复制链接]

尚未签到

发表于 2017-2-27 08:14:54 | 显示全部楼层 |阅读模式
  引言: 在使用artifactory搭建Maven私服时,发现artifactory使用了jetty做为嵌入式中间件,配合内存数据库,将JEE的web应用程序做得像windows程序一样,只要双击一个.bat脚本就可以启动服务了,用老罗的话说就是:“太方便了”,但其归功于jetty的使用,下面就介绍下怎样把web程序做的像本地程序一样。
  此篇教程需有Maven使用基础,如不太了解可以参考我的Blog中关于Maven使用的部分。
  归正传,在开始之前,首先需要将Jetty资源加入到应用程序中,在工程的pom.xml文件的<dependencies>中添加如下依赖:

<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>${jetty-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-el</groupId>
<artifactId>commons-el</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.6.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xmlParserAPIs</artifactId>
<version>2.6.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
<version>5.5.15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler-jdt</artifactId>
<version>5.5.15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
<version>5.5.15</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl104-over-slf4j</artifactId>
<version>1.3.1</version>
<scope>provided</scope>
</dependency>
  在<dependencies>外添加properties值来指定jetty的版本

<properties>
<jetty-version>6.1.7</jetty-version>
</properties>
  然后在工程路径下执行mvn eclipse:eclipse命令来添加jetty依赖。
  接下来在工程根目录下添加jetty文件夹,存放jetty的服务配置。文件为jetty.xml和realm.properties(文件包jetty配置文件.rar可在结尾处下载)
  其中在jetty.xml文件中配置应用信息,如:

    <!-- ======================================================= -->
<!-- Configure application                                   -->
<!-- ======================================================= -->
<New id="application" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/BISP</Set>
<Set name="war">src/main/webapp</Set>
<Get name="SessionHandler">
<Set name="SessionManager">
<New class="org.mortbay.jetty.servlet.HashSessionManager">
<Set name="maxInactiveInterval">1600</Set>
</New>
</Set>
</Get>
</New>
  contextPath为服务的根路径,war为web应用路径。
  然后在工程中添加jetty的启动类,在此类的main方法中启动服务。此类内容如下:

/**
* 类说明: 启动Jetty服务器<br>
* 创建时间: 2008-6-4 上午11:27:06<br>
*
* @author seraph<br>
* @email: seraph115@gmail.com<br>
*/
public class Main {
/**
* 功能说明:<br>
* 创建者: seraph<br>
* 创建时间: 2008-6-4 上午11:27:07<br>
*
* @param args
*/
public static void main(String[] args) {
Server server = null;
try {
String applicationHome = System.getProperty("application.home");
if (applicationHome == null) {
applicationHome = System.getProperty("user.dir");
}
if (applicationHome != null) {
applicationHome = applicationHome.replace('\\', '/');
}
URL configUrl = new URL(new StringBuffer().append("file:").append(
applicationHome).append("/jetty/jetty.xml").toString());
XmlConfiguration xmlConfiguration = new XmlConfiguration(configUrl);
server = new Server();
xmlConfiguration.configure(server);
server.start();
} catch (Exception e) {
System.err.println(new StringBuffer().append(
"Could not start the Jetty server: ").append(e).toString());
if (server != null) {
try {
server.stop();
} catch (Exception e1) {
System.err.println(new StringBuffer().append(
"Unable to stop the jetty server: ").append(e1)
.toString());
}
}
}
}
}
  至此,在开发调试或应用发布时只需使用java运行此类即可。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-347633-1-1.html 上篇帖子: Maven 环境快速搭建二(eclipse+maven2+jetty)(转) 下篇帖子: m2eclipse实例2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表