断点

每天进步一点点!
posts - 174, comments - 56, trackbacks - 0, articles - 21

在做项目中碰见这样的问题,如下:
Caused by: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.pcis.cus.vo.CusClientVO#002255207];

原因: 有一个具有相同值的不同对象已经与和 session 相关联

解决(程序的一部分):
 //CusClientVO cusVo = new CusClientVO();
        CusClientVO cusVo = null;
        IUserDetails user = CurrentUser.getUser();
        try {
            if ("Same".equals(cusFlag)) {//被保险人和投保人是同一人
                cusVo = (CusClientVO)this.getById(CusClientVO.class, applicant.getCAppCde());
                if(cusVo==null){  //表示新增客户。
                    cusVo = new CusClientVO();
                }
                this.saveCusApplicant(applicant, cusVo);
                if(!applicantflag ){
                    cusVo.setTCrtTm(new Date());
                    cusVo.setCCrtCde(user.getOpRelCde());
                }
            }
            cusVo.setTUpdTm(new Date());
            cusVo.setCUpdCde(user.getOpRelCde());
            //
            this.saveOrUpdate(cusVo);
        } catch (DaoException ex) {
            BusinessServiceException e = new BusinessServiceException(ex);
            e.setErrorMsg("保存客户信息失败");
        }

相关连接:

http://hi.baidu.com/anypcao/blog/item/0db1a41cd3478d8187d6b6d2.html

http://agreal.javaeye.com/blog/339560


posted @ 2009-10-31 13:11 断点 阅读(61) | 评论 (0) 

posted @ 2010-01-13 23:33 断点 阅读(1334) | 评论 (0)编辑 收藏

有两张表(question、answer),它们存在着一对多关系(question->answer)和多对一关系(answer->question)。

在Answer.java中定义有:
public class Answer {
    private String userid;
    private Question question;
    private int qid;
}

在answer.hbm.xml中有:
 <many-to-one name="question" class="org.lxh.myzngt.vo.Question" fetch="select">
            <column name="qid" />
 </many-to-one>

所以SQL语句如下:

public List queryByUserAnswer(String userid, int currentPage, int lineSize) {
        List all = null;
        String hql = "from Question as q where q.qid in(select a.question.qid from Answer as a where a.userid=?)";
        Query q = super.getSession().createQuery(hql);
        q.setString(0, userid);
        // 分页操作。
        q.setFirstResult((currentPage - 1) * lineSize);
        q.setMaxResults(lineSize);
        all = q.list();
        return all;
    }

否则报错:

org.hibernate.QueryException: could not resolve property: qid of: org.lxh.myzngt.vo.Answer [select count(q.qid) from org.lxh.myzngt.vo.Question as q where q.qid in(select a.qid from org.lxh.myzngt.vo.
Answer as a where a.userid=?)]

posted @ 2009-02-23 15:58 断点 阅读(173) | 评论 (0)

posted @ 2010-01-13 23:26 断点 阅读(386) | 评论 (0)编辑 收藏

org.hibernate.hql.ast.QuerySyntaxError: user is not mapped. [from user as u where u.userid=?]

出现这个问题,主要是hibernate语句不对。

User.hbm.xml为:

<hibernate-mapping>
<class name="org.lxh.myzngt.vo.User" table="user" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"></generator>
        </id>
</class>
</hibernate-mapping>

因此,hql 语句如下:

String hql = "from User as u where u.userid=?"


posted @ 2009-02-11 17:55 断点 阅读(109) | 评论 (0)

posted @ 2010-01-13 23:22 断点 阅读(247) | 评论 (0)编辑 收藏

一个Web 应用发布到Jboss 服务器时需要打成war包。
下面介绍jar命令行Ant任务两种war文件的打包方式。

1.命令行下进行war 文件打包。
在Dos 窗口中进入到WEB 应用根目录下(WebRoot下),执行如下命令,如:
jar cvf EJBClient.war *,再把打包的EJBClient.war拷贝到C:\jboss-5.0.0.GA\server\default\deploy发布。

2.在Ant 任务中进行war文件打包。
build.xml文件如下:
 <?xml version="1.0" encoding="UTF-8"?>
<project name="EJBClient" default="war" basedir=".">
 <property environment="env" />
 <property name="jboss.home" value="${env.JBOSS_HOME}" />
 <property name="jboss.server.config" value="default" />
 <target name="war" description="创建WEB 发布包">
  <war warfile="${basedir}/${ant.project.name}.war" webxml="${basedir}/WebRoot/WEB-INF/web.xml">
   <classes dir="${basedir}/WebRoot/WEB-INF/classes">
    <include name="**/*.class" />
   </classes>
   
   <lib dir="${basedir}/WebRoot/WEB-INF/lib">
    <include name="*.jar" />
   </lib>
   
   <webinf dir="${basedir}/WebRoot">
    <include name="*.*" />
   </webinf>
  </war>
 </target>
 
 <target name="deploy" depends="war" description="发布WAR">
  <copy file="${basedir}\${ant.project.name}.war" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
 </target>
 
 <target name="undeploy"  description="卸载WAR">
  <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.war"/>
 </target>
</project>


posted @ 2009-03-30 18:15 断点 阅读(145) | 评论 (0)

posted @ 2010-01-13 23:11 断点 阅读(326) | 评论 (0)编辑 收藏

do not get WebServiceContext property from stateless bean context, it should already have been injected

这个主要原因就在stateless bean的实现类。

仔细查看后发现,原来我在实现类的每个方法前加入了 @WebMethod(指定暴露给外界的方法),因此去掉就可以了。


13:41:39,168 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
13:41:39,215 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
13:41:39,215 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
13:41:39,230 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public cn.ztf.bean.Order cn.ztf.service.impl.OrderServiceBean.getOrder(java.lang.String)
13:41:39,246 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.lang.String
cn.ztf.service.impl.OrderServiceBean.getUserName(java.lang.String)
13:41:39,246 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.util.List
cn.ztf.service.impl.OrderServiceBean.getOrders()
13:41:39,246 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public cn.ztf.bean.Order cn.ztf.service.impl.OrderServiceBean.getOrder(java.lang.String)
13:41:39,261 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.lang.String
cn.ztf.service.impl.OrderServiceBean.getUserName(java.lang.String)
13:41:39,261 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.util.List
cn.ztf.service.impl.OrderServiceBean.getOrders()
13:41:39,293 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
13:46:27,043 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
13:46:27,043 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected

 
posted @ 2009-03-30 14:33 断点 阅读(647) | 评论 (0)

posted @ 2010-01-13 22:50 断点 阅读(1052) | 评论 (1)编辑 收藏

Web服务也是一种分布式技术,属于行业规范,可以跨平台及语言。
EJB属于java平台规范,尽管理论上可以跨平台,但实现起来比较麻烦,所以其应用范围局限在java平台。

二者偏重点不同:
Web服务偏重的是这个系统对外提供什么功能;
EJB偏重的是如何使用一个个组件组装这些功能。

例如:一个硬盘,它对外提供的是存储服务,这是web服务的关注点;对于怎样组装这个硬盘,web服务并不关心,而这些是EJB所关注的。

JavaEE为web service提供了两种不同的编程模型:EJB容器模型、Web容器模型
下面以最新的JAX-WS2.x规范(Java API for XML-based Web Services)介绍Webservice的开发。
注:JAX-WS的下载路径为https://jax-ws.dev.java.net/servlets/ProjectDocumentList?folderID=7796&expandFolder=7796&folderID=11088

EJB容器模型的WEB服务的客户端开发:
注:首先我们需要建立一个无状态SessionBean,然后把此无状态SessionBean发布为web service。

1.在应用的类路径下放入JAX-WS的全部jar文件,并且把引进的jar文件添加到类路径上,即右击项目名-->Properties-->Java Build Path-->Add JARS。
如果你使用的是JDK6,这一步可以省略,因为JDK6已经绑定了JAX-WS。目前JDK6绑定的JAX-WS版本是2.0。

2.把JAX-WS产品lib目录中找到jaxws-api.jar和jaxb-api.jar,把这两个文件copy到JDK_HOME/jre/lib/endorsed目录下。

3.利用Web Service客户端生成工具(wsimport工具的Ant任务类)生成辅助类。
build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="WSClient" default="wsclientgen" basedir=".">
 <property name="src.dir" value="${basedir}/src" />
 
 <path id="build.classpath" description="设置类路径">
  <fileset dir="${basedir}/lib">
   <include name="*.jar"></include>
  </fileset>
 </path>
 
 <target name="wsclientgen" description="生成webservice客户端辅助代码,执行后请刷新项目">
  <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"
   classpathref="build.classpath"/>
  <wsimport wsdl="http://localhost:8090/WebService/OrderServiceBean?wsdl"
   sourcedestdir="${src.dir}"  package="cn.ztf.ws.client" keep="true"
    verbose="true" destdir="${basedir}/bin"/>
 </target>
</project>

4.借助辅助类调用Web Service。


posted @ 2009-03-30 14:22 断点 阅读(169) | 评论 (0)

posted @ 2010-01-13 22:48 断点 阅读(395) | 评论 (0)编辑 收藏

EJB3.0中MessageDrivenBean:

1.java消息驱动bean属于Java消息服务(Java Message Service,简称JMS)。

2.JMS是用于访问企业消息系统的开发商中心的API。企业消息系统可以协助应用软件通过网络进行消息交互。

3.JMS的编程过程简单概括为:应用程序A-->(消息)-->Jboss JMS-->(消息)-->应用程序B。应用程序A和应用程序B没有直接的代码关联,两者实现了解耦。消息传递系统的中心就是消息。

消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件,它和无状态Session Bean一样也使用了实例池技术,容器可以使用一定数量的bean实例并发处理成百上千个JMS消息。正因为MDB具有处理大量并发消息的能力,所以非常适合应用在一些消息网关产品。如果一个业务执行的时间很长,而执行结果无需实时向用户反馈时,也很适合使用MDB。如订单成功后给用户发送一封电子邮件或发送一条短信等。

消息有下面几种类型,他们都是派生自Message接口。
StreamMessage:一种主体中包含Java基本值流的消息。其填充和读取均按顺序进行。
MapMessage:一种主体中包含一组名-值对的消息。(没有定义条目顺序)
TextMessage:一种主体中包含Java字符串的消息(例如:XML消息)
ObjectMessage:一种主体中包含序列化Java对象的消息。
BytesMessage:一种主体中包含连续字节流的消息。

消息的传递模型:
JMS支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,
简称pub/sub)。
二者有以下区别:
1.PTP 消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue表示。
2.Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。

注意:每种模型都通过扩展公用基类来实现。例如,javax.jms.Queue 和javax.jms.Topic都扩展自
javax.jms.Destination 类。

 

开发步骤如下:
一、配置destinations-service.xml文件。
JBOSS使用一个XML文件配置队列地址,文件的取名格式应遵循*-service.xml,我取名为
destinations-service.xml。
jboss默认的全局JNDI名称组成为:"queue"+"/"+"目标地址"。
开始JMS编程前,我们需要先配置消息到达的目标地址(Destination),因为只有目标地址存在了,
我们才能发送消息到这个地址。由于每个应用服务器关于目标地址的配置方式都有所不同,下面以jboss为例,配置一个queue类型的目标地址。
<?xml version="1.0" encoding="UTF-8"?>
<server>
   <mbean code="org.jboss.mq.server.jmx.Queue" 

name="jboss.mq.destination:service=Queue,name=ztfQueue">
      <attribute name="JNDIName">queue/ztfQueue</attribute>
      <depends optional-attribute-

name="DestinationManager">jboss.mq:service=DestinationManager</depends>
    </mbean>
   <mbean code="org.jboss.mq.server.jmx.Topic" 

name="jboss.mq.destination:service=Topic,name=ztfTopic">
      <attribute name="JNDIName">topic/ztfTopic</attribute>
      <depends optional-attribute-

name="DestinationManager">jboss.mq:service=DestinationManager</depends>
    </mbean>
</server>
注意:任何队列或主题被部署之前,应用服务器必须先部署Destination Manager Mbean,所有我们
通过<depends>节点声明这一依赖。

二、在java类中发送消息(用到jndi.properties)。
一般发送消息有以下步骤:
1.得到一个JNDI初始化上下文(Context)
InitialContext ctx = new InitialContext();

2.根据上下文查找一个连接工厂ConnectionFactory,改连接工厂是由JMS提供的,不需我们自己创建,每个厂商都为它绑定了一个全局JNDI,我们通过它的全局JNDI便获取它;
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");

3.从连接工厂得到一个连接QueueConnection。
QueueConnection conn = factory.createQueueConnection();

4.通过连接来建立一个会话(Session);
QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
这句代码意思是:建立不需要事务的并且能自动确立消息已接收的会话。

5.查找目标地址:
Destination destination=(Destination)ctx.lookup("queue/ztfQueue");

6.根据会话以及目标地址来建立消息生产者MessageProducer(QueueSender和TopicPublisher都扩展自MessageProducer接口):
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("您好:荆州,这是我的第一个消息驱动Bean");
producer.send(msg);

三、采用MessageDrivenBean接收消息。
当容器检测到bean守候的目标地址有消息到达时,容器调用onMessage()方法,将消息作为参数传入
MDB。MDB在onMessage()中决定如何处理改消息。你可以使用注解指定MDB监听哪一个目标地址(Destination)。当MDB部署时,容器将读取其中的配置信息。

一个MDB通常要实现MessageListener接口,在接口定义了onMessage()方法。Bean通过它来处理收到的JMS消息。
@MessageDriven(activationConfig=
{
 @ActivationConfigProperty

(propertyName="destinationType",propertyValue="javax.jms.Queue"),
 @ActivationConfigProperty

(propertyName="destination",propertyValue="queue/ztfQueue"),
 @ActivationConfigProperty(propertyName="acknowledgeMode",propertyValue="Auto-

acknowledge")
})
public class MessageDrivenBean implements MessageListener{
 public void onMessage(Message message) {
  TextMessage msg = (TextMessage)message;
  try {
   System.out.println(msg.getText());
  } catch (JMSException e) {
   e.printStackTrace();
  }
 }
}

四、把工程src下的文件打成jar包(用到build.xml),在C:\jboss-5.0.0.GA\server\default\deploy进行部署。

五、运行发送消息的java类,此时在console中就可看见结果了。

六、至此,一个MessageDrivenBean开发就成功了。


posted @ 2009-03-27 17:43 断点 阅读(158) | 评论 (0) 

posted @ 2010-01-13 22:47 断点 阅读(349) | 评论 (0)编辑 收藏

实体bean:
1.它属于java持久化规范(简称JPA)里的技术,Entitybean通过元数据在javabean和数据库表之间建立起映射关系,然后Java程序员就可以使用
面向对象的编程思想来操纵数据库。

2.通过注解使实体bean与数据库表相映射。

3.当客户端远程调用EJB时,数据在传送工程中是需要序列化的 ,业务方法是要返回Entitybean对象到客户端,显然Entitybean对象是要进行序列化的过程,所以要实现序列化接口,即对象在交互时需要实现序列化。

4.Entitybean主键值的生成方式。
@GeneratedValue(strategy = GenerationType.IDENTITY)针对Mysql,
@GeneratedValue(strategy = GenerationType.SEQUENCE)针对Oracle,
@GeneratedValue(strategy = GenerationType.AUTO)自动匹配数据库。

5.需要保留一个无参的构造函数,是JPA规范要求的,如果没有,在运行时是要报错的。

6.对象之间的比较,通常采用对象标志属性来进行比较,也就是ID进行比较,因此现在重载hashCode、equals两个方法。

 

JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,目前实现的JPA规范的主流产品有Hibernate、Toplink和OpenJPA,在jboss中采用了Hibernate作为其持久化实现产品。

 

根据JPA规范的要求:在实体bean应用中,我们需要在应用的类路径下的META-INF目录加入持久化配置文件persistence.xml。
persistence.xml文件用于指定Entitybean使用的数据源及EntityManager对象的默认行为。
persistence.xml的配置说明如下:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
 
 <!--  一个持久化单元是一个Entitybean的集合,JTA代表全局事物。-->
 <persistence-unit name="ztf" transaction-type="JTA">
  <jta-data-source>java:/ztfDS</jta-data-source>
  <properties>
   <!-- 根据元数据生成数据库的表结构。 -->
   <property name="hibernate.hbm2ddl.auto" value="update"/>
   <!-- 显示执行的SQL。 -->
   <property name="hibernate.show_sql" value="true"/>
   <!-- 格式化显示的SQL 。 -->
   <property name="hibernate.format_sql" value="true"/>
   <!-- SQL方言。 -->
   <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
  </properties>
 </persistence-unit>
</persistence>

注意:因为jboss 采用Hibernate,Hibernate 有一项属性hibernate.hbm2ddl.auto,该属性指定实体Bean发布时是否同步数据库结构。

1.如果hibernate.hbm2ddl.auto的值设为create-drop,在实体Bean发布及卸载时将自动创建及删除相应数据库表(注意:Jboss 服务器启动或关闭时也会引发实体Bean 的发布及卸载)。

2.如果hibernate.hbm2ddl.auto的值设为update,以后为了实体bean的改动能反应到数据表,建议使用update,这样实体Bean 添加一个属性时能同时在数据表增加相应字段。


posted @ 2009-03-26 12:35 断点 阅读(166) | 评论 (0)

posted @ 2010-01-13 22:45 断点 阅读(383) | 评论 (0)编辑 收藏

远程接口调用ejb的过程:
首先客户端需要与ejb建立起socket通信,在通信管道上他们之间需要来回发送IIOP协议消息,因为数据要在网络进行传输,存放数据的java对象必须要进行序列化。这个过程中,有网络通信的开销、协议解析的开销、对象序列化的开销。因为ejb是分布式技术,它允许客户端与ejb应用在不同一机器上面,所以这些开销也是必然的。

本地接口调用ejb的过程:
通过本地接口调用ejb,直接在内存交互,这样就可以避免因网络通信所造成的各种性能开销。
注意:
1.只有客户端与EJB应用都在同一个JVM内运行的时候,我们才能调用本地接口,否则只能调用远程接口。
2.只要客户端与ejb发布在同一个jboss内,我们就认为它们在同一个JVM。
3.客户端可以调用本地接口;也可调用远程接口;当本地接口与远程接口都有同一个方法时,优先调用本地接口中的方法。

开发一个自己的远程接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Remote(HelloWorld.class) //为接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorld 为远程接口。
InitialContext ctx = new InitialContext();
HelloWorld helloWorld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。

开发一个自己的本地接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Local(HelloWorldLocal.class)//接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorldLocal 为本地接口。
InitialContext ctx = new InitialContext();
HelloWorldLocal helloWorld = (HelloWorldLocal)ctx.lookup("HelloWorldLocalBean/local");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。

Bean实例的两种管理技术:
1.无状态bean使用实例池技术管理bean;
2.有状态bean使用激活(activation)管理bean。

Jboss生成的JNDI名称,默认命名规则如下:
如果把EJB应用打包成后题为.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例如:把EJB-HelloWorld(里面包含接口HelloWorld和实现类HelloWorldBean)应用打包成EJB-HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote。

jndi.properties的配置:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099


posted @ 2009-03-26 09:56 断点 阅读(255) | 评论 (0)

posted @ 2010-01-13 22:42 断点 阅读(346) | 评论 (0)编辑 收藏

要发布EJB 时必须把她打成*.jar 文件,一个EJB 打包后的目录结构如下:
EJB 应用根目录:
| -- com (你的.class 文件)
| -- META-INF
| -- MANIFEST.MF (如果使用工具打包,该文件由工具自动生成)
打包的方式有很多,如:jar 命令行、集成开发环境的打包向导和Ant 任务。

下面介绍Elispse 打包向导和Ant 打包任务。
1. Elispse 打包向导
在Elispse 开发环境下,可以通过向导进行打包。右击项目名称,在跳出的菜单中选择Export-->Java-->JAR file,在"选择要导出的资源"时,选择源目录和用到的资源然,后选择一个存放目录及文件名,点"完成"就结束了打包。

2. Ant 打包任务
主要是在Eclipse下,通过配置build.xml进行ANT 打包,来提高开发效率,也是推荐的打包方式。
下面我们看一个简单的打包任务。
<?xml version="1.0" encoding="UTF-8"?>
<project name="EJB-HelloWorld" basedir=".">
<property name="src.dir" value="${basedir}\src" />
<property environment="env" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<property name="build.dir" value="${basedir}\build" />

<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar"></include>
</fileset>
<pathelement location="${build.dir}"/>
</path>

<target name="prepare">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
</target>

<target name="compile" depends="prepare" description="编译 ">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath" />
</javac>
</target>

<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${basedir}\${ant.project.name}.jar" >
<fileset dir="${build.dir}" >
<include name="**/*.class"></include>
</fileset>
</jar>
</target>

<target name="deploy" depends="ejbjar" description="发布EJB">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
</target>

<target name="undeploy" description="卸载EJB">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/>
</target>
</project>

再右健点击此配置文件build.xml,选择Run As-->Ant Build即可!


posted @ 2009-03-26 09:51 断点 阅读(158) | 评论 (0)

posted @ 2010-01-13 22:39 断点 阅读(585) | 评论 (0)编辑 收藏

仅列出标题
共18页: First 上一页 10 11 12 13 14 15 16 17 18 下一页