build.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="EJB3Entity" basedir="."> 3 4 <property name="src.dir" value="${basedir}/src" /> 5 <property environment="env" /> 6 <property name="jboss.home" value="${env.JBOSS_HOME}" /> 7 <property name="jboss.server.config" value="default" /> 8 <property name="build.dir" value="${basedir}/build"/> 9 10 <path id="build.classpath"> 11 <fileset dir="${jboss.home}/client"> 12 <include name="*.jar" /> 13 </fileset> 14 <pathelement location="${build.dir}" /> 15 </path> 16 17 <target name="prepare"> 18 <delete dir="${build.dir}" /> 19 <mkdir dir="${build.dir}" /> 20 </target> 21 22 <target name="compile" depends="prepare" description="编绎"> 23 <javac target="1.5" srcdir="${src.dir}" includes="cn/**" destdir="${build.dir}" fork="true" memoryinitialsize="10M" memorymaximumsize="64M" encoding="utf-8" 24 > 25 <classpath refid="build.classpath" /> 26 </javac> 27 </target> 28 29 <target name="ejbjar" depends="compile" description="创建EJB发布包"> 30 <jar jarfile="${basedir}/${ant.project.name}.jar"> 31 <fileset dir="${build.dir}"> 32 <include name="**/*.class" /> 33 </fileset> 34 <metainf dir="${src.dir}/META-INF"></metainf> 35 </jar> 36 </target> 37 38 <target name="deploy" depends="ejbjar" description="发布EJB"> 39 <copy file="${basedir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy" /> 40 </target> 41 42 <target name="undeploy" description="卸载EJB"> 43 <delete file="${basedir}/${ant.project.name}.jar" /> 44 <delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar" /> 45 </target> 46 47 </project>
注意:
对应的JBOSS服务器所使用的JDK版本要与ANT打包时所使用的版本保持一致。其中这一块代码是比较容易出问题的地方:
1 <target name="compile" depends="prepare" description="编绎"> 2 <javac target="1.5" srcdir="${src.dir}" includes="cn/**" destdir="${build.dir}" fork="true" memoryinitialsize="10M" memorymaximumsize="64M" encoding="utf-8" 3 > 4 <classpath refid="build.classpath" /> 5 </javac> 6 </target>
javac标签中利用target指定ANT所使用的JDK版本,encoding属性指定编译时的编码。
加上fork标签为true,且memoryinitialsize与memorymaximumsize的值用于指定内存使用最小与最大值,一些教程中忽略了这些要点,导致在使用ANT发布编辑过程中报错,网上搜索很多资料说是JDK版本的问题,也有的说是缺少tool.jar包,其实是内存不足导致。
另附jndi.properties
java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory
java.naming.provider.url = localhost:1099