4.1

New Features


Composite Plugins

Nexaweb 4.1 provides support for composite plugins; these enable the creation of new user interface tags that combine several existing tags together and provide new functionality.

Flush Policy Enhancements

FlushPolicies applied to PushConnections are now capable of closing the stream instead of sending whitespace. This can be useful for cases where polling from the client is not desirable, but flushing whitespace is not effective or desirable.

Communications Queue Monitoring

The queues that hold information bound for client sessions are now monitorable on the server side.

Server Initialization

Initializing Nexaweb Server may now be accomplished from a ServletContextListener, allowing customers to utilize the Nexaweb Server API in a ServletContextListener of their own. This was previously not possible due to the fact that Nexaweb did not initialize until Servlets were initialized.

Performance Enhancements

Better performance for large tables (when using CDATA representation) and for large data retrieval

Configurable HTTP request methods

Support for configurable HTTP method for requests and better default selection

New XUpdate Features

There is a new XUpdate command to create documents on the client side, and the APIs for accessing Documents at the session level have become more generic.

IME Enhancements

IME (Input Method Editor) support has been extended to include enhanced support in Java 1.2+ environments Known Issues

Nexaweb Platform

UTF-8 is the only supported XML encoding

All XML documents will be read in UTF-8 encoding. XML declarations other than <?xml version="1.0" encoding="UTF-8"?> will result in undefined behavior.

Environments Where Push Connection Is Not Supported

There are several environments where PushConnections are not supported, polling may be used instead.

Netscape 4.7(all OS platform, all JVM, Http or Https) - Reason - HTTP Post uses 100% of the CPU until response returns. There is no workaround for this issue.

JVM 1.3 ( all OS platforms, all browsers, Http or Https ) with chunked transfer encoding. - Reason - with JDK 1.3 and chunked encoding, the client does not receive any data until the response stream is closed. Configuring the application server to use HTTP/1.0 when the client is using a 1.3 JVM should alleviate this problem as chunked transfer encoding should not be used.

Nexaweb Client

Cookies and JVM1.3, JVM1.4

Setting new cookies in 1.3 and 1.4 JVMs is not honored.

URL Redirection is not supported

You should avoid using URL redirection since it does not work as expected in most cases. This issue will be addressed in the future versions of the product.

Netscape 7.1, 7.2, Mozilla 1.7, FireFox 1.0 does not support multiple sessions

Netscape 7.1, 7.2, Mozilla 1.7, FireFox 1.0 browsers on same machine always send the same id to the server and are therefore only granted one session by the server. Opening the application in a new instance of these browsers will result in the first browser showing a session timeout.

Mozilla 1.6 + JRE 1.5 is not sending cookies to the server

JRE 1.5 are showing different behaviors on the cookie handling. On most browsers, it carries the browser cookies to the server, but not on Mozilla 1.6.

Client hangs Internet Explorer when navigating away in Java 1.5 and 1.4

This is a known issue, Bug ID: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6284332 in the Sun Developer Network Bug Database. We have reproduced the issue in-house with a simple sample that ships with the 1.5 Update 3 JDK, and is not related to Nexaweb's client architecture. The behavior is intermittent and no known workaround is available.

Cut & Paste from/to non-nexaweb applications.

Many 3.x customers requested that we stop using the heavyweight java.awt components which had rendering issues. So in 4.0 we do not use the awt components to render text. Accessing the system clipboard is a permissioned action for applet code and used to be done through the java.awt components which are considered trusted. Since we now render our own text, we do not get this functionality by default anymore. As the first stage in supporting cut and paste to/from non-nexaweb applications, we currently have support in Windows with Internet Explorer. We will likely expand the support in future versions to cover other browsers and operating systems. Also, Nexaweb uses Ctrl-C, -X, and -V to invoke cut and paste actions even on MacOS.

Shaved 'W' characters

The most common Windows sans-serif font at point size 11 (both common defaults) begins drawing the 'W' character at offset -1, so with 0 left margin (as in our default stylesheet), a 'W' character at the beginning of <label> text will be missing one row. This is a problem with the font, not with Nexaweb nor with java, and can occur in any Windows app, for instance in a browser rendering this HTML:
<table width="100" cellpadding="0" margin="0"><tr>
<td style="font-family=sans-serif; font-size:11px">Wow! 11-pt Arial!</td>
</tr></table>


This Windows font problem can be circumvented by setting any other fontSize, fontFamily, or left margin, either with an attribute: <label margin="1" text="Wow!"> or in a Nexaweb stylesheet:

<style applyTo="label">
<normal margin="2,2,2,1"><!-- was 2,2,2,0 -->
</style>


Text-Editing Features

Nexaweb's lightweight implementation of text-editing components lacks some editing features with which users may be familiar: Undo/redo (including Escape to undo); PgUp/PgDn stopping before beginning or end of text; single-word instead of all-text selection on double-click.

Attribute 'focused' write-only

The "focused" attribute of components is generally write-only and is not updated as user activity moves the focus.

Typing into IE address textfield makes Nexaweb text fields unfocusable

If you type into the address textfield of Internet Explorer you can no longer type into Nexaweb text fields or perform any other Nexaweb key input until you click on another window and then click back to the Nexaweb application. This is an issue with Internet Explorer that affects all Java applications.

PrintService does not work on all platforms

Printing through the PrintService API works on Microsoft JVM with IE 5+, and Sun JVM 1.3.0 and 1.4 and later; 1.3.1_01 and 1.3.1_02 are unsupported( Sun BugID 4519411); and other 1.3.1 will print, but graphics may be poorly rendered. Where printing is not supported, the user will see an exception through the default exception handler.

Sun Plugin bug with Jar Caching

This is a sun plugin bug, it is not a Nexaweb issue. This will stop happening if you go to the Sun Java Plugin settings in your control panel and clear the jar cache.

java.lang.NullPointerException
at sun.plugin.cache.CacheFile.getFileType(Unknown Source)
at sun.plugin.cache.CacheFile.before(Unknown Source)
at sun.plugin.cache.CleanupThread$1.compare(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at sun.plugin.cache.CleanupThread.getFilesInCache(Unknown Source)
at sun.plugin.cache.CleanupThread.cleanCache(Unknown Source)
at sun.plugin.cache.CleanupThread.run(Unknown Source)

Nexaweb Server

Request Parameters and Request Forwarding

If you override the original request parameters while forwarding to another jsp page or servlet, the new values will not be passed in. Here is an example:

* The original request URL from the client is: mypage.jsp?param1=originalValue
* mypage.jsp looks like the following:

<%
 request.getRequestDispatcher("foo.jsp?param1=newValue").
 forward(request,response);
 %>



If you read the param1 in foo.jsp its value will be "originalValue".

WebServices and JDK 1.3 Servers

WebServices generates and compiles Java code. The compiler used is the Eclipse JDT compiler which which requires Java 1.4 or greater. WebServices currently will not function on application servers that run in a 1.3 VM.

These include:

* WebSphere 5.1
* WebLogic 7.0 (The Default install is JDK 1.3, but this will run just fine with JDK 1.4)
* Oracle 9i (The default install is JDK 1.3, it is documented to work with JDK 1.4, but Nexaweb has not tried this)

Using web services on WebLogic 9 or with JDK 1.5 requires Axis 1.2

Nexaweb uses Apache Axis to provide WebServces support. Nexaweb ships with Axis 1.1, but some environments require an upgrade to Axis 1.2.

To upgrade:

1. Download Axis 1.2 from apache and expand it to a temp area.
2. Remove the following Axis 1.1 jars from your application's WEB-INF/Nexaweb/lib directory:
* axis.jar
* commons-discovery.jar
* commons-logging-api.jar
* jaxrpc-api.jar
* saaj.jar
* wsdl4j.jar
3. Copy all jars (other than axis-ant.jar) from the Axis 1.2 lib directory to your application's WEB-INF/Nexaweb/lib directory.

java.util.Calendar and WebServices in JDK 1.4 or lower

One of the types in WebServices is java.util.Calendar. However, serialization of that object is broken in JDK's lower than JDK 1.5. This is a Sun issue, not a Nexaweb issue. Therefore parameters to WebServices methods or return objects from WebServices methods that are or contain java.util.Calendar will not work unless the side doing the Deserialization is JDK 1.5 or greater. More on this issue... http://forum.java.sun.com/thread.jspa?threadID=440496&tstart=75

Oracle 9i & 10g PushConnection content is buffered when WebCache add-on is in use

When WebCache is on, Oracle app server won't flush anything to the client until the response buffer is full. The default buffer size is 8K. There are a couple workarounds:

1. Do not use the WebCache add-on. PushConnection will operate normally.
2. It may be possible to configure WebCache so that it is not applied to the PushConnection or applies to the PushConnection with a smaller buffer or zero length buffer.
3. Flush policy - you can configure a flush policy in client.xml that will pad each push message to bring it to the desired buffer size so that it gets sent to the client. This obviously is not ideal since it significantly increases the traffic between the client and the server and most likely will have a negative impact on performance.

Support for WebSphere 5.0 has been dropped.

The major issue is that WebSphere 5.0 does not honor our Request or Response wrappers when we forward to other pages/files/servlets. This behavior is inconsistent with other application servers/servlet engines, and IBM corrected this behavior in WebSphere 5.1 and later.

Running more than one Nexaweb Application on JBoss does not work

The servlet specification recommends that Applications in a container be segmented using a different classloading mechanism (see section 9.7 of the specification). JBoss has decided not to implement this in the standard way. Therefore multiple applications share classloading spaces and multiple Nexaweb applications do not function properly.

WebLogic for windows internationalization

WebLogic uses the Java system property "file.encoding" to determine how to read JSP source. At least in the US version of Windows, this means that UTF-8 encoded files with Japanese chars in them will be read incorrectly. The workaround is to set the system property "file.encoding=UTF-8". I doubt if this is an issue on Japanese versions of the OS, but here in the US, it seems to be.

Compression Filter on WebLogic 7.0 SP4 and SP5

Nexaweb's supplied compression causes client side GZip error on WebLogic 7.0 SP4 and SP5. This is fixed in WebLogic 7.0 SP6. Remove Nexaweb's compression filter from your application's web.xml AFTER you have run the Nexawebify ant task or chosen "Add/Upgrade Nexaweb Support" in Nexaweb Studio.

Other Issues

1. The "Internationalization Sample" does not contain properly encoded string resources; they do not display correctly. This is only in the servlet version and it is an error in the sample, not in the platform.
2. JGgroups does not reconnect after a private nic being used by JGroups is disabled and then enabled.
3. Shortcut XPath syntax "//" is incorrectly applied as always starting at the doc root.
4. WebServices does not support java.util.Calendar types as Enumerations.
5. Creating an empty Document and trying to use it as a shared document causes an EmptyDocumentException
6. PushConnection timings should be done spepartely in the service() method of NexawebServlet.
7. DOM: setRootElement does not trigger an event on a shared dataset
8. Crossreferencing is not supported in ServerSession attributes and SharedStore (clustering env)
9. SharedStores may get out of sync if multiple servers set a value for the same key at the same time.
10. Printing generally does not work well
11. occasional hangs in 1.4 and 1.5 JREs when navigating away
12. When a long table is loaded with the last row focused, the row doesn't show up as active row.
13. If you add onCreate style to a cell via a styleSheet it does not fire
14. Text field editing uses Control instead of Command to work around Java issues on Mac OS X
15. Can't undo/redo text in editable table cell Mac OS, Safari browser
16. Entered text displays square on Solaris - Netscape 7
17. large tables with many heavy-weight components run out of memory quickly
18. ontext sensitive popupMenu doesn't dismiss with ESC on Safari
19. the initial comboBox's default listItem's value cannot be got via the serverDOM
20. JSESSIONID cookie appears twice in the client request
21. Application hangs when doing a retrieveAndProcess for a .jsp from an mco's load event
22. Pressing 'Esc' in a dialog cancels the onActiveLost event.
23. onMouseOut event is fired when the mouse is entering the components
24. dialog will close if editing a textField and pressing [Esc]
25. 4.1-->header-->onContextMenu event does not work
26. cursor never reverts from the finger after mousing over a link unless it leaves the rootPane
27. Set attribute alignHorizontal in one cell affect all cells in table
28. Netscape 4 doesn't get the blue border on the right side
29. ComboBox does not support cursorIndex or endSelectedIndex attributes