`
zhangjunji111
  • 浏览: 47958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

直接在ECLIPSE中JETTY调试方式

 
阅读更多

1.创建项目

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

也可参看这里

创建要注意遵循MAVEN的目录结构,尤其要注意源文件要放在main/java下:



2. POM文件的配置

这里要特别注意对resource一节的配置,因为我的SPRING以及WEB相关的XML是放在WEB-INF目录,为了在unit test的时候也能用,加入了对这些配置文件的引用。相当于加了一个classpath。

这里还有个插曲:不知为何MAVEN2里没有JTA的包,自动下载时会有提示教你如何手工通过命令加入,非常简单。

JETTY的plugin是为后面用它来调试做准备。

DWR也是目前WEB开发一个热选。

另外,为使用JAVA5代来编译,加入了maven-compiler-plugin一节。

< project  xmlns ="http://maven.apache.org/POM/4.0.0"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" >
  
< modelVersion > 4.0.0 </ modelVersion >
  
< groupId > com.exchangebit.nms </ groupId >
  
< artifactId > ebnms </ artifactId >
  
< packaging > war </ packaging >
  
< version > 1.0-SNAPSHOT </ version >
  
< name > ebnms Maven Webapp </ name >
  
< url > http://maven.apache.org </ url >
      
  
< build >
    
< finalName > ebnms </ finalName >
    
      
< resources >
        
< resource >
          
< directory > src/main/java </ directory >
          
< includes >
            
< include > **/*.xml </ include >
          
</ includes >
        
</ resource >
        
< resource >
          
< directory > src/main/webapp/WEB-INF </ directory >
          
< includes >
            
< include > **/*.xml </ include >
            
< include > **/log4j.properties </ include >
          
</ includes >
        
</ resource >
      
</ resources >
      
      
< plugins >
        
< plugin >
          
< groupId > org.apache.maven.plugins </ groupId >
          
< artifactId > maven-compiler-plugin </ artifactId >
          
< configuration >
            
< source > 1.5 </ source >
            
< target > 1.5 </ target >
          
</ configuration >
        
</ plugin >
        
      
< plugin >
        
< groupId > org.mortbay.jetty </ groupId >
        
< artifactId > maven-jetty-plugin </ artifactId >
      
</ plugin >         
  
      
</ plugins >
    
</ build >     
      
  
< dependencies >
    
< dependency >
      
< groupId > junit </ groupId >
      
< artifactId > junit </ artifactId >
      
< version > 3.8.1 </ version >
      
< scope > test </ scope >
    
</ dependency >
        
    
< dependency >
      
< groupId > org.hibernate </ groupId >
      
< artifactId > hibernate </ artifactId >
      
< version > 3.1 </ version >
    
</ dependency >
    
    
< dependency >
      
< groupId > log4j </ groupId >
      
< artifactId > log4j </ artifactId >
      
< version > 1.2.11 </ version >
    
</ dependency >
    
< dependency >
      
< groupId > mysql </ groupId >
      
< artifactId > mysql-connector-java </ artifactId >
      
< version > 3.1.11 </ version >
      
< scope > runtime </ 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 > jstl </ artifactId >
      
< version > 1.1.2 </ version >
      
< scope > runtime </ scope >
    
</ dependency >
    
< dependency >
      
< groupId > taglibs </ groupId >
      
< artifactId > standard </ artifactId >
      
< version > 1.1.2 </ version >
      
< scope > runtime </ scope >
    
</ dependency >
    
< dependency >
      
< groupId > org.springframework </ groupId >
      
< artifactId > spring </ artifactId >
      
< version > 1.2.6 </ version >
    
</ dependency >
        
    
< dependency >
      
< groupId > dwr </ groupId >
      
< artifactId > dwr </ artifactId >
      
< version > 1.1.3 </ version >
    
</ dependency >         
  
</ dependencies >
  
</ project >



代码放入/main/java后,可以在项目目录下执行:
mvn compile来做编译尝试,
也可以用mvn war直接生成打包文件,
当然最后可以用 mvn jetty:run来运行你的WEBAPP!


3.  在Eclipse中配置jetty进行调试
要把之前的项目导入Eclipse首先让maven为我们生成Eclipse工程文件,执行:
mvn eclipse:eclipse
再把M2_REPO加入到Eclipse的classpath中,有两种方法,其中的b)方法是有效的:
a) mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
b) Window > Preferences. Select the Java > Build Path > Classpath Variables page


之后,就可以通过Eclipse的File->Import功能将工程导入。


有人为了使用WEBAPP开发功能,而装象MYECLIPSE这样的巨物。有了JETTY,通过轻松配置就可以实现比TOMCAT更快更便捷的容器,所以在调试时强力推荐这个东东。下面就来看下如何配置。

先下配置一个外部工具,来运行JETTY:
选择菜单Run->External Tools->External Tools ...在左边选择Program,再点New:
配置Location为mvn完整命令行。

选择Working Directory为本项目。

Arguments填写:jetty:run

再点选Enviroment页:加入MAVEN_OPTS变量,值为:
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y
其中,如果suspend=n 表示不调试,直接运行。

然后,点APPLY,再关闭本对话框。
另外注意一点,好像external tool菜单项在java browering的perspective下才会出现。如果在java下看不见,可以切换下试试。



下面新建运行配置:
点选run->debug...
选中左树中的Remote Java Application,再点New。
选择你的项目,关键是要填和之前设置外部工具时相同的端口号。





配置就完成了,正面开始调试运行:
首先要把JETTY运行起来(有点象TOMCAT里的运行APPSERVER),从Run->External Tools中选择之前配置的外部工具运行,这时LOG里会显示:
listening at port 4000字样,
再选择Run->Debug选择我们刚建的运行配置,这时程序就RUN起来了,可以通过WEB进行访问,设置断点调试了。



 ============================================================================

适用于6.1.3以上,包括6.1.5的JETTY。

它主要是利用了JDK的代码自动更换性能(code hot replace),可以不用重启JETTY就调试、更换资源文件。注意:一定是DEBUG方式运行才有这项功能。

所以应该说这篇文章的方法更好:

在Run->Debug中,New一个Java Application的配置,填入:

org.mortbay.xml.XmlConfiguration

参数填入一个自己的JETTY配置文件:




完成的myjetty.xml配置文件,请将其中的相应目录修改成自己项目的目录:

<? xml version="1.0" ?>
<! DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd" >

<!--  ===============================================================  -->
<!--  Configure the Jetty Server                                       -->
<!--                                                                   -->
<!--  Documentation of this file format can be found at:               -->
<!--  http://docs.codehaus.org/display/JETTY/jetty.xml                 -->
<!--                                                                   -->
<!--  ===============================================================  -->


< Configure  id ="Server"  class ="org.mortbay.jetty.Server" >

    
<!--  ===========================================================  -->
    
<!--  Server Thread Pool                                           -->
    
<!--  ===========================================================  -->
    
< Set  name ="ThreadPool" >
      
<!--  Default bounded blocking threadpool 
      
-->
      
< New  class ="org.mortbay.thread.BoundedThreadPool" >
        
< Set  name ="minThreads" > 10 </ Set >
        
< Set  name ="maxThreads" > 250 </ Set >
        
< Set  name ="lowThreads" > 25 </ Set >
      
</ New >

      
<!--  Optional Java 5 bounded threadpool with job queue 
      <New class="org.mortbay.thread.concurrent.ThreadPool">
        <Set name="corePoolSize">250</Set>
        <Set name="maximumPoolSize">250</Set>
      </New>
      
-->
    
</ Set >



    
<!--  ===========================================================  -->
    
<!--  Set connectors                                               -->
    
<!--  ===========================================================  -->
    
<!--  One of each type!                                            -->
    
<!--  ===========================================================  -->

    
<!--  Use this connector for many frequently idle connections
         and for threadless continuations.
    
-->     
    
< Call  name ="addConnector" >
      
< Arg >
          
< New  class ="org.mortbay.jetty.nio.SelectChannelConnector" >
            
< Set  name ="port" >< SystemProperty  name ="jetty.port"  default ="8080" /></ Set >
            
< Set  name ="maxIdleTime" > 30000 </ Set >
            
< Set  name ="Acceptors" > 2 </ Set >
            
< Set  name ="statsOn" > false </ Set >
            
< Set  name ="confidentialPort" > 8443 </ Set >
        
< Set  name ="lowResourcesConnections" > 5000 </ Set >
        
< Set  name ="lowResourcesMaxIdleTime" > 5000 </ Set >
          
</ New >
      
</ Arg >
    
</ Call >

    
<!--  Use this connector if NIO is not available.
    <Call name="addConnector">
      <Arg>
          <New class="org.mortbay.jetty.bio.SocketConnector">
            <Set name="port">8081</Set>
            <Set name="maxIdleTime">50000</Set>
            <Set name="lowResourceMaxIdleTime">1500</Set>
          </New>
      </Arg>
    </Call>
    
-->

    
<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
    
<!--  To add a HTTPS SSL listener                                      -->
    
<!--  see jetty-ssl.xml to add an ssl connector. use                   -->
    
<!--  java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml              -->
    
<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
    
    
<!--  ===========================================================  -->
    
<!--  Set up global session ID manager                             -->
    
<!--  ===========================================================  -->
    
<!--
    <Set name="sessionIdManager">
      <New class="org.mortbay.jetty.servlet.HashSessionIdManager">
        <Set name="workerName">node1</Set>
      </New>
    </Set>
    
-->

    
<!--  ===========================================================  -->
    
<!--  Set handler Collection Structure                             -->  
    
<!--  ===========================================================  -->
    
< Set  name ="handler" >
      
< New  id ="Handlers"  class ="org.mortbay.jetty.handler.HandlerCollection" >
        
< Set  name ="handlers" >
         
< Array  type ="org.mortbay.jetty.Handler" >
           
< Item >
             
< New  id ="Contexts"  class ="org.mortbay.jetty.handler.ContextHandlerCollection" />
           
</ Item >
           
< Item >
             
< New  id ="DefaultHandler"  class ="org.mortbay.jetty.handler.DefaultHandler" />
           
</ Item >
           
< Item >
             
< New  id ="RequestLog"  class ="org.mortbay.jetty.handler.RequestLogHandler" />
           
</ Item >
         
</ Array >
        
</ Set >
      
</ New >
    
</ Set >
    
< Set  name ="handler" >    
  
< New  id ="Handlers"  class ="org.mortbay.jetty.handler.HandlerCollection" >    
    
< Set  name ="handlers" >    
      
< Array  type ="org.mortbay.jetty.Handler" >    
        
<!-- Item>   
          <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>   
        </Item
-->    
        
< Item >    
          
< New  class ="org.mortbay.jetty.webapp.WebAppContext" >    
            
< Set  name ="contextPath" > /ebnms </ Set >    
            
< Set  name ="resourceBase" > E:/Prj2/ForMe/Src/flower/src/main/webapp </ Set >    
            
< Call  name ="addServlet" >    
              
< Arg > org.mortbay.jetty.servlet.DefaultServlet </ Arg >    
              
< Arg > / </ Arg >    
            
</ Call >    
          
</ New >    
    
</ Item >    
      
</ Array >    
    
</ Set >    
  
</ New >    
</ Set >    


    
<!--  ===========================================================  -->
    
<!--  Configure Authentication Realms                              -->
    
<!--  Realms may be configured for the entire server here, or      -->
    
<!--  they can be configured for a specific web app in a context   -->
    
<!--  configuration (see $(jetty.home)/contexts/test.xml for an    -->
    
<!--  example).                                                    -->
    
<!--  ===========================================================  -->
    
< Set  name ="UserRealms" >
      
< Array  type ="org.mortbay.jetty.security.UserRealm" >
        
<!--
        <Item>
          <New class="org.mortbay.jetty.security.HashUserRealm">
            <Set name="name">Test Realm</Set>
            <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          </New>
        </Item>
    
-->
      
</ Array >
    
</ Set >

    
<!--  ===========================================================  -->
    
<!--  Configure Request Log                                        -->
    
<!--  Request logs  may be configured for the entire server here,  -->
    
<!--  or they can be configured for a specific web app in a        -->
    
<!--  contexts configuration (see $(jetty.home)/contexts/test.xml  -->
    
<!--  for an example).                                             -->
    
<!--  ===========================================================  -->
    
<!-- Ref id="RequestLog">
      <Set name="requestLog">
        <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
          <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
          <Set name="filenameDateFormat">yyyy_MM_dd</Set>
          <Set name="retainDays">90</Set>
          <Set name="append">true</Set>
          <Set name="extended">true</Set>
          <Set name="logCookies">false</Set>
          <Set name="LogTimeZone">GMT</Set>
        </New>
      </Set>
    </Ref
-->

    
<!--  ===========================================================  -->
    
<!--  extra options                                                -->
    
<!--  ===========================================================  -->
    
< Set  name ="stopAtShutdown" > true </ Set >
    
< Set  name ="sendServerVersion" > true </ Set >
    
<!-- Set name="sendDateHeader">true</Set -->
    
<!-- Set name="gracefulShutdown">1000</Set -->
</ Configure >

  1. Maven
    1. 创建普通工程:mvn archetype:create -DgroupId=com.example -DartifactId=example
    2. 创建Web工程:mvn archetype:create -DgroupId=com.example -DartifactId=example -DarchetypeArtifactId=maven-archetype-webapp
  2. eclipse
    1. 转为eclipse工程:mvn eclipse:eclipse
    2. 添加repository路径变量m2_repo:mvn eclipse:add-maven-repo -Declipse.workspace=your eclipse workspace path
  3. Jetty
    1. 修改POM.xml文件,指定工程使用Jetty及Java5
    xml 代码
    1. < build >   
    2.      < finalName > example finalName >   
    3.      < plugins >   
    4.          < plugin >   
    5.              < groupId > org.apache.maven.plugins groupId >   
    6.              < artifactId > maven-compiler-plugin artifactId >   
    7.              < configuration >   
    8.                  < source > 1.5 source >   
    9.                  < target > 1.5 target >   
    10.              configuration >   
    11.          plugin >   
    12.          < plugin >   
    13.              < groupId > org.mortbay.jetty groupId >   
    14.              < artifactId > maven-jetty-plugin artifactId >   
    15.          plugin >   
    16.      plugins >   
    17. build >   

    2. 工程调试:添加外部工具
    Step 1
    Go to the Run/External Tools/External Tools ..." menu item on the "Run" menu bar. Select "Program" and click the "New" button. On the "Main" tab, fill in the "Location:" as the full path to your "mvn" executable. For the "Working Directory:" select the workspace that matches your webapp. For "Arguments:" add jetty:run .

    Move to the "Environment" tab and click the "New" button to add a new variable named MAVEN_OPTS with the value:

    -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n

    If you supply suspend=n instead of suspend=y you can start immediately without running the debugger and launch the debugger at anytime you really wish to debug.

    Step 2
    Then, pull up the "Run/Debug/Debug ..." menu item and select "Remote Java Application" and click the "New" button. Fill in the dialog by selecting your webapp project for the "Project:" field, and ensure you are using the same port number as you specified in the address= property above.

    Now all you need to do is to Run/External Tools and select the name of the maven tool setup you created in step 1 to start the plugin and then Run/Debug and select the name of the debug setup you setup in step2.

    3. js、css等静态文件无法更新的问题(save could not be completed )
    原文出处
    Jetty启动后,如果修改javascript文件,将不能保存,使调试很麻烦。这是因为使用了CACHE,JETTY说是WINDOWS下的一个限制。可以通过如下方法修正:
    解压出jetty.jar中的 org/mortbay/jetty/webapp/webdefault.xml文件,将这一选项由true改为false,另存到src/main/resources目录,或者其它自选目录。

    xml 代码

    <!-- change to false -->

    1. < init-param >   < param-name > useFileMappedBuffer param-name >  
    2. < param-value > true param-value >   <!-- change to false -->   init-param >   

     在pom.xml中加入对这个文件的指向:

    xml 代码
    1. < plugin >   
    2.   < groupId > org.mortbay.jettygroupId >   
    3.   < artifactId > maven-jetty-pluginartifactId >   
    4.   < configuration >   
    5.     < webDefaultXml > src/main/resources/webdefault.xmlwebDefaultXml >   
    6.   >   
    7. >    
分享到:
评论

相关推荐

    eclipse 整合 jetty 调试

    本文将详细介绍如何在Eclipse中整合Jetty,并进行调试。 **一、Eclipse安装Jetty插件** 1. 打开Eclipse市场(Help &gt; Eclipse Marketplace)。 2. 搜索“Jetty”或“Jetty Runner”,找到Jetty Runner插件,点击...

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

    在Eclipse这个强大的Java开发环境中,配置Jetty服务器来调试Web项目是一项常用的任务。Jetty是一个轻量级、高性能的开源HTTP服务器和Servlet容器,它允许开发者在本地环境快速部署和测试Web应用。本文将详细介绍如何...

    jetty在eclipse中配置

    本教程将详细介绍如何在Eclipse中配置Jetty,以便于便捷地调试和运行Web应用。 首先,确保你已经安装了Eclipse IDE和Jetty服务器。你可以从Jetty官网下载适合你Java版本的Jetty发布包,并解压到本地文件系统。 1. ...

    eclipse插件jetty 离线安装包

    Eclipse插件Jetty,全称为"Run-Jetty-Run",是一款专为Eclipse集成开发环境设计的插件,它使得开发者可以在本地环境中快速启动、调试和测试Jetty服务器,而无需离开Eclipse。Jetty是一款轻量级、高性能的Java Web...

    eclipse_jetty9离线插件

    在Eclipse中安装Jetty 9离线插件,可以使得开发者在本地环境中快速启动和调试Jetty服务器,方便进行Web应用的开发和测试。 离线安装步骤通常如下: 1. **下载离线插件包**:根据提供的描述,用户需要先下载包含...

    eclipse的jetty插件

    Eclipse的Jetty插件是开发Java Web应用时的一个强大工具,它允许开发者在Eclipse集成开发环境中直接运行和测试Jetty服务器上的项目,而无需单独安装和配置Jetty。这个插件极大地简化了开发流程,提高了开发效率,...

    eclipse-jetty插件

    这个插件允许开发者直接在Eclipse中启动、停止、调试和管理Jetty服务器,无需离开IDE,从而提高了开发效率。 Jetty插件的主要特点和功能包括: 1. **快速启动与调试**:Eclipse Jetty插件可以快速启动Jetty服务器...

    Eclipse3 jetty插件

    这个插件的目的是简化在Eclipse中配置、运行和调试基于Jetty的应用程序的过程。 1. **Eclipse3.6简介** Eclipse 3.6,也被称为Helios,是Eclipse IDE的一个重要版本,它提供了丰富的功能和改进,支持多种编程语言...

    eclipse jetty插件安装(离线版)

    Eclipse Jetty插件是开发Java Web应用时非常实用的工具,它允许开发者在Eclipse集成开发环境中直接启动和测试Jetty服务器,而无需通过命令行或其他方式。本篇文章将详细讲解如何离线安装Eclipse Jetty插件,并介绍其...

    Eclipse与jetty插件的安装和使用

    要安装jetty插件,需要在Eclipse中添加新的软件站点。具体步骤如下: 1. 启动Eclipse,点击Help-&gt; Install New Software,然后选择Add,输入名称为“jetty”的新的更新站点,URL为...

    eclipse的jetty9插件

    Eclipse的Jetty 9插件是开发Java Web应用程序时常用的一个工具,它允许开发者在Eclipse集成开发环境中直接运行和测试Jetty服务器。Jetty是一个轻量级、高性能的HTTP服务器和Servlet容器,广泛应用于各种Java Web项目...

    Eclipse的jetty插件RunJettyRun离线安装亲测有效

    Eclipse的Jetty插件RunJettyRun是一个非常实用的工具,它允许开发者在Eclipse环境中直接运行和调试基于Jetty服务器的应用程序,无需离开IDE。对于那些在没有网络连接或者网络环境不稳定的情况下工作的开发者来说,...

    Jetty For Eclipse 插件快速安装.rar

    为了在Eclipse中方便地调试和运行基于Jetty的Web应用,可以安装Jetty For Eclipse插件。这个压缩包"Jetty For Eclipse 插件快速安装.rar"包含了必要的文件,帮助用户快捷地在Eclipse环境中集成Jetty。 1. **插件...

    eclipse-jetty 3.9.0 eclipse的jetty插件 离线安装包

    比run-jetty-run启动要快,但是调试没有run-jetty-run方便。 eclipse插件 离线安装包 Eclipse中Install New Software 然后Add -&gt; Archive,选择该包安装即可 此为最新的3.9.0版。 支持eclipse Neon (4.6), Mars (4.5...

    eclipse整合jetty

    在使用 Eclipse 开发 Java Web 应用时,经常需要将 Eclipse 与 Jetty 进行整合,以便于开发过程中的调试和测试。首先,需要安装 Jetty 插件。 1. **解决插件安装问题** 在安装 Jetty 插件时,如果使用旧的更新...

    阿里巴巴Eclipse Jetty容器插件

    3. **配置管理**:插件允许用户配置Jetty的各种设置,如端口、线程池大小、会话超时等,这些配置可以直接在Eclipse中进行,无需修改Jetty的配置文件。 4. **日志查看**:插件集成了日志查看功能,开发者可以直接在...

    Eclipse+maven+jetty开发环境搭建

    4. 安装Jetty插件后,可以在Eclipse中直接启动Jetty服务器,调试和运行Web应用。 这个开发环境的搭建使开发者能够在Eclipse中无缝集成Maven的构建管理和Jetty的快速部署与调试,大大提高了开发效率。通过Maven,你...

    Eclipse Jetty插件

    7. **运行Web应用**:配置完成后,你可以在Eclipse中直接启动和调试Jetty服务器上的Web应用程序,无需离开IDE,极大地提高了开发效率。 Eclipse Jetty插件的主要功能包括: - **快速启动和调试**:通过插件,可以...

    eclipse jetty插件_3.8版本(可用).rar

    Eclipse Jetty插件是开发Java Web应用程序时非常有用的一个工具,它允许开发者在Eclipse集成开发环境中直接运行和调试Jetty服务器上的项目。Jetty是一个轻量级、高性能的HTTP服务器和Servlet容器,广泛应用于各种...

Global site tag (gtag.js) - Google Analytics