ant打ear包的详细步骤
用一个简单的ejb3.0示例记录ant打ear包的过程
源码下载
环境:
apache-ant-1.6.5
jboss-4.2.1.GA
jboss-annotations-ejb3.jar
jboss-ejb3.jar
jboss-ejb3x.jar
最后三个包在jboss里有.
1,建ejb3.0项目
session bean接口:HelloWorld
实现类:HelloWorldBean
调用session bean的jsp:
2,ant示例
把一些公用的jar包都放到ear下,而不是分别在ejb jar包和war包里,减少jar包的冗余.
源码下载
环境:
apache-ant-1.6.5
jboss-4.2.1.GA
jboss-annotations-ejb3.jar
jboss-ejb3.jar
jboss-ejb3x.jar
最后三个包在jboss里有.
1,建ejb3.0项目
session bean接口:HelloWorld
public
interface
HelloWorld
{
public String sayHello(String name);
}
public String sayHello(String name);
}
实现类:HelloWorldBean
@Stateless
@Remote ( {HelloWorld.class} )
public class HelloWorldBean implements HelloWorld {
public String sayHello(String name) {
//org.apache.commons.collections,这里假设用到了其它包中的类
CollectionUtils c=new CollectionUtils();
//org.apache.commons.lang
StringUtils s=new StringUtils();
return "hello,i am "+name;
}
}
@Remote ( {HelloWorld.class} )
public class HelloWorldBean implements HelloWorld {
public String sayHello(String name) {
//org.apache.commons.collections,这里假设用到了其它包中的类
CollectionUtils c=new CollectionUtils();
//org.apache.commons.lang
StringUtils s=new StringUtils();
return "hello,i am "+name;
}
}
调用session bean的jsp:
<%
//org.apache.commons.collections,这里假设用到了其它包中的类
CollectionUtils c=new CollectionUtils();
//org.apache.commons.lang
StringUtils s=new StringUtils();
%>
<%
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("myproject/HelloWorldBean/remote");
out.println(helloworld.sayHello("mashiguang"));
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
//org.apache.commons.collections,这里假设用到了其它包中的类
CollectionUtils c=new CollectionUtils();
//org.apache.commons.lang
StringUtils s=new StringUtils();
%>
<%
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("myproject/HelloWorldBean/remote");
out.println(helloworld.sayHello("mashiguang"));
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
2,ant示例
把一些公用的jar包都放到ear下,而不是分别在ejb jar包和war包里,减少jar包的冗余.
<
project
name
="ear"
default
="deploy"
basedir
="."
>
< property environment ="env" />
< property name ="app.dir" value ="${basedir}" />
< property name ="src.dir" value ="${app.dir}\src" />
< property name ="classes.dir" value ="${app.dir}\build\classes" />
< property name ="webcontent.dir" value ="${app.dir}\WebContent" />
< property name ="jboss.home" value ="${env.JBOSS_HOME}" />
< property name ="jboss.server.config" value ="default" />
< path id ="build.classpath" description ="编译时classpath" >
< fileset dir ="${webcontent.dir}\WEB-INF\lib" >
< include name ="*.jar" />
</ fileset >
< pathelement location ="${classes.dir}" />
</ path >
< target name ="prepare" depends ="clean" description ="创建classes文件夹" >
< mkdir dir ="${classes.dir}" />
</ target >
< target name ="compile" depends ="prepare" description ="编绎" >
< javac srcdir ="${src.dir}" destdir ="${classes.dir}" debug ="on" deprecation ="on" optimize ="off" includes ="**" >
< classpath refid ="build.classpath" />
</ javac >
</ target >
< target name ="sessionInterface" depends ="compile" description ="创建session bean接口包" >
< jar destfile ="${app.dir}/interface.jar" >
< fileset dir ="${classes.dir}" >
< include name ="com/mashiguang/ejb3/*.class" />
</ fileset >
</ jar >
</ target >
< target name ="ejb_jar" depends ="sessionInterface" description ="创建ejb jar包" >
< jar destfile ="${app.dir}/ejb.jar" >
< fileset dir ="${classes.dir}" >
< include name ="com/mashiguang/ejb3/impl/**" />
</ fileset >
< manifest >
< attribute name ="Class-Path" value ="interface.jar commons-collections-3.2.jar commons-lang-2.3.jar" />
</ manifest >
</ jar >
</ target >
< target name ="web-war" depends ="ejb_jar" description ="创建WEB发布包" >
< war destfile ="${app.dir}/web.war" webxml ="${webcontent.dir}/WEB-INF/web.xml" >
< fileset dir ="${webcontent.dir}" >
< include name ="*.jsp" />
< exclude name ="WEB-INF/web.xml" />
< exclude name ="WEB-INF/lib/**" />
</ fileset >
< manifest >
< attribute name ="Class-Path" value ="interface.jar commons-collections-3.2.jar commons-lang-2.3.jar" />
</ manifest >
</ war >
</ target >
< target name ="ear" depends ="web-war" description ="创建WEB发布包" >
< ear destfile ="${app.dir}/myproject.ear" appxml ="${src.dir}/META-INF/application.xml" >
< fileset dir ="${app.dir}" >
< include name ="ejb.jar" />
< include name ="web.war" />
< include name ="interface.jar" />
</ fileset >
< fileset dir ="${webcontent.dir}/WEB-INF/lib" >
< include name ="commons*.jar" />
</ fileset >
</ ear >
</ target >
< target name ="deploy" depends ="ear" >
< copy file ="${app.dir}/myproject.ear" todir ="${jboss.home}/server/${jboss.server.config}/deploy" />
</ target >
< target name ="clean" >
< delete >
< fileset dir ="${app.dir}" >
< include name ="ejb.jar" />
< include name ="web.war" />
< include name ="interface.jar" />
</ fileset >
</ delete >
< delete dir ="${classes.dir}" />
<!-- -->
< delete file ="${jboss.home}/server/${jboss.server.config}/deploy/myproject.ear" />
</ target >
</ project >
< property environment ="env" />
< property name ="app.dir" value ="${basedir}" />
< property name ="src.dir" value ="${app.dir}\src" />
< property name ="classes.dir" value ="${app.dir}\build\classes" />
< property name ="webcontent.dir" value ="${app.dir}\WebContent" />
< property name ="jboss.home" value ="${env.JBOSS_HOME}" />
< property name ="jboss.server.config" value ="default" />
< path id ="build.classpath" description ="编译时classpath" >
< fileset dir ="${webcontent.dir}\WEB-INF\lib" >
< include name ="*.jar" />
</ fileset >
< pathelement location ="${classes.dir}" />
</ path >
< target name ="prepare" depends ="clean" description ="创建classes文件夹" >
< mkdir dir ="${classes.dir}" />
</ target >
< target name ="compile" depends ="prepare" description ="编绎" >
< javac srcdir ="${src.dir}" destdir ="${classes.dir}" debug ="on" deprecation ="on" optimize ="off" includes ="**" >
< classpath refid ="build.classpath" />
</ javac >
</ target >
< target name ="sessionInterface" depends ="compile" description ="创建session bean接口包" >
< jar destfile ="${app.dir}/interface.jar" >
< fileset dir ="${classes.dir}" >
< include name ="com/mashiguang/ejb3/*.class" />
</ fileset >
</ jar >
</ target >
< target name ="ejb_jar" depends ="sessionInterface" description ="创建ejb jar包" >
< jar destfile ="${app.dir}/ejb.jar" >
< fileset dir ="${classes.dir}" >
< include name ="com/mashiguang/ejb3/impl/**" />
</ fileset >
< manifest >
< attribute name ="Class-Path" value ="interface.jar commons-collections-3.2.jar commons-lang-2.3.jar" />
</ manifest >
</ jar >
</ target >
< target name ="web-war" depends ="ejb_jar" description ="创建WEB发布包" >
< war destfile ="${app.dir}/web.war" webxml ="${webcontent.dir}/WEB-INF/web.xml" >
< fileset dir ="${webcontent.dir}" >
< include name ="*.jsp" />
< exclude name ="WEB-INF/web.xml" />
< exclude name ="WEB-INF/lib/**" />
</ fileset >
< manifest >
< attribute name ="Class-Path" value ="interface.jar commons-collections-3.2.jar commons-lang-2.3.jar" />
</ manifest >
</ war >
</ target >
< target name ="ear" depends ="web-war" description ="创建WEB发布包" >
< ear destfile ="${app.dir}/myproject.ear" appxml ="${src.dir}/META-INF/application.xml" >
< fileset dir ="${app.dir}" >
< include name ="ejb.jar" />
< include name ="web.war" />
< include name ="interface.jar" />
</ fileset >
< fileset dir ="${webcontent.dir}/WEB-INF/lib" >
< include name ="commons*.jar" />
</ fileset >
</ ear >
</ target >
< target name ="deploy" depends ="ear" >
< copy file ="${app.dir}/myproject.ear" todir ="${jboss.home}/server/${jboss.server.config}/deploy" />
</ target >
< target name ="clean" >
< delete >
< fileset dir ="${app.dir}" >
< include name ="ejb.jar" />
< include name ="web.war" />
< include name ="interface.jar" />
</ fileset >
</ delete >
< delete dir ="${classes.dir}" />
<!-- -->
< delete file ="${jboss.home}/server/${jboss.server.config}/deploy/myproject.ear" />
</ target >
</ project >