|  | <html><head> | 
|  | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | 
|  | <title>Chapter 12.  Remote and Offline Operation</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="ref_guide.html" title="Part 3. Reference Guide"><link rel="prev" href="ref_guide_encryption.html" title="Chapter 11.  Encryption Provider"><link rel="next" href="ref_guide_event.html" title="2.  Remote Event Notification Framework"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12.  | 
|  | Remote and Offline Operation | 
|  | </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ref_guide_encryption.html">Prev</a> </td><th width="60%" align="center">Part 3. Reference Guide</th><td width="20%" align="right"> <a accesskey="n" href="ref_guide_event.html">Next</a></td></tr></table><hr></div><div class="chapter" id="ref_guide_remote"><div class="titlepage"><div><div><h2 class="title">Chapter 12.  | 
|  | Remote and Offline Operation | 
|  | </h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach">1. | 
|  | Detach and Attach | 
|  | </a></span></dt><dd><dl><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_behavior">1.1. | 
|  | Detach Behavior | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_attach_behavior">1.2. | 
|  | Attach Behavior | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_graph">1.3. | 
|  | Defining the Detached Object Graph | 
|  | </a></span></dt><dd><dl><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_state">1.3.1. | 
|  | Detached State | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_field">1.3.2. | 
|  | Detached State Field | 
|  | </a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="ref_guide_event.html">2. | 
|  | Remote Event Notification Framework | 
|  | </a></span></dt><dd><dl><dt><span class="section"><a href="ref_guide_event.html#ref_guide_event_conf">2.1. | 
|  | Remote Commit Provider Configuration | 
|  | </a></span></dt><dd><dl><dt><span class="section"><a href="ref_guide_event.html#ref_guide_event_conf_jms">2.1.1. | 
|  | JMS | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_event.html#ref_guide_event_conf_tcp">2.1.2. | 
|  | TCP | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_event.html#ref_guide_event_conf_common">2.1.3. | 
|  | Common Properties | 
|  | </a></span></dt></dl></dd><dt><span class="section"><a href="ref_guide_event.html#ref_guide_event_customization">2.2. | 
|  | Customization | 
|  | </a></span></dt></dl></dd></dl></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16504"></a> | 
|  | <a class="indexterm" name="d5e16506"></a> | 
|  | <p> | 
|  | The standard JPA runtime environment was originally just | 
|  | <span class="emphasis"><em>local</em></span> and | 
|  | <span class="emphasis"><em>online</em></span>. It is <span class="emphasis"><em>local</em></span> in that components | 
|  | such as <code class="classname">EntityManager</code>s and queries connect directly to | 
|  | the datastore and execute their actions in the same JVM as the code using them. | 
|  | It is <span class="emphasis"><em>online</em></span> in that all changes to managed objects must be | 
|  | made in the context of an active <code class="classname"> EntityManager</code>. These | 
|  | two properties, combined with the fact that <code class="classname"> | 
|  | EntityManager</code>s cannot be serialized for storage or network transfer, | 
|  | made the standard JPA runtime difficult to incorporate into some enterprise and | 
|  | client/server program designs. | 
|  | </p> | 
|  | <p> | 
|  | JPA has now provided <span class="emphasis"><em>offline</em></span> capability through the | 
|  | detach() and merge() methods on the EntityManager interface. OpenJPA has | 
|  | extended this to include additional detach...() and merge...() methods. All of | 
|  | these are documented in | 
|  | <a class="link" href="ref_guide_remote.html#ref_guide_detach" title="1.  Detach and Attach">Detach and Attach APIs</a>. In addition, | 
|  | OpenJPA has added <span class="emphasis"><em>remote</em></span> capability in the form of | 
|  | <a class="link" href="ref_guide_event.html" title="2.  Remote Event Notification Framework">Remote Commit Events</a>. The following | 
|  | sections explain these capabilities in detail. | 
|  | </p> | 
|  | <div class="section" id="ref_guide_detach"><div class="titlepage"><div><div><h2 class="title" style="clear: both">1.  | 
|  | Detach and Attach | 
|  | </h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_behavior">1.1. | 
|  | Detach Behavior | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_attach_behavior">1.2. | 
|  | Attach Behavior | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_graph">1.3. | 
|  | Defining the Detached Object Graph | 
|  | </a></span></dt><dd><dl><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_state">1.3.1. | 
|  | Detached State | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_field">1.3.2. | 
|  | Detached State Field | 
|  | </a></span></dt></dl></dd></dl></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16524"></a> | 
|  | <a class="indexterm" name="d5e16526"></a> | 
|  | <p> | 
|  | The JPA Overview describes the specification's standard detach and attach APIs | 
|  | in <a class="xref" href="jpa_overview_em_lifecycle.html" title="2.  Entity Lifecycle Management">Section 2, “ | 
|  | Entity Lifecycle Management | 
|  | ”</a>. This section enumerates | 
|  | OpenJPA's enhancements to the standard behavior. | 
|  | </p> | 
|  | <div class="section" id="ref_guide_detach_behavior"><div class="titlepage"><div><div><h3 class="title">1.1.  | 
|  | Detach Behavior | 
|  | </h3></div></div></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16533"></a> | 
|  | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3> | 
|  | <p> | 
|  | In version 2.0, the detach behavior has changed from the previous | 
|  | version. See the migration section | 
|  | <a class="link" href="migration_considerations.html#migration_detach_behavior" title="1.1.2.  Detach Behavior">Detach Behavior</a> for details. | 
|  | </p> | 
|  | </div> | 
|  | <p> | 
|  | In JPA, objects detach automatically when they are serialized or when a | 
|  | <a class="link" href="jpa_overview_emfactory_perscontext.html" title="3.  Persistence Context">persistence context</a> | 
|  | ends. The specification also allows objects to be explicitly detached using | 
|  | the following javax.persistence.EntityManager method: | 
|  | </p> | 
|  | <pre class="programlisting"> | 
|  | public void detach(Object) | 
|  | </pre> | 
|  | <p> | 
|  | <a class="ulink" href="../javadoc/org/apache/openjpa/persistence/OpenJPAEntityManager.html" target="_top"> | 
|  | <code class="classname">OpenJPAEntityManager</code></a>, however, provides | 
|  | additional detach methods. | 
|  | </p> | 
|  | <pre class="programlisting"> | 
|  | public <T> T detachCopy(T pc): | 
|  | public Object[] detachAll(Object... pcs): | 
|  | public Collection detachAll(Collection pcs): | 
|  | </pre> | 
|  | <p> | 
|  | The behavior of the detach operation is as follows: | 
|  | </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | 
|  | The detached objects are removed from the persistent context. | 
|  | </li><li class="listitem"> | 
|  | The objects are <span class="emphasis"><em>not</em></span> flushed to the database. | 
|  | </li><li class="listitem"> | 
|  | If Cascade=detach is specified for a referenced entity, the detach | 
|  | operation is cascaded. Otherwise, it is not. | 
|  | </li><li class="listitem"> | 
|  | For the detachCopy method only, the entity is copied for the return | 
|  | value. | 
|  | </li></ul></div><p> | 
|  | </p> | 
|  | </div> | 
|  | <div class="section" id="ref_guide_attach_behavior"><div class="titlepage"><div><div><h3 class="title">1.2.  | 
|  | Attach Behavior | 
|  | </h3></div></div></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16555"></a> | 
|  | <p> | 
|  | When attaching, OpenJPA uses several strategies to determine the optimal way to | 
|  | merge changes made to the detached instance. As you will see, these strategies | 
|  | can even be used to attach changes made to a transient instance which was never | 
|  | detached in the first place. | 
|  | </p> | 
|  | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | 
|  | <p> | 
|  | If the instance was detached and <a class="link" href="ref_guide_remote.html#ref_guide_detach_graph" title="1.3.  Defining the Detached Object Graph"> | 
|  | detached state</a> is enabled, OpenJPA will use the detached state to | 
|  | determine the object's version and primary key values. In addition, this state | 
|  | will tell OpenJPA which fields were loaded at the time of detach, and in turn | 
|  | where to expect changes. Loaded detached fields with null values will set the | 
|  | attached instance's corresponding fields to null. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | If the instance has a <code class="literal">Version</code> field, | 
|  | OpenJPA will consider the object detached if the version field has a non-default | 
|  | value, and new otherwise.  Similarly, if the instance has | 
|  | <code class="literal">GeneratedValue</code> primary key fields, OpenJPA will consider the | 
|  | object detached if any of these fields have non-default values, and new | 
|  | otherwise. | 
|  | </p> | 
|  | <p> | 
|  | When attaching null fields in these cases, OpenJPA cannot distinguish between a | 
|  | field that was unloaded and one that was intentionally set to null. In this | 
|  | case, OpenJPA will use the current <a class="link" href="ref_guide_remote.html#ref_guide_detach_graph" title="1.3.  Defining the Detached Object Graph"> | 
|  | detach state</a> setting to determine how to handle null fields: fields that | 
|  | would have been included in the detached state are treated as loaded, and will | 
|  | in turn set the corresponding attached field to null. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | If neither of the above cases apply, OpenJPA will check to see if an instance | 
|  | with the same primary key values exists in the database. If so, the object is | 
|  | considered detached. Otherwise, it is considered new. | 
|  | </p> | 
|  | </li></ul></div> | 
|  | <p> | 
|  | These strategies will be assigned on a per-instance basis, such that during the | 
|  | attachment of an object graph more than one of the above strategies may be used. | 
|  | </p> | 
|  | <p> | 
|  | If you attempt to attach a versioned instance whose representation has changed | 
|  | in the datastore since detachment, OpenJPA will throw an optimistic concurrency | 
|  | exception upon commit or flush, just as if a normal optimistic conflict was | 
|  | detected. When attaching an instance whose database record has been deleted | 
|  | since detaching, or when attaching a detached instance into a manager that has a | 
|  | stale version of the object, OpenJPA will throw an optimistic concurrency | 
|  | exception from the attach method. In these cases, OpenJPA sets the <code class="literal"> | 
|  | RollbackOnly</code> flag on the transaction. | 
|  | </p> | 
|  | </div> | 
|  | <div class="section" id="ref_guide_detach_graph"><div class="titlepage"><div><div><h3 class="title">1.3.  | 
|  | Defining the Detached Object Graph | 
|  | </h3></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_state">1.3.1. | 
|  | Detached State | 
|  | </a></span></dt><dt><span class="section"><a href="ref_guide_remote.html#ref_guide_detach_field">1.3.2. | 
|  | Detached State Field | 
|  | </a></span></dt></dl></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16576"></a> | 
|  | <p> | 
|  | When detached objects lose their association with the OpenJPA runtime, they also | 
|  | lose the ability to load additional state from the datastore. It is important, | 
|  | therefore, to populate objects with all the persistent state you will need | 
|  | before detaching them. While you are free to do this manually, OpenJPA includes | 
|  | facilities for automatically populating objects when they detach. | 
|  | </p> | 
|  | <div class="section" id="ref_guide_detach_state"><div class="titlepage"><div><div><h4 class="title">1.3.1.  | 
|  | Detached State | 
|  | </h4></div></div></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16582"></a> | 
|  | <p> | 
|  | The <a class="link" href="ref_guide_conf_openjpa.html#openjpa.DetachState" title="5.30.  openjpa.DetachState"><code class="literal">openjpa.DetachState</code> | 
|  | </a> configuration property determines which fields and relations are | 
|  | detached by default. All settings are recursive. They are: | 
|  | </p> | 
|  | <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">loaded</code>: Detach all fields and relations that are already | 
|  | loaded, but don't include unloaded fields in the detached graph. This is the | 
|  | default. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">fetch-groups</code>: Detach all fields and relations in the current | 
|  | <a class="link" href="ref_guide_runtime.html" title="Chapter 9.  Runtime Extensions">fetch configuration</a>. For more | 
|  | information on custom fetch groups, see <a class="xref" href="ref_guide_fetch.html" title="7.  Fetch Groups">Section 7, “ | 
|  | Fetch Groups | 
|  | ”</a>. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">all</code>: Detach all fields and relations. Be very careful when | 
|  | using this mode; if you have a highly-connected domain model, you could end up | 
|  | bringing every object in the database into memory! | 
|  | </p> | 
|  | </li></ol></div> | 
|  | <p> | 
|  | Any field that is not included in the set determined by the detach mode is set | 
|  | to its Java default value in the detached instance. | 
|  | </p> | 
|  | <p> | 
|  | The <code class="literal">openjpa.DetachState</code> option is actually a plugin string | 
|  | (see <a class="xref" href="ref_guide_conf_plugins.html" title="4.  Plugin Configuration">Section 4, “ | 
|  | Plugin Configuration | 
|  | ”</a>) that allows you to also | 
|  | configure the following options related to detached state: | 
|  | </p> | 
|  | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">DetachedStateField</code>: As described in | 
|  | <a class="xref" href="ref_guide_remote.html#ref_guide_attach_behavior" title="1.2.  Attach Behavior">Section 1.2, “ | 
|  | Attach Behavior | 
|  | ”</a> above, OpenJPA can take | 
|  | advantage of a <span class="emphasis"><em>detached state field</em></span> to make the attach | 
|  | process more efficient. This field is added by the enhancer and is not visible | 
|  | to your application. Set this property to one of the following values: | 
|  | </p> | 
|  | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">transient</code>: Use a transient detached state field. This gives | 
|  | the benefits of a detached state field to local objects that are never | 
|  | serialized, but retains serialization compatibility for client tiers without | 
|  | access to the enhanced versions of your classes or the OpenJPA runtime. | 
|  | This is the default. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">true</code>: Use a non-transient detached state field so that | 
|  | objects crossing serialization barriers can still be attached efficiently. This | 
|  | requires, however, that your client tier have the enhanced versions of your | 
|  | classes and the OpenJPA runtime. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">false</code>: Do not use a detached state field.  No OpenJPA runtime | 
|  | will be required for client tiers. | 
|  | </p> | 
|  | </li></ul></div> | 
|  | <p> | 
|  | The detached state field is also used to determine when proxies should be | 
|  | removed from entities during serialization.  See the | 
|  | <a class="xref" href="ref_guide_pc_scos.html#ref_guide_pc_scos_proxy_serial" title="6.4.4.  Serialization">Section 6.4.4, “ | 
|  | Serialization | 
|  | ”</a> section for more details. | 
|  | </p> | 
|  | <p> | 
|  | You can override the setting of this property or declare your own detached state | 
|  | field on individual classes using OpenJPA's metadata extensions. See | 
|  | <a class="xref" href="ref_guide_remote.html#ref_guide_detach_field" title="1.3.2.  Detached State Field">Section 1.3.2, “ | 
|  | Detached State Field | 
|  | ”</a> below. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">DetachedStateManager</code>: Whether to use a detached state | 
|  | manager. A detached state manager makes attachment much more efficient. Like a | 
|  | detached state field, however, it breaks serialization compatibility with the | 
|  | unenhanced class if it isn't transient. | 
|  | </p> | 
|  | <p> | 
|  | This setting piggybacks on the <code class="literal">DetachedStateField</code> setting | 
|  | above. If your detached state field is transient, the detached state manager | 
|  | will also be transient. If the detached state field is disabled, the detached | 
|  | state manager will also be disabled. This is typically what you'll want. By | 
|  | setting <code class="literal"> DetachedStateField</code> to true (or transient) and | 
|  | setting this property to false, however, you can use a detached state field | 
|  | <span class="bold"><strong>without</strong></span> using a detached state manager. This | 
|  | may be useful for debugging or for legacy OpenJPA users who find differences | 
|  | between OpenJPA's behavior with a detached state manager and OpenJPA's older | 
|  | behavior without one. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">AccessUnloaded</code>: Whether to allow access to unloaded fields | 
|  | of detached objects. Defaults to true. Set to false to throw an exception | 
|  | whenever an unloaded field is accessed. This option is only available when you | 
|  | use detached state managers, as determined by the settings above. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">LiteAutoDetach</code>: <span class="bold"><strong>This option is ONLY valid for the <code class="literal">loaded</code> | 
|  | DetachState setting.</strong></span> Detach all fields and relations as described by the loaded | 
|  | property when an explicit detach is requested or when a | 
|  | single Entity is being detached as part of serialization. When the entire | 
|  | persistence context is being auto-detached ( <code class="literal">openjpa.AutoDetach</code> ), | 
|  | the minimal amount of work will be completed to disassociate all Entities from | 
|  | the persistence context. <span class="bold"><strong>It is highly recommended that all Entities have a | 
|  | @Version field when using this property</strong></span>. In addition, care needs to be taken | 
|  | when this value is set to true as the following caveats apply: | 
|  | </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> | 
|  | <p> | 
|  | A relationship from a managed Entity to an unmanaged Entity which was detached by the lite detach setting will not be persisted. | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | When merging a detached Entity back into the persistence context any lazily loaded fields that were marked to null when detached will not be persisted. | 
|  | </p> | 
|  | </li></ul></div><p> | 
|  | </p> | 
|  | </li><li class="listitem"> | 
|  | <p> | 
|  | <code class="literal">DetachProxyFields</code>: <span class="bold"><strong>This option is ONLY valid when used in conjunction with the <code class="literal">LiteAutoDetach</code> | 
|  | DetachState setting.</strong></span> When detaching the persistence context, all proxies will be left in place. Note, that | 
|  | all <code class="literal">Large Result Sets</code> will be removed. | 
|  | </p> | 
|  | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> | 
|  | <code class="literal">true(default)</code>: All proxies will be removed and LRS fields will be removed. | 
|  | </li><li class="listitem"> | 
|  | <code class="literal">false</code>: All proxies will be left in place and LRS fields will be removed. | 
|  | </li></ul></div> | 
|  | </li></ul></div> | 
|  | <div class="example" id="ref_guide_detach_graph_confex"><p class="title"><b>Example 12.1.  | 
|  | Configuring Detached State | 
|  | </b></p><div class="example-contents"> | 
|  |  | 
|  | <pre class="programlisting"> | 
|  | <property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=true)"/> | 
|  | </pre> | 
|  | </div></div><br class="example-break"> | 
|  | <p> | 
|  | You can also alter the set of fields that will be included in the detached graph | 
|  | at runtime. | 
|  | <a class="ulink" href="../javadoc/org/apache/openjpa/persistence/OpenJPAEntityManager.html" target="_top"> | 
|  | <code class="classname">OpenJPAEntityManager</code></a>s expose the following APIs | 
|  | for controlling detached state: | 
|  | </p> | 
|  | <pre class="programlisting"> | 
|  | public DetachStateType getDetachState(); | 
|  | public void setDetachState(DetachStateType type); | 
|  | </pre> | 
|  | <p> | 
|  | The <code class="classname">DetachStateType</code> enum contains the following values: | 
|  | </p> | 
|  | <pre class="programlisting"> | 
|  | enum DetachStateType { | 
|  | FETCH_GROUPS, | 
|  | LOADED, | 
|  | ALL | 
|  | } | 
|  | </pre> | 
|  | </div> | 
|  | <div class="section" id="ref_guide_detach_field"><div class="titlepage"><div><div><h4 class="title">1.3.2.  | 
|  | Detached State Field | 
|  | </h4></div></div></div> | 
|  |  | 
|  | <a class="indexterm" name="d5e16669"></a> | 
|  | <p> | 
|  | When the detached state field is enabled, the OpenJPA enhancer adds an | 
|  | additional field to the enhanced version of your class. This field of type | 
|  | <code class="classname">Object</code>. OpenJPA uses this field for bookkeeping | 
|  | information, such as the versioning data needed to detect optimistic concurrency | 
|  | violations when the object is re-attached. | 
|  | </p> | 
|  | <p> | 
|  | It is possible to define this detached state field yourself. Declaring this | 
|  | field in your class metadata prevents the enhancer from adding any extra fields | 
|  | to the class, and keeps the enhanced class serialization-compatible with the | 
|  | unenhanced version. The detached state field must not be persistent. See | 
|  | <a class="xref" href="ref_guide_meta_ext.html#detached-state-field" title="4.1.3.  Detached State">Section 4.1.3, “ | 
|  | Detached State | 
|  | ”</a> for details on how to declare a | 
|  | detached state field. | 
|  | </p> | 
|  | <pre class="programlisting"> | 
|  | import org.apache.openjpa.persistence.*; | 
|  |  | 
|  | @Entity | 
|  | public class Magazine | 
|  | implements Serializable { | 
|  |  | 
|  | private String name; | 
|  | @DetachedState private Object state; | 
|  | ... | 
|  | } | 
|  | </pre> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  |  | 
|  | </div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ref_guide_encryption.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref_guide.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ref_guide_event.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11.  | 
|  | Encryption Provider | 
|  |  </td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top"> 2.  | 
|  | Remote Event Notification Framework | 
|  | </td></tr></table></div></body></html> |