4.2.18 (Apr 2008)

DOM Synchronization Performance Improvement
Attribute Change Condenser

  • An alternative DomChangeList implementation which will batch attribute changes so that only the most recent state is sent over the wire.
    • All attribute changes sent from the server to the client as part of a single message block will be condensed.
      • 100 elements, changing 4 properties for 100 iterations
        • 4.2.17 – 4-5 seconds to process
        • 4.2.18 – 1-2 seconds to process
    • Element append/remove commands are not batched.

To enable the condenser, edit the WEB-INF/nexaweb-server.xml file with the following:

<protocol-queues>
  <dom-change-list class="com.nexaweb.protocol.util.AttributeCollapsingDomChangeList"/>
  <!--<dom-change-list class="com.nexaweb.protocol.util.SimpleDomChangeList"/>-->
</protocol-queues>

 

The old DomChangeList implementation is com.nexaweb.protocol.util.SimpleDomChangeList (in comments in the above XML).
The condenser removes negated attributes that are set by the server. This is observable when monitoring HTTP traffic over the push connection.
For example:

<set-attribute select="id('foo')">
	<attribute name="text" value="one"/>
</set-attribute>

<set-attribute select="id('foo')">
	<attribute name="text" value="two"/>
</set-attribute>
			

will become

<set-attribute select="id('foo')">
	<attribute name="text" value="two"/>
</set-attribute>
		

PushConnection API changes

  • Expose new methods on PushConnection to expose the batching programmatically allowing finer control over the timing of updates sent from the server to the client.
    • PushConnection.freezeClientUpdates() – calling this method will postpone sending any updates to the client until unfreezeClientUpdates() is called
    • PushConnection.unfreezeClientUpdates()

Tables with selectionMode="singleRow" no longer wrap
Tables with selectionMode="singleRow" no longer wrap vertically and scroll horizontally when navigating with arrow keys. Selecting the last row in the table, and then pressing the down arrow key no longer moves the row selection to the top row, instead the row selection will not change. Selecting the top row, and then pressing the up arrow key will not wrap the selection, but keep the selection in the first row.

Memory Leak Resolved
The memory leak occurred in data intensive UI where elements where created and then removed in the same <xm:modifications> block.
table, treeTable: New Attribute - "extendVerticalLines"
Indicates whether or not to extend the vertical lines into the table where there are no rows. The default is true.

Apps deployed to Tomcat 5.5.26 and 6.0.16 timeout prematurely
The cookie ID assigned by the Nexaweb Server contained a colon ":", which is not syntactically valid in the HTTP 1.1 cookies (see rfc 2109 http://www.ietf.org/rfc/rfc2109.txt). Tomcat 5.5.26 and 6.0.16 now strictly enforce this, which caused Nexaweb applications to timeout as soon as a request was made back to the server after initialization. The Nexaweb assigned cookie id now conforms to the HTTP 1.1 specification.

Defects Resolved

9470Server: Adding and removing rows causes server/client dom discrepancies
9441Scroll bar display size is incorrect
9423712-5750571 - Server waiting for PushNotificationObject to return
9333712-5743259 712-5741394 - Apps deployed to Tomcat 5.5.26 and 6.0.16 timeout when a request is made to the server after the initialPage XAL file is requested
9233712-5682256 - Using columnSpan in gridLayout breaks display formatting
9225712-5392957 - Performance Issues between 3.x and 4.x
9216712-5661546 - Srolling within a table behaves inconsistently
9190Memory leak by remove-element
9189NullPointerException by remove-element
9091gridLayout (gridPane) is NOT displayed correctly
9022712-5341311 - Tablelines extend to the height of table
9020712-5329019 - Gap in tree between the lines and the images
7831712-4503032 - Allow comboBox key selection to mirror HTML select element functionality
9020712-4272213 - Line up tree icons