基于jms使用ActiveMQ实现异步日志功能.消息持久到oracle 10g 数据库
importjava.io.Serializable;
importorg.apache.commons.lang.builder.EqualsBuilder;
importorg.apache.commons.lang.builder.HashCodeBuilder;
importorg.apache.commons.lang.builder.ReflectionToStringBuilder;
importorg.apache.commons.lang.builder.ToStringBuilder;
publicclassBaseEntityimplementsSerializable{
/**
publicStringtoString(){
returnReflectionToStringBuilder.toString(this);
}
publicbooleanequals(Objectother){
if((this==other))returntrue;
returnEqualsBuilder.reflectionEquals(this,other);
}
publicinthashCode(){
returnHashCodeBuilder.reflectionHashCode(this);
}
}
----------------------------
定义bean
packageaskyaya.entity;
importjava.util.Date;
publicclassVisitStatInfoBeanextendsBaseEntity{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
Stringvisitor_ip;
Stringserver_ip;
Stringpage_url;
Stringparameter;
StringReferer_page;
intVisitor_type;
intserver_id;
intcolumn_id;
intpage_id;
intVisit_count;
intUser_id;
intProduct_id;
intSeller_id;
Dateinfo_date;
publicDategetInfo_date(){
returninfo_date;
}
publicvoidsetInfo_date(Dateinfo_date){
this.info_date=info_date;
}
publicintgetColumn_id(){
returncolumn_id;
}
publicvoidsetColumn_id(intcolumn_id){
this.column_id=column_id;
}
publicintgetPage_id(){
returnpage_id;
}
publicvoidsetPage_id(intpage_id){
this.page_id=page_id;
}
publicStringgetPage_url(){
returnpage_url;
}
publicvoidsetParameter(Stringparameter){
this.parameter=parameter;
}
publicStringgetParameter(){
returnparameter;
}
publicvoidsetPage_url(Stringparameter){
this.parameter=parameter;
}
publicintgetProduct_id(){
returnProduct_id;
}
publicvoidsetProduct_id(intproduct_id){
Product_id=product_id;
}
publicStringgetReferer_page(){
returnReferer_page;
}
publicvoidsetReferer_page(Stringreferer_page){
Referer_page=referer_page;
}
publicintgetSeller_id(){
returnSeller_id;
}
publicvoidsetSeller_id(intseller_id){
Seller_id=seller_id;
}
publicintgetServer_id(){
returnserver_id;
}
publicvoidsetServer_id(intserver_id){
this.server_id=server_id;
}
publicStringgetServer_ip(){
returnserver_ip;
}
publicvoidsetServer_ip(Stringserver_ip){
this.server_ip=server_ip;
}
publicintgetUser_id(){
returnUser_id;
}
publicvoidsetUser_id(intuser_id){
User_id=user_id;
}
publicintgetVisit_count(){
returnVisit_count;
}
publicvoidsetVisit_count(intvisit_count){
Visit_count=visit_count;
}
publicStringgetVisitor_ip(){
returnvisitor_ip;
}
publicvoidsetVisitor_ip(Stringvisitor_ip){
this.visitor_ip=visitor_ip;
}
publicintgetVisitor_type(){
returnVisitor_type;
}
publicvoidsetVisitor_type(intvisitor_type){
Visitor_type=visitor_type;
}
@Override
publicinthashCode(){
finalintPRIME=31;
intresult=super.hashCode();
result=PRIME*result+Product_id;
result=PRIME*result+((Referer_page==null)?0:Referer_page.hashCode());
result=PRIME*result+Seller_id;
result=PRIME*result+User_id;
result=PRIME*result+Visit_count;
result=PRIME*result+Visitor_type;
result=PRIME*result+column_id;
result=PRIME*result+((info_date==null)?0:info_date.hashCode());
result=PRIME*result+page_id;
result=PRIME*result+((page_url==null)?0:page_url.hashCode());
result=PRIME*result+server_id;
result=PRIME*result+((server_ip==null)?0:server_ip.hashCode());
result=PRIME*result+((visitor_ip==null)?0:visitor_ip.hashCode());
returnresult;
}
@Override
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(!super.equals(obj))
returnfalse;
if(getClass()!=obj.getClass())
returnfalse;
finalVisitStatInfoBeanother=(VisitStatInfoBean)obj;
if(Product_id!=other.Product_id)
returnfalse;
if(Referer_page==null){
if(other.Referer_page!=null)
returnfalse;
}elseif(!Referer_page.equals(other.Referer_page))
returnfalse;
if(Seller_id!=other.Seller_id)
returnfalse;
if(User_id!=other.User_id)
returnfalse;
if(Visit_count!=other.Visit_count)
returnfalse;
if(Visitor_type!=other.Visitor_type)
returnfalse;
if(column_id!=other.column_id)
returnfalse;
if(info_date==null){
if(other.info_date!=null)
returnfalse;
}elseif(!info_date.equals(other.info_date))
returnfalse;
if(page_id!=other.page_id)
returnfalse;
if(page_url==null){
if(other.page_url!=null)
returnfalse;
}elseif(!page_url.equals(other.page_url))
returnfalse;
if(server_id!=other.server_id)
returnfalse;
if(server_ip==null){
if(other.server_ip!=null)
returnfalse;
}elseif(!server_ip.equals(other.server_ip))
returnfalse;
if(visitor_ip==null){
if(other.visitor_ip!=null)
returnfalse;
}elseif(!visitor_ip.equals(other.visitor_ip))
returnfalse;
returntrue;
}
}
----------------------------
publicstaticvoidrecordVisit_JMS_Info(Stringvisitor_ip,Stringserver_ip,Stringpage_url,Stringparameter,StringReferer_page,
intVisitor_type,intserver_id,intcolumn_id,intpage_id,intVisit_count,intUser_id,
intProduct_id,intSeller_id)
{
//从页面上record_visit.jsp点击中,触发了这个方法
VisitStatInfoBeanvisitStatInfoBean=newVisitStatInfoBean();
visitStatInfoBean.setVisitor_ip(visitor_ip);
visitStatInfoBean.setServer_ip(server_ip);
visitStatInfoBean.setPage_url(page_url);
visitStatInfoBean.setReferer_page(Referer_page);
visitStatInfoBean.setVisitor_type(Visitor_type);
visitStatInfoBean.setServer_id(server_id);
visitStatInfoBean.setColumn_id(column_id);
visitStatInfoBean.setPage_id(page_id);
visitStatInfoBean.setVisit_count(Visit_count);
visitStatInfoBean.setUser_id(User_id);
visitStatInfoBean.setProduct_id(Product_id);
visitStatInfoBean.setSeller_id(Seller_id);
visitStatInfoBean.setInfo_date(newDate());
//VisitLogSenderproducer=newVisitLogSender();
try{
VisitLogSendervisitLogSender=VisitLogSender.getVisitLogSender();
visitLogSender.sendMessage(visitStatInfoBean);
//producer.close();
}catch(Exceptione){
e.printStackTrace();
//TODO:handleexception
}
}
..............
关键点是下面的
VisitLogSendervisitLogSender=VisitLogSender.getVisitLogSender();//单例
visitLogSender.sendMessage(visitStatInfoBean);//发送消息
..........
------------------------
packageaskyaya.jms;
importjavax.jms.Connection;
importjavax.jms.DeliveryMode;
importjavax.jms.Destination;
importjavax.jms.JMSException;
importjavax.jms.MessageProducer;
importjavax.jms.ObjectMessage;
importjavax.jms.Session;
importorg.apache.activemq.ActiveMQConnectionFactory;
importaskyaya.entity.VisitStatInfoBean;
importaskyaya.visitlog.GetJmsUrl;
/**
*@author作者Administrator:金果
*@version创建时间:
*类说明:
*/
publicclassVisitLogSender{
privatestaticStringsubject="askyaya.visit.log";
privatestaticDestinationdestination=null;//消息的目的地
privatestaticConnectionconnection=null;//JMS客户端到JMSProvider的连接
privatestaticSessionsession=null;//一个发送或接收消息的线程
privatestaticMessageProducerproducer=null;//由Session对象创建的用来发送消息的对象
privatestaticVisitLogSendervisitLogSender=null;
publicstaticVisitLogSendergetVisitLogSender(){
if(visitLogSender==null){
visitLogSender=newVisitLogSender();
try{
visitLogSender.initialize();
}catch(Exceptione)
{e.printStackTrace();}
}
returnvisitLogSender;
}
publicvoidinitialize()throwsJMSException,Exception{
System.out.println("url----------->"+GetJmsUrl.getUrl());
ActiveMQConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("","",GetJmsUrl.getUrl());
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);//不用事务了,session以自动方式接收,通用性好
destination=session.createQueue(subject);
producer=session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);//以持久的方式到队列oracle数据库
}
//发送消息
publicvoidsendMessage(VisitStatInfoBeanmessage)throwsJMSException,Exception{
ObjectMessagemsg=session.createObjectMessage();
msg.setObject(message);
System.out.println("Producer:->Sendingaskyaya_2007message:"+message);
System.out.println("Producer:->Sendingaskyaya_2007msg:"+msg);
producer.send(msg);
System.out.println("Producer:->askyaya_2007Messagesentcomplete!");
}
//关闭连接
publicvoidclose()throwsJMSException{
System.out.println("Producer:->Closingconnection");
if(producer!=null)
producer.close();
if(session!=null)
session.close();
if(connection!=null)
connection.close();
}
}
----------------------------------------------
开始收了啊
我是另外建了工程
packageaskyaya.jms;
importjavax.jms.Connection;
importjavax.jms.Destination;
importjavax.jms.JMSException;
importjavax.jms.Message;
importjavax.jms.MessageConsumer;
importjavax.jms.MessageListener;
importjavax.jms.ObjectMessage;
importjavax.jms.Session;
importorg.apache.activemq.ActiveMQConnection;
importorg.apache.activemq.ActiveMQConnectionFactory;
importaskyaya.dao.VisitStatInfoDao;
importaskyaya.entity.VisitStatInfoBean;
importaskyaya.util.GetJmsUrl;
/**
*@author作者Administrator:jinguo
*@version创建时间:2008-8-30上午10:55:47
*类说明:
*/
publicclassReceiveVisitLogimplementsMessageListener{
//privateStringuser=ActiveMQConnection.DEFAULT_USER;
//privateStringpassword=ActiveMQConnection.DEFAULT_PASSWORD;
//privateStringurl=ActiveMQConnection.DEFAULT_BROKER_URL;
privatestaticStringsubject="askyaya.visit.log";
privatestaticDestinationdestination=null;
privatestaticConnectionconnection=null;
privatestaticSessionsession=null;
privatestaticMessageConsumerconsumer=null;
//privateMessageProducerreplyProducer;//反馈信息
//连接connection,getsession
privatestaticReceiveVisitLogreceivevisitlog=null;
publicstaticReceiveVisitLoggetReceiveVisitLog(){
if(receivevisitlog==null){
receivevisitlog=newReceiveVisitLog();
try{
initialize();
}catch(Exceptione){
e.printStackTrace();
//TODO:handleexception
}
}
returnreceivevisitlog;
}
privatestaticvoidinitialize()throwsJMSException{
GetJmsUrlurl=newGetJmsUrl();
//ActiveMQConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(user,password,url);
System.out.println("url---M:"+url.getUrl());
ActiveMQConnectionFactoryconnectionFactory=newActiveMQConnectionFactory("","",url.getUrl());
System.out.println("connecttotcp:192.168.0.245");
Connectionconnection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue(subject);
//DestinationadvisoryDestination=AdvisorySupport.getProducerAdvisoryTopic(destination)
consumer=session.createConsumer(destination);
}
//消费消息
publicvoidconsumeMessage()throwsJMSException,Exception{
//开始监听
//MessageListenerForOrgMsgmsgListener=newMessageListenerForOrgMsg();
consumer.setMessageListener(this);
System.out.println("Consumer:->afterlistenermessage...");
//如果想要去想主动的去接受消息,起用下面的
//Messagemessage=consumer.receiveNoWait();
//TextMessagemessage=(TextMessage)consumer.receive(1000);
}
//消息处理函数(onMessage是个构造函数继承,consumerTool开始执行的时候,先要初始化它,然后才initialze())
//由container选择一个实例
publicvoidonMessage(Messagemessage){
try{
System.out.println("Consumer:->Beginreceivemessage--->:"+message);
if(message!=null){
if(messageinstanceofObjectMessage){
ObjectMessageobjmsg=(ObjectMessage)message;
//从消息中提取对象,转化为bean对象
VisitStatInfoBeanvisitinfo=(VisitStatInfoBean)objmsg.getObject();
//隔离对数据库的直接访问,
VisitStatInfoDaovistdao=newVisitStatInfoDao();
//向数据库中插入消息
vistdao.insert(visitinfo);
System.out.println("Consumer:->afterinsertmessagedb");
}
}
//消费消息中在onMessage()方法中接收producer发送过来的消息进行处理,并可以通过replyProducer反馈信息给producer
/*if(message.getJMSReplyTo()!=null){
replyProducer.send(message.getJMSReplyTo(),session.createTextMessage("Reply:"+message.getJMSMessageID()));
}*/
}catch(Exceptione){
e.printStackTrace();
}
}
//关闭连接
publicvoidclose()throwsJMSException{
System.out.println("Consumer:->Closingconnection");
if(consumer!=null)
consumer.close();
if(session!=null)
session.close();
if(connection!=null)
connection.close();
}
publicstaticvoidmain(String[]args){
//取得接收信息
ReceiveVisitLogreceiveVisitLog=ReceiveVisitLog.getReceiveVisitLog();
GetJmsUrlurl=newGetJmsUrl();
//接收信息时间间隔
//intsleepTime=30*1000;
intsleepTime=Integer.parseInt(url.getSleepTime());
while(true){
try{
System.out.println("睡眠"+sleepTime/1000+"秒之后,开始接收消息......");
receiveVisitLog.consumeMessage();
Thread.sleep(sleepTime);
System.out.println("接收消息完毕.");
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
--------------------------------
为了方便大家我把dao方法也贴了出来
packageaskyaya.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importaskyaya.entity.VisitStatInfoBean;
publicclassVisitStatInfoDao{
publicvoidinsert(VisitStatInfoBeanvfBean)throwsSQLException{
ConnectionApplicationConn=askyaya.util.DBManager.getconn();
Stringstrsql="insertintotbl_visit_stat_info(visitor_ip,server_id,server_ip,column_id,"
+"page_id,page_url,parameter,Visit_count,User_id,Visitor_type,Product_id,Seller_id,"
+"Info_date,visit_date,Referer_page)values(?,?,?,?,?,?,?,?,?,?,?,?,Sysdate,to_char(Sysdate,'yyyy-mm-dd'),?)";
PreparedStatementpstmt=null;
ApplicationConn.setAutoCommit(false);
try{
pstmt=ApplicationConn.prepareStatement(strsql);
//VisitStatInfoBeanvfBean=newVisitStatInfoBean();
pstmt.setString(1,vfBean.getVisitor_ip());
pstmt.setInt(2,vfBean.getServer_id());
pstmt.setString(3,vfBean.getServer_ip());
pstmt.setInt(4,vfBean.getColumn_id());
pstmt.setInt(5,vfBean.getPage_id());
pstmt.setString(6,vfBean.getPage_url());
pstmt.setString(7,vfBean.getParameter());
pstmt.setInt(8,vfBean.getVisit_count());
pstmt.setInt(9,vfBean.getUser_id());
pstmt.setInt(10,vfBean.getVisitor_type());
pstmt.setInt(11,vfBean.getProduct_id());
pstmt.setInt(12,vfBean.getSeller_id());
pstmt.setString(13,vfBean.getReferer_page());
pstmt.executeUpdate();
ApplicationConn.commit();
//System.out.println("insertthetbl_visit_stat_infoisend");
}catch(SQLExceptionsqle){
interrcode=sqle.getErrorCode();
//System.err.println("aq.executeQuery:"+sqle.getMessage()+":;");
//违反唯一约束
if(errcode==1){}
else{
//System.err.println("aq.executeQuery:"+sqle.getMessage()+":;");
}
ApplicationConn.rollback();
}finally{
try{
pstmt.close();
ApplicationConn.close();
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
}
---------------------------------
得到地址的通用方法
packageaskyaya.util;
importjava.io.InputStream;
importjava.util.Properties;
publicclassGetJmsUrl{
privatefinalstaticStringstrUrl=null;
privatefinalstaticStringsleeptime=null;
privatefinalPropertiesprops=newProperties();
privatefinalStringurl="askyayaJmsConstant.properties";
publicGetJmsUrl(){
}
publicStringgetUrl(){
InputStreamis=getClass().getResourceAsStream(url);
try{
if(strUrl==null){
props.load(is);
}
}catch(Exceptione){
System.err.println("CannotreadthePropertiesfile"+url);
}
StringstrUrl=props.getProperty("hostname");
returnstrUrl;
}
publicStringgetSleepTime(){
InputStreamis=getClass().getResourceAsStream(url);
try{
if(sleeptime==null){
props.load(is);
}
}catch(Exceptione){
e.printStackTrace();
//TODO:handleexception
}
StringstrSleepTime=props.getProperty("sleepTime");
returnstrSleepTime;
}
}
------------------------
askyayaJmsConstant.properties
设置如下:
hostname=tcp://192.168.0.245:61616?wireFormat.maxInactivityDuration=0
sleepTime=30000
---------------
我把服务器的activemq.xml配置也贴出来把,很关键的哟,不懂可以问我.
<!--
LicensedtotheApacheSoftwareFoundation(ASF)underoneormore
contributorlicenseagreements.SeetheNOTICEfiledistributedwith
thisworkforadditionalinformationregardingcopyrightownership.
TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.0
(the"License");youmaynotusethisfileexceptincompliancewith
theLicense.YoumayobtainacopyoftheLicenseat
http://www.apache.org/licenses/LICENSE-2.0
Unlessrequiredbyapplicablelaworagreedtoinwriting,software
distributedundertheLicenseisdistributedonan"ASIS"BASIS,
WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
SeetheLicenseforthespecificlanguagegoverningpermissionsand
limitationsundertheLicense.
-->
<!--STARTSNIPPET:example-->
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/corehttp://activemq.apache.org/schema/core/activemq-core.xsd
http://activemq.apache.org/camel/schema/springhttp://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
<!--Allowsustousesystempropertiesasvariablesinthisconfigurationfile-->
<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<brokerxmlns="http://activemq.apache.org/schema/core"brokername="localhost"dataDirectory="${activemq.base}/data">
<!--Destinationspecificpoliciesusingdestinationnamesorwildcards-->
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntryqueue=">"memoryLimit="5mb"/>
<policyEntrytopic=">"memoryLimit="5mb">
<dispatchPolicy>
<strictOrderDispatchPolicy/>
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy/>
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<!--UsethefollowingtoconfigurehowActiveMQisexposedinJMX-->
<managementContext>
<managementContextcreateConnector="false"/>
</managementContext>
<!--ThestoreandforwardbrokernetworksActiveMQwilllistento-->
<networkConnectors>
<!--bydefaultjustautodiscovertheotherbrokers-->
<networkConnectorname="default-nc"uri="multicast://default"/>
<!--Exampleofastaticconfiguration:
<networkConnectorname="host1andhost2"uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
-->
</networkConnectors>
<!--
<persistenceAdapter>
<amqPersistenceAdaptersyncOnWrite="false"directory="${activemq.base}/data"maxFileLength="20mb"/>
</persistenceAdapter>
-->
<!--UsethefollowingifyouwishtoconfigurethejournalwithJDBC-->
<!--
<persistenceAdapter>
<journaledJDBCdataDirectory="${activemq.base}/data"dataSource="#postgres-ds"/>
</persistenceAdapter>
-->
<!--OrifyouwanttousepureJDBCwithoutajournal-->
<persistenceAdapter>
<jdbcPersistenceAdapterdataSource="#oracle-ds"/>
</persistenceAdapter>
<!--Themaximumaboutofspacethebrokerwillusebeforeslowingdownproducers-->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsagelimit="20mb"/>
</memoryUsage>
<storeUsage>
<storeUsagelimit="1gb"name="foo"/>
</storeUsage>
<tempUsage>
<tempUsagelimit="100mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<!--ThetransportconnectorsActiveMQwilllistento-->
<transportConnectors>
<transportConnectorname="openwire"uri="tcp://192.168.0.245:61616?wireFormat.maxInactivityDuration=0"discoveryUri="multicast://default"/>
<transportConnectorname="ssl"uri="ssl://192.168.0.245:61617"/>
<transportConnectorname="stomp"uri="stomp://192.168.0.245:61613"/>
<transportConnectorname="xmpp"uri="xmpp://192.168.0.245:61222"/>
</transportConnectors>
</broker>
<!--
**LetsdeploysomeEnterpriseIntegrationPatternsinsidetheActiveMQMessageBroker
**Formoredetailssee
**
**http://activemq.apache.org/enterprise-integration-patterns.html
-->
<camelContextid="camel"xmlns="http://activemq.apache.org/camel/schema/spring">
<!--Youcanusea<package>elementforeachrootpackagetosearchforJavaroutes-->
<package>org.foo.bar</package>
<!--YoucanuseSpringXMLsyntaxtodefinetherouteshereusingthe<route>element-->
<route>
<fromuri="activemq:example.A"/>
<touri="activemq:example.B"/>
</route>
</camelContext>
<!--UncommenttocreateacommandagenttorespondtomessagebasedadmincommandsontheActiveMQ.Agenttopic-->
<!--
<commandAgentxmlns="http://activemq.apache.org/schema/core"brokerUrl="vm://localhost"/>
-->
<!--AnembeddedservletengineforservinguptheAdminconsole-->
<jettyxmlns="http://mortbay.com/schemas/jetty/1.0">
<connectors>
<nioConnectorport="8161"/>
</connectors>
<handlers>
<webAppContextcontextPath="/admin"resourceBase="${activemq.base}/webapps/admin"logUrlOnStart="true"/>
<webAppContextcontextPath="/demo"resourceBase="${activemq.base}/webapps/demo"logUrlOnStart="true"/>
<webAppContextcontextPath="/fileserver"resourceBase="${activemq.base}/webapps/fileserver"logUrlOnStart="true"/>
</handlers>
</jetty>
<!--Thisxbeanconfigurationfilesupportsallthestandardspringxmlconfigurationoptions-->
<!--PostgresDataSourceSampleSetup-->
<!--
<beanid="postgres-ds"class="org.postgresql.ds.PGPoolingDataSource">
<propertyname="serverName"value="localhost"/>
<propertyname="databaseName"value="activemq"/>
<propertyname="portNumber"value="0"/>
<propertyname="user"value="activemq"/>
<propertyname="password"value="activemq"/>
<propertyname="dataSourceName"value="postgres"/>
<propertyname="initialConnections"value="1"/>
<propertyname="maxConnections"value="10"/>
</bean>
-->
<!--MySqlDataSourceSampleSetup-->
<!--
<beanid="mysql-ds"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<propertyname="username"value="activemq"/>
<propertyname="password"value="activemq"/>
<propertyname="maxActive"value="200"/>
<propertyname="poolPreparedStatements"value="true"/>
</bean>
-->
<!--OracleDataSourceSampleSetup-->
<beanid="oracle-ds"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
<propertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"/>
<propertyname="url"value="jdbc:oracle:thin:@192.168.0.245:1521:askyaya"/>
<propertyname="username"value="activemq"/>
<propertyname="password"value="activemq"/>
<propertyname="maxActive"value="200"/>
<propertyname="poolPreparedStatements"value="true"/>
</bean>
<!--EmbeddedDerbyDataSourceSampleSetup-->
<!--
<beanid="derby-ds"class="org.apache.derby.jdbc.EmbeddedDataSource">
<propertyname="databaseName"value="derbydb"/>
<propertyname="createDatabase"value="create"/>
</bean>
-->
</beans>
<!--ENDSNIPPET:example-->
----------------------
以上我用jdbc来写的,速度非常快,也可以hibernate实现如果有大虾知道的话贴出来,
最后吗,有些人问我,什么样的人适合做程序员,告诉大家
就是突破能力一定要强,想锻炼这能力,多看看书哟.以上实现我只用一个星期就基本就解决了jms大部分难点.