??xml version="1.0" encoding="utf-8" standalone="yes"?>国产99精品,欧美一区二区播放,老司机久久99久久精品播放免费 http://www.aygfsteel.com/huabingl/category/11665.html走过的\zh-cnTue, 19 Feb 2008 12:52:51 GMTTue, 19 Feb 2008 12:52:51 GMT60System.getProperty()参数大全http://www.aygfsteel.com/huabingl/archive/2008/02/18/180504.htmlbingebingeMon, 18 Feb 2008 09:43:00 GMThttp://www.aygfsteel.com/huabingl/archive/2008/02/18/180504.htmlhttp://www.aygfsteel.com/huabingl/comments/180504.htmlhttp://www.aygfsteel.com/huabingl/archive/2008/02/18/180504.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/180504.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/180504.htmlSystem.getProperty()参数大全  
  •   
  • java.version            Java Runtime Environment version  
  • java.vendor            Java Runtime Environment vendor  
  • java.vendor.url            Java vendor URL  
  • java.home            Java installation directory  
  • java.vm.specification.version                    Java Virtual Machine specification version  
  • java.vm.specification.vendor                    Java Virtual Machine specification vendor  
  • java.vm.specification.name                    Java Virtual Machine specification name  
  • java.vm.version            Java Virtual Machine implementation version  
  • java.vm.vendor            Java Virtual Machine implementation vendor  
  • java.vm.name            Java Virtual Machine implementation name  
  • java.specification.version                Java Runtime Environment specification version  
  • java.specification.vendor             Java Runtime Environment specification vendor  
  • java.specification.name        Java Runtime Environment specification name  
  • java.class.version                        Java class format version number  
  • java.class.path                  Java class path  
  • java.library.path                        List of paths to search when loading libraries  
  • java.io.tmpdir                Default temp file path  
  • java.compiler            Name of JIT compiler to use  
  • java.ext.dirs            Path of extension directory or directories  
  • os.name                Operating system name  
  • os.arch                Operating system architecture  
  • os.version            Operating system version  
  • file.separator            File separator ("/" on UNIX)  
  • path.separator            Path separator (":" on UNIX)  
  • line.separator            Line separator ("\n" on UNIX)  
  • user.name            User's account name  
  • user.home            User's home directory  
  • user.dir                User's current working directory 


  • binge 2008-02-18 17:43 发表评论
    ]]>
    axis userguide(3)http://www.aygfsteel.com/huabingl/archive/2008/02/17/180348.htmlbingebingeSun, 17 Feb 2008 12:31:00 GMThttp://www.aygfsteel.com/huabingl/archive/2008/02/17/180348.htmlhttp://www.aygfsteel.com/huabingl/comments/180348.htmlhttp://www.aygfsteel.com/huabingl/archive/2008/02/17/180348.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/180348.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/180348.html服务cd

    在axis中有4中服务类?br /> RPC服务采用soap rpc的标准,and also the SOAP "section 5" encoding.
    Document 服务没有采用M~码Q所以你在组装时不会看到复杂对象的序列化以及soap-style数组Q,但是仍然作了xml和java对象的互映射?br /> Wrapped服务和Document服务cM
    Message 服务接受和返回soap Envelope中的L的xml而不需要mapping/data得榜定。如果你惛_理来自外部的原始的xmlQ可以采用Message 服务?/p>

    RPC服务
       q个服务是axis默认的服务。我们在前面的例子中写的是rpc服务?lt;service ... provider="java:RPC"> 。rpc服务遵从soap rpc规范和编码规则,意味着来自rpc服务的xml类g面例子中?#8220;echoString”--每个rpc调用被模块化Z个外部元素,匚w操作名称Qƈ包含了很多内部元素,每一个都是操作的一个参数。axis把q些xml转化为java对象Q配送给你得服务Qƈ序列化来自服务的java对象为xml.因ؓrpc服务默认采用soap section 5规则Q对象将会通过"multi-ref" 序列化来~码?br /> Document / Wrapped 服务
     q?个服务很cMQ都不需要用soap~码来处理数据。他是一个普通的xml格式。无论哪U情况,axisq是对他们做了xml到java得榜定,所以你最l处理的q是java对象Q而不是xmll构的字W串?br />  下面的例子来说明他们2个之间的区别?br />  <soap:Envelope xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
      <soap:Body>
        <myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
          <item>SK001</item>
          <quantity>1</quantity>
          <description>Sushi Knife</description>
        </myNS:PurchaseOrder>
      </soap:Body>
    </soap:Envelope>

    相关的PurchaseOrdercd定义如下Q?/p>

    <schema targetNamespace="http://commerce.com/PO">
      <complexType name="POType">
        <sequence>
          <element name="item" type="xsd:string"/>
          <element name="quantity" type="xsd:int"/>
          <element name="description" type="xsd:string"/>
        </sequence>
      </complexType>
      <element name="PurchaseOrder" type="POType"/>
    </schema>

    对于一个document服务来说Q他对应到q样的方?br /> public void method(PurchaseOrder po)

    换句话说Q整个PurchaseOrder元素被处理Z个单一的对象,包含3个属性?br /> 而对于wrapped服务来说Q他对应于下面的Ҏ
    public void purchaseOrder(String item, int quantity, String description)
    注意刎ͼ在wrapped中,PurchaseOrder元素被映ؓ代表了一个方法。他的参数就是他的那些元素?br /> 他们在wsdd得用如?br /> <service ... style="document"> for document style
    <service ... style="wrapped"> for wrapped style
    Message 服务
      当你需要处理纯xml而不是java对象Ӟ你将会用到这U服务?br />   message服务的方法有4中签?br /> public Element [] method(Element [] bodies);
    public SOAPBodyElement [] method (SOAPBodyElement [] bodies);
    public Document method(Document body);
    public void method(SOAPEnvelope req, SOAPEnvelope resp);



    binge 2008-02-17 20:31 发表评论
    ]]>
    axis userguide(2)http://www.aygfsteel.com/huabingl/archive/2008/02/17/180248.htmlbingebingeSun, 17 Feb 2008 04:17:00 GMThttp://www.aygfsteel.com/huabingl/archive/2008/02/17/180248.htmlhttp://www.aygfsteel.com/huabingl/comments/180248.htmlhttp://www.aygfsteel.com/huabingl/archive/2008/02/17/180248.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/180248.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/180248.html发布service
    ?U发布方式,一U是实例发布Q一U是描述W发?br /> 实例发布很简?br />   把我们的java源文件拷贝到axis目录下,Ҏ展名为jws
      然后可以直接访问了Q例如:
    java samples.userguide.example2.CalcClient -p8080 add 2 5
     他将调用addҎQ传递的2个变量分别ؓ2??br /> 很显ӞW一U方法有很多弊端Q比如需要源文gQ不能有包\径等{?br /> 描述W发?br /> 一个最单的例子如下Q?br /> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
      <service name="MyService" provider="java:RPC">
        <parameter name="className" value="samples.userguide.example3.MyService"/>
        <parameter name="allowedMethods" value="*"/>
      </service>
    </deployment>
    一个服务是一个targeted chain ,可能包含下面的一些或者全部:hHandlerQpivot Handler 支点HandlerQ响应Handler。支点hander在服务中叫做provider,在例子中我们的provider是java:RPCQ他被axis内嵌Q代表了Java RPC serviceQ具体的cLorg.apache.axis.providers.java.RPCProvider.
    我们告诉RPCProvider 我们要调用的服务MyServiceQƈ以参数的形式告诉他具体的目标以及可以被调用的Ҏ?br /> 我们也可以给我们要调用的对象讄作用范围scope,和servlet的scope一P有request,session,application.
    我们需要把q个描述W定义的内容告诉应用服务器才能真正提供我们需要的服务?br /> 如果已经部vaxis到tomcat,我们可以q样发布
    org.apache.axis.client.AdminClient deploy.wsdd
    q样我们的服务就可以通过soap来访问了
    试一?br /> java samples.userguide.example3.Client
      -lhttp://localhost:8080/axis/services/MyService "test me!"
    可以通过下面来查看所有已l部|的服务
    java org.apache.axis.client.AdminClient list
    来看看更q一步的应用Q用一下request handler
    <deployment xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
      <!-- define the logging handler configuration -->
      <handler name="track" type="java:samples.userguide.example4.LogHandler">
        <parameter name="filename" value="MyService.log"/>
       </handler>

      <!-- define the service, using the log handler we just defined -->
      <service name="LogTestService" provider="java:RPC">
        <requestFlow>
          <handler type="track"/>
        </requestFlow>

        <parameter name="className" value="samples.userguide.example4.Service"/>
        <parameter name="allowedMethods" value="*"/>
      </service>
    </deployment>
    q个例子会在客户端掉用LogTestService的时候,先调用samples.userguide.example4.LogHandler作记录操?br /> q程理
    默认状态下Qaxis只允许在axis部v的机器上使用理hQ如果希望在其他的机器上q行理操作可以参照下面的例?/p>

    <service name="AdminService" provider="java:MSG">
      <parameter name="className" value="org.apache.axis.util.Admin"/>
      <parameter name="allowedMethods" value="*"/>
      <parameter name="enableRemoteAdmin" value="true"/>
    </service>
    注意Q这样配|需要作必要的安全配|?/p>

    binge 2008-02-17 12:17 发表评论
    ]]>
    javascript操作word控ghttp://www.aygfsteel.com/huabingl/archive/2007/07/25/132228.htmlbingebingeWed, 25 Jul 2007 02:54:00 GMThttp://www.aygfsteel.com/huabingl/archive/2007/07/25/132228.htmlhttp://www.aygfsteel.com/huabingl/comments/132228.htmlhttp://www.aygfsteel.com/huabingl/archive/2007/07/25/132228.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/132228.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/132228.html<script language="javascript">
    //定义全局变量Q用于清理工?br>var word;
    var doc;
    function editFile(){
    //调用word控g
     word= new ActiveXObject("Word.Application");
    //屏蔽“另存?#8221;按钮
     word.CommandBars("File").Controls(5).Enabled= false;
      word.CommandBars("File").Controls(5).visible= false;
    //屏蔽"另存为网?按钮

     word.CommandBars("File").Controls(6).Enabled= false;
     word.CommandBars("File").Controls(6).visible= false;

     word.visible = true;
     // word.activate();
    try{
    //打开文g
      doc=word.Documents.Open("  //痕迹保留
      word.ActiveDocument.TrackRevisions   =true; 
    //切换成web视图
      word.ActiveDocument.ActiveWindow.View.Type=3
     
          }catch(e){
           alert(e.message);
          };  
    }
    function myfinalize(){
    //文保存
        doc.save();
    //文关闭
       doc.close();
    //把屏蔽的功能打开
       word.CommandBars("File").Controls(5).Enabled= true;
      word.CommandBars("File").Controls(5).visible= true;
    //word退?br> word.quit();
     
    }
    //参考文?br>  
    http://bbs.hidotnet.com/712/ShowPost.aspx



    binge 2007-07-25 10:54 发表评论
    ]]>
    AXIS User Guide(1)http://www.aygfsteel.com/huabingl/archive/2007/01/03/87359.htmlbingebingeWed, 03 Jan 2007 12:54:00 GMThttp://www.aygfsteel.com/huabingl/archive/2007/01/03/87359.htmlhttp://www.aygfsteel.com/huabingl/comments/87359.htmlhttp://www.aygfsteel.com/huabingl/archive/2007/01/03/87359.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/87359.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/87359.html阅读全文

    binge 2007-01-03 20:54 发表评论
    ]]>
    Sliding into WebDAVhttp://www.aygfsteel.com/huabingl/archive/2007/01/03/91624.htmlbingebingeWed, 03 Jan 2007 12:49:00 GMThttp://www.aygfsteel.com/huabingl/archive/2007/01/03/91624.htmlhttp://www.aygfsteel.com/huabingl/comments/91624.htmlhttp://www.aygfsteel.com/huabingl/archive/2007/01/03/91624.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/91624.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/91624.html阅读全文

    binge 2007-01-03 20:49 发表评论
    ]]>
    心对js函数命名,避免和它的内|函数重?/title><link>http://www.aygfsteel.com/huabingl/archive/2006/12/10/86671.html</link><dc:creator>binge</dc:creator><author>binge</author><pubDate>Sun, 10 Dec 2006 05:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/huabingl/archive/2006/12/10/86671.html</guid><wfw:comment>http://www.aygfsteel.com/huabingl/comments/86671.html</wfw:comment><comments>http://www.aygfsteel.com/huabingl/archive/2006/12/10/86671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huabingl/comments/commentRss/86671.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huabingl/services/trackbacks/86671.html</trackback:ping><description><![CDATA[<p>最q又遇到个对js取名不帅D错误的问?特开此脓,以示警戒:<br>不要把自qjs函数取成close(),open(),start()之类的名?!</p> <p>window得resizeto和resizebyҎҎ式窗口无效?/p> <img src ="http://www.aygfsteel.com/huabingl/aggbug/86671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huabingl/" target="_blank">binge</a> 2006-12-10 13:25 <a href="http://www.aygfsteel.com/huabingl/archive/2006/12/10/86671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j/common log和各U服务器集成的问?/title><link>http://www.aygfsteel.com/huabingl/archive/2006/09/05/67854.html</link><dc:creator>binge</dc:creator><author>binge</author><pubDate>Tue, 05 Sep 2006 09:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/huabingl/archive/2006/09/05/67854.html</guid><wfw:comment>http://www.aygfsteel.com/huabingl/comments/67854.html</wfw:comment><comments>http://www.aygfsteel.com/huabingl/archive/2006/09/05/67854.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huabingl/comments/commentRss/67854.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huabingl/services/trackbacks/67854.html</trackback:ping><description><![CDATA[  目前的很多商业和非商业的服务器中间g都默认集成了common-log甚至是log4j.因此当我门把我们的应用发布在上面的时?都会遇到关于log斚w的问?<br />  1.webshpere下面集成log4j.<br />  "WebSphere的类装入器方式有两种方式QPARENT_FIRST和PARENT_LAST。默认值是PARENT_FIRSTQ这U方式在载入当前classpath的类之前先蝲入其上一Uclassloader能够装入的类。这是标准的JVM classloader的默认策略。如果采用PARENT_LASTQ则q程正好相反Q即先蝲入当前classpath的类Q再载入其上一Uclassloader能够装入的类Q这样可以用当前classpath中更新的c覆盖其上一Uclassloader的相同类。受c装入器方式影响的classloader包括application classloader、WAR classloader以及׃ncd的classloader?<br /> 因ؓwebsphere在共享类库的classloader中有一套common logging,但是没有合适配|文?如果我们把配|正的log4j.properties文g攑֜׃ncd?我们会发现log4j可以q行.但还有另外一个很通用的方?-改变webshpere的类库加载顺?我们让他先加载我们web应用所需的类?x们把web应用的加栽方式改为PARENT_LAST.<br />  ?管我小心的提防,今天q是中招?在我的配|里,log4j的配|文件只能读取一?不能一个应用一个配|文?Z让它加蝲自己的配|?可以自己?或者用spring?servlet/listenerL动加载这个配|文?<br /> 2.jboss下面的集成log4j<br />  大家可能都曾在ؓjboss下面配置log4j郁闷q?jboss比webshpere走的q远.无论你的目是否使用了log4j,jboss在自己启动的时候就已经q行他了.也就是说在jboss加蝲自己׃ncd的时?已经d了自己log4j.xml文g配置.q个文g在conf中可以找?如果你需要ؓ你的应用单独配置一个catagory,你需要直接在q里配置Q?br />   在webloader装蝲应用的时?如果应用中有log4j的包,gd现appender已被占用的问?W者把log4j的包q带应用中的log4j配置文g一q移?世界清净?<br />关于Z让应用自带的log4j配置文g生效,有h修改<br /> <attribute name="Java2ClassLoadingCompliance">false</attribute><br />?br /> <attribute name="UseJBossWebLoader">false</attribute><br />q两个属性.<br /> Q.sunone下面集成log4j<br />    距离上次用SunOne服务器已l好长时间了,gsunOne的log有些cMjboss,也是一个服务器的log集中理.׃使用的不是很?暂且在这里站个位?<br />随手贴点关于log的信?<br /><a >http://wiki.apache.org/jakarta-commons/Logging/FrequentlyAskedQuestions</a><br /><a >http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part3.html</a><br /><br />  <img src ="http://www.aygfsteel.com/huabingl/aggbug/67854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huabingl/" target="_blank">binge</a> 2006-09-05 17:23 <a href="http://www.aygfsteel.com/huabingl/archive/2006/09/05/67854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PicoContainer源码Dhttp://www.aygfsteel.com/huabingl/archive/2006/07/23/59646.htmlbingebingeSun, 23 Jul 2006 06:30:00 GMThttp://www.aygfsteel.com/huabingl/archive/2006/07/23/59646.htmlhttp://www.aygfsteel.com/huabingl/comments/59646.htmlhttp://www.aygfsteel.com/huabingl/archive/2006/07/23/59646.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/59646.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/59646.html阅读全文

    binge 2006-07-23 14:30 发表评论
    ]]>
    JAVA开发者应该去?0个英文网?/title><link>http://www.aygfsteel.com/huabingl/archive/2006/06/16/53292.html</link><dc:creator>binge</dc:creator><author>binge</author><pubDate>Fri, 16 Jun 2006 06:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/huabingl/archive/2006/06/16/53292.html</guid><wfw:comment>http://www.aygfsteel.com/huabingl/comments/53292.html</wfw:comment><comments>http://www.aygfsteel.com/huabingl/archive/2006/06/16/53292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huabingl/comments/commentRss/53292.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huabingl/services/trackbacks/53292.html</trackback:ping><description><![CDATA[ <p> <a >http://www.javaalmanac.com</a> </p> <p>    Java开发者年鉴一书的在线版本. 要想快速查到某UJava技巧的用法及示例代? q是一个不错的d.</p> <p> <a >http://www.onjava.com</a> </p> <p>    O'Reilly的Java|站. 每周都有新文?/p> <p> <a >http://java.sun.com</a> </p> <p>    官方的Java开发者网?- 每周都有新文章发?/p> <p> <a >http://www.developer.com/java</a> </p> <p>    由Gamelan.com l护的Java技术文章网?/p> <p> <a >http://www.java.net</a> </p> <p>    Sun公司l护的一个JavaC֌|站</p> <p> <a >http://www.builder.com</a> </p> <p>    Cnet的Builder.com|站 - 所有的技术文? 以JavaZ.</p> <p> <a >http://www.ibm.com/developerworks/java</a> </p> <p>    IBM的Developerworks技术网? q是其中的Java技术主?/p> <p> <a >http://www.javaworld.com</a> </p> <p>    最早的一个Java站点. 每周更新Java技术文?/p> <p> <a >http://www.devx.com/java</a> </p> <p>    DevXl护的一个Java技术文章网?/p> <p> <a >http://www.fawcette.com/javapro</a> </p> <p>    JavaPro在线杂志|站.</p> <p> <a >http://www.sys-con.com/java</a> </p> <p>    Java Developers Journal的在U杂志网?</p> <p> <a >http://www.javadesktop.org</a> </p> <p>    位于Java.net的一个Java桌面技术社区网?</p> <p> <a >http://www.theserverside.com</a> </p> <p>    q是一个讨论所有Java服务器端技术的|站.</p> <p> <a >http://www.jars.com</a> </p> <p>    提供Java评论服务. 包括各种framework和应用程?/p> <p> <a >http://www.jguru.com</a> </p> <p>    一个非常棒的采用Q&A形式的Java技术资源社?</p> <p> <a >http://www.javaranch.com</a> </p> <p>     一个论坛,得到Java问题{案的地方,初学者的好去处?/p> <p> <a >http://www.ibiblio.org/javafaq/javafaq.html</a> </p> <p>    comp.lang.java的FAQ站点 - 攉了来自comp.lang.java新闻l的问题和答案的分类目录.</p> <p> <a >http://java.sun.com/docs/books/tutorial/</a> </p> <p>    来自SUN公司的官方Java指南 - 对于了解几乎所有的java技术特性非常有帮助.</p> <p> <a >http://www.javablogs.com</a> </p> <p>    互联|上最z跃的一个Java Blog|站.</p> <p> <a >http://java.about.com/</a> <br /> <br />转自51cto</p> <img src ="http://www.aygfsteel.com/huabingl/aggbug/53292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huabingl/" target="_blank">binge</a> 2006-06-16 14:11 <a href="http://www.aygfsteel.com/huabingl/archive/2006/06/16/53292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JTA和JDBC事务http://www.aygfsteel.com/huabingl/archive/2006/06/15/53011.htmlbingebingeThu, 15 Jun 2006 07:53:00 GMThttp://www.aygfsteel.com/huabingl/archive/2006/06/15/53011.htmlhttp://www.aygfsteel.com/huabingl/comments/53011.htmlhttp://www.aygfsteel.com/huabingl/archive/2006/06/15/53011.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/53011.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/53011.html 一般情况下QJ2EE应用服务器支持JDBC事务、JTA事务、容器管理事务。这里讨论JTA和JDBC事务的区别。这2个是常用的DAO模式事务界定方式?br>JDBC 事务
     JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两U事务模式:自动提交和手工提交?br>?nbsp;在jdbc中,事务操作~省是自动提交。也是_一条对数据库的更新表达式代表一事务操作,操作成功后,pȝ自动调用commit()来提交,否则调用rollback()来回滚?br>?nbsp;在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表辑ּ作ؓ一个事务,在操作完成后调用commit()来进行整体提交,倘若其中一个表辑ּ操作p|Q都不会执行到commit()Qƈ且将产生响应的异常;此时可以在异常捕获时调用rollback()q行回滚。这样做可以保持多次更新操作后,相关数据的一致性,CZ如下Q?br>
        try {

    conn = 

    DriverManager.getConnection    

    (&quot;jdbc:oracle:thin:@host:1521:SID&quot;,&quot;username&quot;,&quot;userpwd&quot;;

           conn.setAutoCommit(false);//止自动提交Q设|回滚点

           stmt = conn.createStatement();

    stmt.executeUpdate(“alter table …”); //数据库更新操?

    stmt.executeUpdate(“insert into table …”); //数据库更新操?

           conn.commit(); //事务提交

         }catch(Exception ex) {    

             ex.printStackTrace();

             try {

              conn.rollback(); //操作不成功则回滚

              }catch(Exception e) {

    e.printStackTrace();

               }

    }

     JDBC 事务的一个缺Ҏ事务的范围局限于一个数据库q接。一?JDBC 事务不能跨越多个数据库?br>JTA事务
     JTA(Java Transaction API) ?J2EE q_提供了分布式事务服务?br> 要用 JTA q行事务界定Q应用程序要调用 javax.transaction.UserTransaction 接口中的Ҏ。例如:
     utx.begin();
          // ...
          DataSource ds = obtainXADataSource();
          Connection conn = ds.getConnection();
          pstmt = conn.prepareStatement("UPDATE MOVIES ...");
          pstmt.setString(1, "Spinal Tap");
          pstmt.executeUpdate();
          // ...
          utx.commit();

     让我们来x下面的话Q?br> “?JTA 界定事务Q那么就需要有一个实?javax.sql.XADataSource ?javax.sql.XAConnection ?javax.sql.XAResource 接口?JDBC 驱动E序。一个实Cq些接口的驱动程序将可以参与 JTA 事务。一?XADataSource 对象是一?XAConnection 对象的工厂?XAConnection s 是参?JTA 事务?JDBC q接?#8221;
     要用JTA事务Q必M用XADataSource来生数据库q接Q生的q接Z个XAq接?br> XAq接Qjavax.sql.XAConnectionQ和非XAQjava.sql.ConnectionQ连接的区别在于QXA可以参与JTA的事务,而且不支持自动提交?br>     Note:
    Oracle, Sybase, DB2, SQL Server{大型数据库才支持XA, 支持分布事务?
    My SQL q本地都支持不好Q更别说分布事务了?br>JTA方式的实现过E?/font>Q?br>   用XADataSource产生的XAConnection它扩展了一个getXAResource()Ҏ,事务通过q个Ҏ把它加入C务容器中q行理.对于调用者来?Ҏ看不C务是如果理?你只要声明开始事?告诉容器我下面的操作要求事务参与?最后告诉事务说到这儿可以提交或回滚?别的都是黑箱操作?br> 在用JTA之前Q你必须首先实现一个Xidcȝ来标识事务(在普通情况下q将׃务管理程序来处理Q。Xid包含三个元素QformatID、gtridQ全局事务标识W)和bqualQ分支修饰词标识W)?br> 下面的例子说明Xid的实玎ͼ

    import javax.transaction.xa.*;
    public class MyXid implements Xid
    {
     protected int formatId;
     protected byte gtrid[];
     protected byte bqual[];
     public MyXid()
     {
     }
     public MyXid(int formatId, byte gtrid[], byte bqual[])
     {
      this.formatId = formatId;
      this.gtrid = gtrid;
      this.bqual = bqual;
     }

     public int getFormatId()
     {
      return formatId;
     }

     public byte[] getBranchQualifier()
     {
      return bqual;
     }

     public byte[] getGlobalTransactionId()
     {
      return gtrid;
     }

    }
     其次Q你需要创Z个你要用的数据库的数据源:

    public DataSource getDataSource()
     throws SQLException
     {
      SQLServerDataSource xaDS = new
      com.merant.datadirect.jdbcx.sqlserver.SQLServerDataSource();
      xaDS.setDataSourceName("SQLServer");
      xaDS.setServerName("server");
      xaDS.setPortNumber(1433);
      xaDS.setSelectMethod("cursor");
      return xaDS;
    }

      ??q个例子是用“两步提交协议”来提交一个事务分支:

    XADataSource xaDS;
    XAConnection xaCon;
    XAResource xaRes;
    Xid xid;
    Connection con;
    Statement stmt;
    int ret;
    xaDS = getDataSource();
    xaCon = xaDS.getXAConnection("jdbc_user", "jdbc_password");
    xaRes = xaCon.getXAResource();
    con = xaCon.getConnection();
    stmt = con.createStatement();
    xid = new MyXid(100, new byte[]{0x01}, new byte[]{0x02});
    try {
      xaRes.start(xid, XAResource.TMNOFLAGS);
      stmt.executeUpdate("insert into test_table values (100)");
      xaRes.end(xid, XAResource.TMSUCCESS);
      ret = xaRes.prepare(xid);
      if (ret == XAResource.XA_OK) {
        xaRes.commit(xid, false);
       }
    }
    catch (XAException e) {
     e.printStackTrace();
    }
    finally {
     stmt.close();
     con.close();
     xaCon.close();
    }
     当然Q实际过E中Q我们不需要写q些代码Q这些代码是JTA最l的实现代码?br>关于“两步提交协议”Q可以参看下面的文章Q?br>http://www.jspcn.net/htmlnews/11049371131251752.html

     http://www.vermicelli.pasta.cs.uit.no/ipv6/students/andrer/doc/html/node18.html


    选择最好的方式
    ?JDBC API q事务界定来构徏 DAO cȝ。这?DAO cd以ȝ如下Q?/p>

    事务界定代码嵌入?DAO cM?
    DAO cM?JDBC API q行事务界定?
    调用者不能界定事务?
    事务范围局限于单个 JDBC q接?
    JDBC 事务q不L适合复杂的企业应用程序。如果您的事务要跨越多个 DAO 或者多个数据库Q那么下列实现策略也许更合适:

    事务?JTA 界定?
    事务界定代码?DAO 中分d来?
    调用者负责界定事务?
    DAO 加入一个全局事务?
    JDBC 方式׃其简单性而具有吸引力QJTA 方式提供了更大的灉|性。您所选择的实现将取决于应用程序的特定需求?br>XADataSource例子Q?br><?xml version="1.0" encoding="UTF-8"?>

    <!-- ===================================================================== -->
    <!--    -->
    <!--  JBoss Server Configuration    -->
    <!-- Thanks to Horia Muntean <horia@bvb.ro>   -->
    <!-- ===================================================================== -->

    <!-- $Id: db2-xa-ds.xml,v 1.1.2.1 2003/05/30 18:25:57 d_jencks Exp $ -->


    <datasources>
       <!--
           XADatasource for DB2 V8.1 (app driver)
           copy $db2_install_dir/java/db2java.zip into $jboss_install_dir/server/default/lib
       -->

       <xa-datasource>
         <jndi-name>DB2XADS</jndi-name>
         <xa-datasource-class>COM.ibm.db2.jdbc.DB2XADataSource</xa-datasource-class>
         <xa-datasource-property name="DatabaseName">yout_database_name</xa-datasource-property>
         <xa-datasource-property name="User">your_user</xa-datasource-property>
         <xa-datasource-property name="Password">your_password</xa-datasource-property>
       </xa-datasource>
    </datasources>

    引用Q?br> http://www.jspcn.net/htmlnews/11049371131251752.html
    http://www-128.ibm.com/developerworks/cn/java/j-dao/
    http://www.vermicelli.pasta.cs.uit.no/ipv6/students/andrer/doc/html/node18.html

     



    binge 2006-06-15 15:53 发表评论
    ]]>
    <J2EE 1.4标准教材>JMS初读http://www.aygfsteel.com/huabingl/archive/2006/05/31/49346.htmlbingebingeWed, 31 May 2006 14:25:00 GMThttp://www.aygfsteel.com/huabingl/archive/2006/05/31/49346.htmlhttp://www.aygfsteel.com/huabingl/comments/49346.htmlhttp://www.aygfsteel.com/huabingl/archive/2006/05/31/49346.html#Feedback0http://www.aygfsteel.com/huabingl/comments/commentRss/49346.htmlhttp://www.aygfsteel.com/huabingl/services/trackbacks/49346.html33.2 基本的jms api概念
       33.2.1 jms api体系l构
         jms应用E序l成部分:
        a. jms提供?-------j2eeq_.
        b.jms客户?-------需要用户完成的应用E序.
        c.消息----在客L之间传递信息的对象
       d.理的对?---q接工厂和目的地
     33.2.2 消息?/div>
       分ؓ"点到Ҏ息传递域"?发表/订阅心传递域"
     33.2.3 消费消息
       两种方式:同步和异?同步直接用receiveҎ提取消息.异步需要可湖段为消费者注册一个见听器.通过调用见听器的onMessageҎ来分发消?
    33.3 jms api~程模型
      33.3.1 理的对?/div>
       a.q接工厂
        通常是执行jndi查找获得q接工厂.eg:
      Context ctx= new InitialContext();
      ConnectionFactory cf=(ConnectionFactory ) ctx.lookup("jms/QueueConnectionFactory");
    ConnectionFactory cf=(ConnectionFactory ) ctx.lookup("jms/TopicConnectionFactory");
     b.目的?/div>
       在ptp?目的地是"队列".在发?订阅?目的地是"主题".
      eg:
    Destination mydest=(Topic)ctx.lookup("jms/mytopic");
    33.3.2 q接
     q接p接工厂来创徏.eg:
    Connection conn=ConnectionFactory .createConnection();
    33.3.3 会话
    会话 ?Connection来创?/div>
    Session session=Connection.createSession(false,Session.AUTO_ACKOWLEDGE);
    事务性的会话
    Session session=Connection.createSession(true,0);
    33.3.4 消息生?/div>
    由session 来创?实现MessageProducer接口.
       MessageProducer mp=session.createProducer(myQueue);
    发送动?/div>
    mp.send(message);
    33.3.5 消息消费?/div>
     由session创徏,实现MessageConsumer接口.
    eg:
    MessageConsumer mc=session.createConsumer(myQueue);
    bwt:
    利用session.createDurableSubscriber可以创徏长期的订阅?
      ========获得消息==
    同步方式.
    connection.start();
    Message m=consumer.receive();
    connection.start();
    Message m=consumer.receive(1000); //time out afer a second
    异步方式.
    构造一个消息舰艇器,用setMessageListenerҎ向具体的MessageConsumer中注?eg:
      Listener myListener= new Listener ();
    consumer.setMessageListener (myListener );
    33.3.6 消息
    分ؓ消息?消息属性和消息?只有消息头是必须?
    消息头存放了可护短和提供者用来识别和路由消息的?
    常见的消息体的格?消息cd)?U?
     
     


    binge 2006-05-31 22:25 发表评论
    ]]> վ֩ģ壺 | ͷ| | | | ׯ| | ԫ| | ÷ӿ| ɽ| Դ| ͨ| ƽ| | | | ڶ| ޻| ƽ| ɽ| ߱| ɽ| | ƽ| ɽ| | Ϻ| ǿ| ¹Ȫ| ߺ| | | | Ϫ| | | | Ƥɽ| | |