`
hoorace
  • 浏览: 7003 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

定制Jetty8方式启动web应用

阅读更多

1:Jetty的4种web应用部署方式(不包括嵌入启动):

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

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

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

4:定制部署启动配置文件;

    前面3中部署方式在Jetty7的部署方式中讲述的较为清楚。


2:定制化启动Jetty:

    由于我们每个应用需要不同端口启动,这样在停止A应用的情况下,B应用不会受到影响。同时,我们希望在每台服务器上只有一份jetty,每个应用的配置文件应该是独立的。

2.1:jetty容器配置文件

    在start.ini中配置了etc/jetty.xml , etc/jetty-webapps.xml (WebAppDeployer),etc/jetty-contexts.xml(ContextDeployer)三个文件,代表在默认情况下启动jetty,web应用3种部署都是支持的。WebAppDeployer则是会扫描${JETTY_HOME}/webapps目录,寻找war包并部署;ContextDeployer会扫描${JETTY_HOME}/contents目录,找到可以部署的context配置文件并部署。

    所以定制jetty之前,我们需要在start.ini中把这3行注释掉。

2.2:web应用配置

    复制${JETTY_HOME}/etc/jetty.xml文件到bin目录下面,修改port和confidentialPort为自己应用的端口号。在<Array type="org.eclipse.jetty.server.Handler">中添加需要部署的war包得Item,如下注意(contextPath和war值):

     <Item>

               <New class="org.eclipse.jetty.webapp.WebAppContext">

                    <Set name="contextPath">/aaa</Set>

                    <Set name="war">/opt/longtask/aaa/webapps/aaa.war</Set>

                    <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>

                    <Set name="extractWAR">true</Set>

                    <Set name="copyWebDir">false</Set>

                    <Call name="addServlet">

                         <Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>

                         <Arg>/</Arg>

                    </Call>

               </New>

           </Item>

2.3:启动应用(省略相关sh脚本)

JETTY_CONFIG="${PWD}/jetty-${APP_NAME}.xml ${PWD}/jetty-logging.xml"

JETTY_OPTS="-jar ${JETTY_HOME}/start.jar –pre=${JETTY_CONFIG}"

java -server $JDK_OPTS $JETTY_OPTS >/dev/null 2>&1 &

2.4:OPTIONS的说明


在jetty8中通过java -jar start.jar –version命令可以查看到默认启动的OPTIONS:

Active Options: [Server, annotations, ext, jdbc, jmx, jsp, jta, plus, resources, websocket]

如果要启动其他OPTIONS,需要自己添加。



3:FAQ:

3.1:无法启动,报端口错误:
Caused by: java.net.BindException: Address already in use

        at sun.nio.ch.Net.bind(Native Method)

        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)

        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)

        at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:172)

        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:300)

        at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:250)

        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)

        at org.eclipse.jetty.server.Server.doStart(Server.java:273)

        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)

        at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1203)

        at java.security.AccessController.doPrivileged(Native Method)

        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1126)

通过lsof -i:port来查看端口是否被占用,如果被占用,需要修改jetty配置文件中的port来启动

3.2:在去掉start.ini中注释掉jetty.xml后,制定自己的jetty.xml后报错。

问题:

java.io.FileNotFoundException: Unable to find XML Config: etc/jetty.xml

        at org.eclipse.jetty.start.Main.resolveXmlConfig(Main.java:671)

        at org.eclipse.jetty.start.Main.resolveXmlConfigs(Main.java:888)

        at org.eclipse.jetty.start.Main.start(Main.java:508)

        at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:265)

        at org.eclipse.jetty.start.Main.main(Main.java:79)

需要在–pre中添加启动项,不是在-jar start.jar后面添加

3.3:网上说war包需要解压缩,是错误的,jetty8不需要解压的。


4:参考文档:

Serving Webapp A Only from Port A and Webapp B Only from Port B

Running Jetty-7.0.x
Jetty/Reference/jetty.xml syntax

 

分享到:
评论

相关推荐

    JettY 部署Web应用程序.doc

    动态部署的XML配置文件使用与Jetty XML配置相同的语法,允许灵活控制Web应用的配置,如设置上下文路径、定制Servlet映射、配置过滤器等。通过修改配置文件的最后修改时间,可以触发Jetty重新加载配置,从而实现Web...

    jetty8+ 内嵌式启动运行demo

    总的来说,Jetty 8的内嵌式启动运行使得开发和测试Web应用变得更为便捷,同时提供了高度的定制性和灵活性。理解并掌握这种启动方式,对于提升你的Java Web开发技能大有裨益。通过实践和查阅源码,你可以更深入地探索...

    jetty8打包成服务(支持32,64位系统)

    Jetty8是一款轻量级的Java Web服务器和Servlet容器,它允许开发者快速部署和管理Web应用程序。本教程将详述如何在32位和64位操作系统上将Jetty8打包成服务,以便于系统启动时自动运行或通过服务管理工具进行控制。 ...

    应用服务器jetty8.0

    Jetty 8.0是Java应用服务器的一种,主要用于托管Web应用程序。它是一个开源项目,以其轻量级、高效和易于集成的特点在开发社区中受到欢迎。Jetty支持Servlet 3.0规范,提供了对WebSocket协议的早期支持,这在当时是...

    jetty-distribution-8.1.8.v20121106

    Jetty是一个轻量级、高性能且开源的Java Web服务器和HTTP服务器库,广泛用于开发、测试和部署Web应用程序。在此次讨论中,我们关注的是Jetty的8.1.8.v20121106版本。这个版本是Jetty 8系列的一个发行版,发布于2012...

    eclipse中配置使用jetty调试web项目

    这段配置将Jetty服务器监听8080端口,并且在"/myapp"路径下部署名为"myapp"的Web应用。 4. **启动和调试**: - 在配置好服务器和Web项目后,右键点击服务器,选择"Start"启动Jetty。 - 你可以通过Eclipse的内置...

    jetty-6.1.26.zip

    7. **部署和管理Web应用**:Jetty支持多种方式部署Web应用,包括WAR文件、目录结构、甚至直接从类路径加载。管理工具如jetty-admin和jetty-console可以帮助开发者监控和控制服务器状态。 8. **连接器和适配器**:...

    jetty8.0.4

    8. **命令行启动**:使用`java -jar start.jar`命令即可启动Jetty服务器,这种方式简单易用,同时也支持通过JAR文件中的其他脚本进行自动化部署。 9. **社区活跃**:Jetty有一个活跃的开源社区,持续提供更新和维护...

    jetty-distribution-9.4.28.v20200408.zip

    通过配置这些文件,你可以定制Jetty的行为并部署你的Web应用。 总的来说,Jetty是一个强大且灵活的Web服务器,适用于快速开发、测试和部署Web应用程序。无论是在小型项目还是大型企业级应用中,它都能提供稳定和...

    jetty各个版本下载

    此外,Jetty还支持热部署,这意味着你可以在不重启服务器的情况下更新Web应用。 6. **Jetty与其他服务器的比较** 相比Apache Tomcat或其他服务器,Jetty在轻量级特性、内存使用效率和响应速度上有优势。特别是对于...

    jetty-distribution-8.1.21.v20160908.zip

    - Jetty的ContextHandler允许你独立地部署多个Web应用,每个都有自己的虚拟主机、配置和上下文路径。 安全性方面,Jetty支持基本的认证机制,如HTTP Basic Auth和Form-based Auth,还可以通过集成Spring Security等...

    jetty 插件

    3. **方便的配置**:通过插件配置文件(如`plugin.xml`),可以定制Jetty服务器的行为,例如设置端口、上下文路径、线程池大小等。 4. **集成开发环境**:许多IDE(如Eclipse、IntelliJ IDEA)支持Jetty插件,使得...

    Jetty

    通过修改`start.ini`文件或创建自定义的`jetty.xml`配置文件,可以定制Jetty的行为,例如设置端口、添加模块、调整日志级别等。 ### Jetty与源码分析 对于希望深入了解Jetty工作原理的开发者,阅读源码是很好的...

    HelloWorld之jetty运行

    通过以上步骤,我们成功地创建了一个基于Jetty的简单Web应用。从创建Java工程,导入依赖,设置Web目录结构,编写启动类,到测试JSP页面,每一步都是构建和运行Jetty应用的基础。这个例子展示了Jetty的易用性,也为...

    jetty的四个包

    它提供了一种便捷的方式来启动和管理Jetty实例,可以通过命令行参数或者配置文件来定制服务器的行为,如设置端口、添加模块、配置日志等。 在使用这些组件构建Jetty环境时,通常会将它们添加到项目的类路径中。...

    实战 Jetty--让你快速速学会jetty

    总结来说,Jetty是一个强大且灵活的HTTP服务器和Servlet容器,其易用性、可扩展性和易嵌入性使其成为Java开发者构建和部署Web应用的理想选择。无论你是初学者还是经验丰富的开发人员,Jetty都能提供高效、稳定且易于...

    Jetty Demo

    4. **启动Jetty**:通过执行启动脚本来启动Jetty服务器,这将加载并运行Web应用。 5. **测试应用**:在浏览器中输入`http://localhost:端口号/`(替换端口号为你的配置),查看示例应用是否正确运行。 在这个简单...

    jetty web程序

    对于简单的部署,可以使用`jetty-runner`工具,它允许你直接通过命令行启动Web应用程序。对于更复杂的配置,可以使用Jetty的API或XML配置文件来定制服务器行为。 总的来说,Jetty提供了一个灵活且可扩展的框架,...

    jetty入门

    同时,Jetty的生命周期管理也相当灵活,可以通过编程方式动态地添加、删除和重启Web应用。 对于初学者来说,入门Jetty可以按照以下步骤进行: 1. **环境准备**:确保已经安装了Java开发环境,因为Jetty是基于Java...

    jetty8.0.0包下载

    对于开发和测试环境,你可以直接将你的Web应用部署到webapps目录下,Jetty会自动识别并启动应用。 总的来说,Jetty 8.0.0作为一款强大的Web服务器,以其轻量、高效和灵活的特性,为开发者提供了构建和部署Java Web...

Global site tag (gtag.js) - Google Analytics