亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 轉載--微軟98年關于mts和ejb的比較說明文件.其實sun也有類似的對比文件,我忘記在那里了!(1).txt

?? 一些學習java的文章
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

Back to contents

Types of Objects
MTS objects are typically designed to encapsulate some set of business functionality. For example, an MTS object might allow a client to transfer money between two accounts or build and submit an order of some kind. Because MTS objects are written as distinct components, business functions encapsulated into these objects can be combined in arbitrary ways, allowing them to be flexibly reused. Although it's not strictly required, an MTS object is typically accessed by one client at a time, and it may (but isn't required to) use transactions.

The EJB specification takes a more complex view of objects. Unlike MTS, EJB explicitly defines two different types of enterprise beans. The first, called session beans, are much like MTS objects. Session beans encapsulate some segment of business logic, are typically accessed by one client at a time, and optionally use transactions. The EJB specification also defines a type of persistent object called an entity bean. Unlike session beans, entity beans represent a specific set of persistent data stored in a database, such as an employee record or a particular order. Each entity bean has a unique key that identifies it, and each one is intended to be accessible by many clients simultaneously. Furthermore, entity beans are required to use transactions.

An MTS client need do nothing special to create and work with transactional objects; to a client, an MTS object looks like an ordinary COM object. An EJB client, on the other hand, must understand and correctly use new interfaces and methods to create, manage and destroy enterprise beans. Because MTS is built on COM, it automatically benefits from the richness and maturity of the COM environment. Enterprise JavaBeans, by contrast, is forced to invent much of its own infrastructure, including such basics as persistent object support and interfaces, allowing clients to create remote beans.

Back to contents

Supporting Transactions
A transaction defines a set of events that are guaranteed to be committed or rolled back as a unit. Accordingly, every transaction has a beginning, some number of events that are part of the transaction (such as database updates), and an end. Exactly how a transaction's boundaries are demarcated can vary. A common approach in traditional client/server transaction products is to require the client to make a specific call to the transaction coordinator to begin the transaction. The client then makes calls to the components that carry out this transaction's work, and finally ends the transaction with another explicit call to the transaction coordinator. This final, transaction-ending call can indicate that the transaction should be committed, making all of its changes permanent, or aborted, causing all of its changes to be rolled back. It's the job of the transaction processing system to ensure that exactly one of these two outcomes occurs.

Back to contents

Transactions in Microsoft Transaction Server
When combining transactions with components, the traditional client-controlled model isn't usually the best approach. Instead, MTS introduced a new way to demarcate transaction boundaries. Called automatic transactions, it allows clients to remain unaware of when transactions begin and end—they never need to make explicit calls to begin or end a transaction. Instead, when a transaction begins depends on the value of that component's transaction attribute. This value can be set to one of four possibilities


If a component is marked as Requires New, the MTS Executive will always begin a transaction when its caller first invokes a method in one of that component's objects. 
If a component is marked as Required, the MTS Executive will begin a transaction when its caller first invokes a method in one of that component's objects unless the caller is already part of a transaction. In this case, any methods invoked in the object will become part of the existing transaction. 
If a component is marked as Supported, the MTS Executive will never begin a transaction when a caller invokes methods in one of the component's objects. If the caller is already part of a transaction, the work this object does will become part of that transaction. If the caller is not part of a transaction, this object's work will execute without being wrapped inside a transaction. 
If a component is marked as Not Supported, the MTS Executive will never begin a transaction when a caller invokes methods in one of the component's objects. Even if the caller is part of an existing transaction, this object's work will not become part of that transaction. 
When it has finished its work, an MTS object can call either SetComplete, if it wishes to commit that work, or SetAbort, if the work it has done should be rolled back. If neither is called by the time this object's transaction ends, the MTS Executive behaves as though the object called SetComplete—the default behavior is to commit the transaction. These calls are made by a method in the MTS object itself, not by the client (again, the client need not be aware that transactions are being used). If every object participating in the transaction agrees to commit, the MTS Executive will tell the transaction coordinator to commit the transaction. If any MTS object in this transaction calls SetAbort, however, the MTS Executive will tell the transaction coordinator to abort the transaction.

Back to contents

Transactions in Enterprise JavaBeans
The Enterprise JavaBeans specification defines three approaches to demarcating transaction boundaries:

Client-managed transactions, where a client makes explicit calls to begin and end each transaction 
Container-managed transactions, which allow a client to rely on the EJB container to begin and end transactions automatically 
Bean-managed transactions, where an enterprise bean makes explicit calls to begin and end transactions 
Given that its creators are trying to ensure that Enterprise JavaBeans can be retrofitted onto existing legacy products, they have chosen to support the traditional client-managed approach to transaction demarcation. EJB has also adopted MTS's innovation of automatic transactions. In fact, EJB's container-managed transactions are nearly an exact clone of MTS's automatic transactions. An enterprise bean can be labeled as TX_REQUIRES_NEW, TX_REQUIRED, TX_SUPPORTS or TX_NOT_SUPPORTED, all of which have the same meaning as in MTS. And like MTS, Enterprise JavaBeans assumes that a bean wishes to commit the transaction unless it explicitly invokes the setRollbackOnly method (EJB does not provide an analog to the MTS SetComplete call, however).

At first glance, EJB's plethora choices can appear attractively flexible. But they are also very complex. What happens, for instance, when different approaches to transaction demarcation are used simultaneously? Suppose an application begins a client-managed transaction, then executes a method in an enterprise bean that's configured to require a new container-managed transaction. And suppose this bean creates yet another bean that's using bean-managed transactions. What happens when the client commits its transaction? Understanding all the possible combinations (legal and illegal) and their outcomes will be very challenging for developers. And if developers can't easily understand the outcome of their transactions, how can they write correct applications? Compared to the simple, unified model that MTS provides, EJB offers developers a confusing and potentially error-prone array of choices for controlling transaction boundaries.

And in fact, MTS provides all three transaction demarcation options found in EJB, but in a less confusing way. First, as previously described, EJB container-managed transactions are virtually identical to MTS automatic transactions. MTS also supports client-managed transactions, allowing a client to determine explicitly when a transaction should begin and end. But unlike EJB, MTS builds this service on top of automatic transactions rather than introducing an entirely separate mechanism. This eliminates the possibility of confusion between automatic transactions and client-managed transactions. And, finally, an MTS object with its transaction attribute set to Not Supported can make direct calls on the DTC using OLE Transactions. By doing this, an MTS object can demarcate transactions on its own, just like an EJB bean-managed transaction.

Back to contents

Controlling Complexity
A primary goal of any transaction processing platform should be to control the complexity inherent in writing transactional applications. Understanding difficult business problems, then creating the correct code to solve them is hard enough without being forced to spend time wrestling with a complex environment. Yet the creators of Enterprise JavaBeans apparently did not have simplicity as a goal. Instead, EJB looks like the union of everyone's ideas about how to do transaction processing.

For example, as already described, EJB transaction demarcation is very complex, with three different options spelled out in the specification and a myriad of possible ways to combine those options. Enterprise JavaBeans also defines two types of enterprise beans: session beans, representing business logic, and entity beans, intended to represent persistent data stored in a database. These two bean types must be treated quite differently by developers. (Support for entity beans is not required by the current version of the EJB specification, so an EJB-compliant vendor can implement only session beans if desired. This adds another variable to EJB's already-complex set of options.) A session bean must be configured to be either stateful or stateless, depending on the choices its creator makes. Entity beans can have either bean-managed persistence, with the bean itself responsible for issuing database calls to load and save its persistent data, or container-managed persistence, where the EJB container does this on the bean's behalf. And entity beans can be labeled as either reentrant or non-reentrant, depending on whether the developer has made provisions for bean reentrancy. Furthermore, because entity beans are designed to be accessible to many clients at once, there must be some way to control concurrent access to their data. The EJB specification gives two illustrative examples of how this might be done but leaves the door open for any other approach.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆.com| 国产福利一区在线| 国产精品精品国产色婷婷| 这里只有精品电影| 欧美精品乱码久久久久久| 日本高清不卡视频| 成人福利在线看| 成人av网站在线观看| 成人激情文学综合网| 国产精品性做久久久久久| 国产精品一区2区| 国产精品一区二区你懂的| 国产高清不卡一区二区| 成人美女视频在线观看| 99re热视频精品| 一本大道久久a久久综合| 在线精品视频免费播放| 在线成人免费视频| 日韩一区二区在线看片| 亚洲精品一区二区三区蜜桃下载| 337p粉嫩大胆色噜噜噜噜亚洲 | 高潮精品一区videoshd| 国产最新精品免费| 国产91丝袜在线观看| 成人av集中营| 欧美在线色视频| 欧美精品欧美精品系列| 久久综合网色—综合色88| 欧美国产丝袜视频| 亚洲欧美日韩系列| 亚洲地区一二三色| 国产精品538一区二区在线| 北条麻妃一区二区三区| 欧美日韩国产片| 久久一留热品黄| 亚洲激情中文1区| 日本一道高清亚洲日美韩| 韩国女主播成人在线| jiyouzz国产精品久久| 欧美性猛交一区二区三区精品| 91麻豆精品国产综合久久久久久| 久久久久久久久伊人| 亚洲黄色录像片| 国产综合色视频| 欧洲精品中文字幕| 久久久久久久性| 日韩在线观看一区二区| 丁香啪啪综合成人亚洲小说 | 免费在线观看视频一区| 国产成都精品91一区二区三| 制服视频三区第一页精品| 国产精品三级在线观看| 日韩黄色免费网站| aa级大片欧美| 国产亚洲精品bt天堂精选| 视频一区中文字幕国产| jizz一区二区| 久久久久久免费毛片精品| 日韩成人一级片| 色老头久久综合| 亚洲国产高清在线观看视频| 麻豆精品在线观看| 欧美挠脚心视频网站| 亚洲欧美乱综合| 成人一区在线观看| 精品毛片乱码1区2区3区| 午夜精品福利在线| 91国内精品野花午夜精品| 中文字幕精品三区| 国内久久精品视频| 在线综合亚洲欧美在线视频| 亚洲丰满少妇videoshd| 91福利在线免费观看| 亚洲人一二三区| 99久久婷婷国产综合精品电影| 亚洲精品一线二线三线| 美腿丝袜在线亚洲一区| 日韩视频免费直播| 青青青爽久久午夜综合久久午夜| 欧美日韩国产精选| 性久久久久久久久| 欧美日韩国产在线观看| 婷婷激情综合网| 欧美精选午夜久久久乱码6080| 亚洲高清免费视频| 欧美久久久久久久久中文字幕| 日韩成人av影视| 欧美电影免费观看高清完整版在线观看| 性做久久久久久免费观看| 6080国产精品一区二区| 亚洲图片有声小说| 3d动漫精品啪啪| 精品在线视频一区| 2021中文字幕一区亚洲| 成人av动漫网站| 一区二区三区国产豹纹内裤在线| 精品视频1区2区| 美腿丝袜亚洲三区| 国产偷国产偷精品高清尤物| 欧美亚洲综合色| 午夜久久久影院| 欧美mv日韩mv| 成熟亚洲日本毛茸茸凸凹| 亚洲三级免费电影| 欧美日本高清视频在线观看| 极品销魂美女一区二区三区| 国产亚洲欧美日韩俺去了| 91女厕偷拍女厕偷拍高清| 五月激情综合色| 久久精品亚洲一区二区三区浴池| 成人av在线资源| 亚洲第一狼人社区| 国产日韩v精品一区二区| 色哟哟在线观看一区二区三区| 亚洲午夜日本在线观看| 日韩欧美美女一区二区三区| 成人av中文字幕| 日本不卡1234视频| 亚洲美女在线一区| 欧美成人video| 色综合久久久久综合体| 久久99在线观看| 有坂深雪av一区二区精品| 精品裸体舞一区二区三区| 在线区一区二视频| 成人一区二区视频| 蜜臀av一区二区在线观看| 综合婷婷亚洲小说| 久久老女人爱爱| 91精品国产一区二区人妖| 一本一道久久a久久精品综合蜜臀| 蜜臀av性久久久久蜜臀aⅴ| 一区二区视频免费在线观看| 久久综合久久鬼色| 欧美一区二区三区性视频| 91日韩在线专区| 成人免费观看av| 国内国产精品久久| 久久久蜜臀国产一区二区| 毛片一区二区三区| 亚洲国产综合在线| 亚洲色图.com| 国产精品国产三级国产aⅴ入口 | 一区二区三区精品久久久| 中文字幕精品一区二区三区精品| 日韩欧美一卡二卡| 337p亚洲精品色噜噜噜| 欧美色大人视频| 欧美在线一区二区三区| 色婷婷一区二区| 91在线视频在线| www.日韩av| www.亚洲激情.com| 波多野结衣91| 91亚洲精品久久久蜜桃| 成人午夜免费视频| 成人教育av在线| eeuss鲁一区二区三区| 成人av网站免费| 99麻豆久久久国产精品免费| av毛片久久久久**hd| 国产成人精品免费视频网站| 国产馆精品极品| 成人av在线一区二区三区| 99r国产精品| 在线日韩av片| 日韩欧美视频在线| 久久精品欧美一区二区三区麻豆| 久久精品人人做人人综合| 欧美国产日韩精品免费观看| 亚洲人成影院在线观看| 樱桃视频在线观看一区| 亚洲国产cao| 六月婷婷色综合| 国产成人午夜高潮毛片| 99久久精品免费精品国产| 在线免费不卡视频| 在线观看91精品国产麻豆| 日韩午夜在线观看| 久久久91精品国产一区二区精品| 国产精品天天看| 亚洲综合激情小说| 久久国产生活片100| 成人一区二区三区视频| 在线视频欧美精品| 欧美成人a视频| 亚洲免费高清视频在线| 欧美96一区二区免费视频| 国产成人精品亚洲午夜麻豆| 91老师片黄在线观看| 欧美一区二区三区免费大片| 国产日韩欧美a| 亚洲成a天堂v人片| 国产传媒日韩欧美成人| 欧美丝袜丝交足nylons| 久久久精品国产免费观看同学| 亚洲图片欧美综合| 国产一区二区三区四区在线观看| 色综合久久88色综合天天6| 欧美成人猛片aaaaaaa|