jetty server jar包单独运行web工程的问题

龙影 发布于 2012/10/25 13:45
阅读 6K+
收藏 0

在JFinal开发了一个web项目,想直接利用JFinal提供的jetty-server-6.0.jar来独立运行下项目,

Server启动类:

import com.jfinal.core.JFinal;

/**
 * 服务器启动管理
 * @author loyin
 *
 * 2012-10-21
 */
public class Server {
	public static void main(String[] args) {
		String webAppDir=Server.class.getResource("").getPath().replace("/WEB-INF/classes/", "");
		int port=81;
		String content="/";
		if(args!=null&&args.length>0){
			try{
			port=Integer.parseInt(args[0]);
			content=args[1];
			}catch(Exception e){}
		}
		try{
			JFinal.start(webAppDir.substring(1), port,content, 10);
		}catch(Exception e){e.printStackTrace();}
	}
}

直接使用dos命令来执行。

命令如下:

将命令目录切换到WEB-INF/classes目录

执行命令:java -classpath "../lib内所有的jar文件" Server

java命令已经执行了并且可以运行,但是运行不到2秒就自动退出了命令 也无提示。

请大牛指点。

运行截图

完整执行命令为:


java -classpath "../lib/activation-1.1.jar;../lib/activiti-engine-5.9.jar;../lib/activiti-spring-5.9.jar;../lib/antlr-3.3.jar;../lib/aopalliance-1.0.jar;../lib/asm-3.2.jar;../lib/asm-analysis-3.2.jar;../lib/asm-commons-3.2.jar;../lib/asm-tree-3.2.jar;../lib/asm-util-3.2.jar;../lib/commons-codec-1.3.jar;../lib/commons-collections-3.1.jar;../lib/commons-dbcp-1.4.jar;../lib/commons-email-1.2.jar;../lib/commons-io-2.0.1.jar;../lib/commons-lang-2.4.jar;../lib/commons-logging-1.1.1.jar;../lib/commons-pool-1.5.4.jar;../lib/cos-26Dec2008.jar;../lib/cron4j-2.2.5.jar;../lib/druid-0.2.6.jar;../lib/ehcache-core-2.5.2.jar;../lib/freemarker-2.3.16.jar;../lib/gson-2.2.2.jar;../lib/imgscalr-lib-3.1.jar;../lib/jackson-core-asl-1.4.3.jar;../lib/jackson-mapper-asl-1.4.3.jar;../lib/javassist-3.16.1-GA.jar;../lib/jetty-server-6.1.26.jar;../lib/jfinal-1.1.3-bin-with-src.jar;../lib/jsoup-1.6.1.jar;../lib/livetribe-jsr223-2.0.6.jar;../lib/log4j-1.2.16.jar;../lib/mail-1.4.1.jar;../lib/mybatis-3.0.6.jar;../lib/mysql-connector-java-5.1.20-bin.jar;../lib/neethi-2.0.4.jar;../lib/org.osgi.core-4.2.0.jar;../lib/pinyin4j-2.5.0.jar;../lib/poi-3.7-20101029.jar;../lib/powermock-mockito-1.4.12-full.jar;../lib/qrcode.jar;../lib/quartz-2.1.5.jar;../lib/spring-aop-3.0.3.RELEASE.jar;../lib/spring-asm-3.0.3.RELEASE.jar;../lib/spring-beans-3.0.3.RELEASE.jar;../lib/spring-context-3.0.3.RELEASE.jar;../lib/spring-core-3.0.3.RELEASE.jar;../lib/spring-expression-3.0.3.RELEASE.jar;../lib/spring-jdbc-3.0.3.RELEASE.jar;../lib/spring-orm-3.0.3.RELEASE.jar;../lib/spring-test-3.0.3.RELEASE.jar;../lib/spring-tx-3.0.3.RELEASE.jar;../lib/spring-web-3.0.3.RELEASE.jar;" Server


加载中
0
南湖船老大
南湖船老大
个人表示,你这种玩法没见过
0
JFinal
JFinal

    非常抱歉,最近一直很忙, OSC上的问答,我一个都没回。

    实现你这个需求最简单的做法是,下载一个完整的jetty,将项目放jetty的webapps下或者通过在contexts下面创建配置文件指向项目。然后写个脚本启动 jetty 就可以了,或者直接使用bin目录下已有的脚本启动jetty。

    原则是:通过脚本启动 jetty即可,让 jetty知道项目,而不是让项目知道jetty。

    JFinal 手册中推荐的启动方式能在 eclipse 下工作,是因为 eclipse本身解决了各类 jar 依赖的问题。如果要使用这种方式在控制台下启动项目,需要做很多其它工作,还不如上面介绍的办法好。搞定后请反馈一下 

龙影
龙影
这个我当然明白咯 ,我主要考虑到简单启动嘛 降低维护成本
0
龙影
龙影
此问题已经解决,当时发生能够执行但是又自动断开的情况,但之后在未修改程序及命令的情况下,居然可以使了,而且现在一直还正常。这个现象我也一时无法理解了。
郭恩洲_OSC博客
郭恩洲_OSC博客
请问这个解决了么 给个示例研究下
0
JFinal
JFinal

引用来自“龙影”的答案

此问题已经解决,当时发生能够执行但是又自动断开的情况,但之后在未修改程序及命令的情况下,居然可以使了,而且现在一直还正常。这个现象我也一时无法理解了。
写篇博文分享出来啊,一个jar 包可走天涯了啊
0
b
barret
正在研究中。决定在jetty下启多个实例。
0
JFinal
JFinal

引用来自“barret”的答案

正在研究中。决定在jetty下启多个实例。
别忘了分享给大家 :)
0
b
barret

1:直接修改${JETTY_HOME}/etc/jetty.xml的配置来部署应用

2:把war包扔到${JETTY_HOME}/webapps目录中,自动被WebAppDeployer发现去部署

3:在${JETTY_HOME}/contents中增加一个配置文件(模仿test.xml的配置),由ContextDeployer自动发现去部署

返回顶部
顶部