Chapter 1 - Netbeans配置和运行Jetty源代码

在Netbeans里面新建一个Java project, 然后把Jetty 6的源码加进来,添加一些必要的依赖包,添加ant脚本,开启调试。

[color=orange]1. 新建一个Java project, 加入Jetty 6 source package[/color]

你可以从这个url拿到源码包:
[url]http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26-src.zip[/url]

[color=orange]2. 添加编译jetty时必须的依赖包:[/color]

servlet-api-2.5-20081211.jar
slf4j-api-1.3.1.jar


[color=orange]3. 添加配置文件:[/color]

etc/jetty.xml
etc/webdefault.xml
realm.properties

[color=orange]4. 配置Netbeans脚本:[/color]

<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<!-- Either of the below two is applicable -->
<!--<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">-->
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
<name>jetty</name>
<properties>
<property name="ant.script">nbproject/targets.xml</property>
<property name="jetty.script">build/jetty-build.xml</property>
</properties>
<folders>
<source-folder>
<label>jetty</label>
<location>.</location>
<encoding>windows-1252</encoding>
</source-folder>
<source-folder>
<label>Java Sources</label>
<type>java</type>
<location>src</location>
<encoding>windows-1252</encoding>
</source-folder>
</folders>
<ide-actions>
<action name="build">
<script>${jetty.script}</script>
<target>nbbuild</target>
</action>
<action name="clean">
<script>${jetty.script}</script>
<target>clean</target>
</action>
<action name="run">
<script>${jetty.script}</script>
<target>nbrun</target>
</action>
<action name="debug">
<script>${jetty.script}</script>
<target>nbdebug</target>
</action>
</ide-actions>
<view>
<items>
<source-folder style="tree">
<label>Web folder</label>
<location>webapps</location>
</source-folder>
<source-folder style="tree">
<label>Jetty configs</label>
<location>webapps/WEB-INF/etc</location>
</source-folder>
<source-folder style="packages">
<label>Java src</label>
<location>src</location>
</source-folder>
</items>
<context-menu>
<ide-action name="build"/>
<ide-action name="clean"/>
<ide-action name="javadoc"/>
<ide-action name="run"/>
<ide-action name="test"/>
<ide-action name="debug"/>
</context-menu>
</view>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/3">
<compilation-unit>
<package-root>src</package-root>
<classpath mode="compile"></classpath>
<built-to>classes</built-to>
<javadoc-built-to>doc</javadoc-built-to>
<source-level>1.6</source-level>
</compilation-unit>
</java-data>
</configuration>
</project>


[color=orange]5. 添加jetty脚本[/color]

每次compile时候,会根据更改情况,生成新的classes。这些classes会被jar(update)到jetty-6.1.26.jar。启动IDE的debugger,然后启动jetty6,并把jetty6附加到debugger上,这样可以调试代码的运行

a. build脚本
javac.source=1.6
javac.target=1.6
JAVAC_EXE=
srcDir=source directory
outDir=output directory

<target name="nbbuild" depends="configProperties">
<javac source="${javac.source}" target="${javac.target}"
executable="${JAVAC_EXE}" fork="yes" destdir="${outDir}"
classpath="${outDir}" classpathref="libraries"
optimize="off" verbose="off" debug="on"
memoryInitialSize="512M" memoryMaximumSize="768M">
<src path="${srcDir}"/>
<include name="**/*.java"/>
</javac>

<jar update="true" compress="true" jarfile="${jettyOutDir}\\lib\\jetty-6.1.26.jar">
<manifest>
<attribute name="Build-Date" value="${build.time}"/>
<attribute name="Build-User" value="${user.name}"/>
<attribute name="Build-File" value="${ant.file}"/>
<attribute name="Build-Location" value="${prefix}"/>
<attribute name="Build-Platform" value="${os.name} ${os.version}(${os.arch})"/>
<attribute name="Specification-Title" value="${java.specification.name}"/>
<attribute name="Specification-Vendor" value="${java.vendor}"/>
<attribute name="Specification-Version" value="${java.version}"/>
<attribute name="CopyrightNotice" value="Copyright (c) 2012-${build.year} ${corp.name}"/>
<attribute name="Implementation-Title" value="${ant.project.name} - HTTPS Handler"/>
<attribute name="Implementation-Vendor" value="${corp.name}"/>
<attribute name="Implementation-Version" value="${build.version}"/>
</manifest>
<fileset dir="${outDir}">
<include name="org/mortbay/**/*.class"/>
</fileset>
</jar>
</target>


b. debug脚本

<target name="nbdebug" depends="nbbuild">
<!-- Copy the necessary configuration files and libraries to the jetty output direction -->
<copy todir="${jettyOutDir}" file="jetty/start.jar" overwrite="no"/>
<copy todir="${jettyOutDir}/etc" overwrite="no">
<fileset dir="jetty/etc">
<include name="jetty.xml"/>
<include name="webdefault.xml"/>
<include name="configure.dtd"/>
<include name="realm.properties"/>
</fileset>
</copy>

<copy todir="${jettyOutDir}/lib" overwrite="no">
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</copy>
<copy todir="${jettyOutDir}/ext" overwrite="no">
<fileset dir="jetty/ext">
<include name="*.jar"/>
</fileset>
</copy>
<mkdir dir="${jettyOutDir}/lib"/>
<mkdir dir="${jettyOutDir}/bin/logs"/>
<copy todir="${jettyOutDir}/webapps" overwrite="no">
<fileset dir="webapps">
<include name="**/*"/>
</fileset>
</copy>

<!-- Start the debugger -->
<nbjpdastart name="Jetty 6" addressproperty="jpda.address2" transport="dt_socket">
<sourcepath>
<pathelement path="${srcDir}"/>
</sourcepath>
</nbjpdastart>

<!-- Start the application -->
<java jar="${jettyOutDir}\\start.jar" fork="yes" dir="${jettyOutDir}\\bin" failonerror="true"
classpathref="libraries" jvm="${java.executable}">
<jvmarg value="-Xdebug"/>
<jvmarg value="-mx256M"/>
<jvmarg value="-Xnoagent"/>
<jvmarg value="-Djetty.home=."/>
<jvmarg value="-Djava.compiler=none"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address2}"/>
<jvmarg value="-DSTOP.PORT=-1"/>
<jvmarg value="-Xverify:none"/>
<jvmarg value="-Xbootclasspath/a:${jettyOutDir}\\ext\\mail.jar"/>
<jvmarg value="-Dprimary.address=10.158.171.103"/>
<jvmarg value="-Dprimary.port=8080"/>
</java>
</target>


[color=orange]6. 调试源代码[/color]

点击debug,可以看到output panel上有输出,debug toolbar也会出现。在jetty代码里加个断点,就可以调试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值