Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - subes

Pages: [1] 2 3
We found another regression in AjaxSwing 3.2.7. I am unable to reproduce the issue isolated, though I've made a video comparing AS3.2.6 and AS3.2.7 regarding this bug.

The difference is, that when changing the selection of comboboxes (which are not allowed to have empty values after they have been activated by checking a checkbox) does not seem to get synchronized to the model, thus it gets stuck without being able to properly process the ok button click.

I've sent the video to and to Alexander Ponomarenko. I hope you can tell from the video what change in AS3.2.7 might cause this issue.

I've sent a sample to and to Alexander Ponomarenko who is familiar with our samples.

The sample shows that when having a modal dialog open, which causes a postback to happen, the dialog disappears behind the main view and is unreachable unless you move the main view away.

To reproduce start the sample, open the app from the menu, click on the "open dialog" button and change the selection in the combobox. The change in the selection gets synchronized with the model, which then causes the dialog to disappear behind the main view.

We have reverted back to AS3.2.6 because of this bug and another one I will report shortly when I succeed in creating a sample.

Commercial Technical Support / CustomToolTips too wide
« on: February 16, 2012, 09:28:50 AM »
When configuring in
Code: [Select]

Then very long tooltip texts are displayed too wide. Would it be possible to limit the horizontal size like Firefox and IE do it automatically?

See attached sample and screenshots.

We talked about this issue last year, but it is not yet solved in AjaxSwing 3.2.6 or 3.2.7a.

In the attached screenshots it is visible, that table headers have some pixels left on the right side. It would be nice if the table could be aligned properly. The problem is reproducible since AjaxSwing 3.2.3. Since 3.2.7a it seems even empty tables have some space left on the right side, which was fine in previous versions.

I've created a sample that reproduces this issue and have sent it via email to and to Alexander Ponomarenko who is familiar with our samples.

Commercial Technical Support / Initial focus not set reliably in IE
« on: January 27, 2012, 11:14:08 AM »
Last year we reported an issue about the initial focus not being set reliable with IE. This is the description from our email discussion back then:

Code: [Select]
After extraction, you can start the sample by starting AjaxSwing via “<extractedFolder>/env/AjaxSwing3.2.3/bin/startServer.bat”.
After that open the following URL in your IE7 or IE8 Browser: http://localhost:8040/ajaxswing/apps/test
When the application is open, open the menu on the left, then randomly open any view (View1, View2, View3). You will notice, that the initial focus does not get set reliably. Sometimes the focus is not set.

This is the last info you gave us on that issue:
Code: [Select]
There are several possible solution to focus issue right now, but with fixing this issue they break several other use cases, so we are still searching for a fix that wouldn't affect behaviour in other use cases.

It would be nice if you could reanimate your efforts to fix this problem. As of now this is still reproducible with IE7 and IE8 with AjaxSwing 3.2.6. Firefox does not have this issue.

I am sending the sample to reproduce this to and Alexander Ponomarenko who is familiar with our samples.

This issue was last year discussed together with the one reopened here:

We've talked about this issue last year, since then there were some AjaxSwing upgrades, which don't seem to have fixed this issue yet.

This is the description per mail from last year:
Code: [Select]
I’ve attached another Bug sample about the focus. This time we found out that the focus traversal gets reset because of a postback caused by a DocumentListener. To reproduce this, start the sample app, type something into the first field, hit Tab, type something into the second field and hit Tab. The focus goes correctly into the third field, but as soon as the postback arrives, the focus is reset to the first field. This happens during the window refresh.
The bug is a bit different in our application though. We have some more complex views there, which have some text fields with a DocumentListener.
When the view gets opened and the field with the DocumentListener gets edited first, then Tab is being hit, the focus correctly stays in the next field, even with the postback occurring (you solved this with the last focus patch in AjaxSwing).
But with a minor modification we have a problem there again. The view gets opened, some normal field gets edited, the user hits Tab, then the field with the DocumentListener gets edited, then again Tab gets hit. In that case, the focus is completely lost and there is no caret visible anywhere. Though the caret should be in the next field. Somehow it makes a difference if the postback occurs only for the DocumentListener field changes or if other fields have been changed before aswell but did not cause a postback.
Maybe if you solve the bug in the sample, the bug in our application gets solved aswell. I suspect they may be related to the same cause.

I've attached the testcase to this forum post.

The last answer we got to this from you, after some fixes that failed in other ways, was:
Code: [Select]
There are several possible solution to focus issue right now, but with fixing this issue they break several other use cases, so we are still searching for a fix that wouldn't affect behaviour in other use cases.

The discussion was held previously with Alexander Ponomarenko.

Right now with AjaxSwing 3.2.6 the following problems can be reproduced with the same sample as before in various browsers:
1. In Firefox, after the postback occured, the focus is set back to the first field instead of staying in the third one as it should.
2. This occurs exactly in the same way in IE8.
3. Though, in IE7 the postback causes the cursor to be missing at all, thus no text field is focused and the user has to select it himself again.

Commercial Technical Support / Monitoring ClientAgents memory usage
« on: January 16, 2012, 06:15:38 AM »

what approach do you use to monitor all ClientAgent-JVMs on a given host? It would be nice to get statistics for heap and permgen memory usage and GC activity. Then be able to view those in a chart for a whole day or also intraday.

I've looked at the following to write some script that is periodically run that may accomplish this:
1) jps ( to list all java processes
2) jstat ( to attach to those java processes if not already done so and write the output to a seperate file for each jvm periodically
3) regularly create charts for the log data; e.g. once for each day and in a specific interval recreate a trailing chart for the current situation

Only part 3 would require us to code something on our own.

Though, is there maybe a specific solution you could recommend to accomplish the task? Just using JVisualVM or JConsole is not enough, because we need statistics on the memory usage on any given time. Thus be able to look on it after we get an exception in AjaxSwing without having to recreate the issue to get those statistics. Also JVisualVM and JConsole are not very handy to monitor lots of JVMs in parallel. :)

For some time we had the effect that a user clicks on a button and the browser waits for the server response endlessly. Doing a refresh causes the screen to go blank white.

We now were able to track this phenomenon down a bit. We seem to be able to reproduce this sometimes with a specific action, though the problem seems to appear randomly throughout the application.

A user clicks on a menu, then the search view opens. This demonstrates normal client/server communication via the following scheme:
    user -> client browser -> tomcat -> ajaxswing -> clientagent jvm -> session -> emulate button
    emulate button finished -> session -> clientagent jvm -> ajaxswing -> tomcat -> client browser -> user

Sometimes then when the user clicks on the search button after typing in some search criteria, the following happens instead of the normal communication:
    user -> client browser -> tomcat?
    user endlessly waiting

ajaxswing.log does not contain any entry like:
    [com.creamtec.ajaxswing.ServletHelper] param = __Action, value = /button/suchen_10436282
which would normally occur.

We can't specifically tell yet if the problem lies between the browser and tomcat or between tomcat and ajaxswing.

Do you have any experience with a problem like this? Maybe you have some ideas what could cause this.

Commercial Technical Support / ConnectException without any other clue
« on: December 20, 2011, 08:16:30 AM »
Our production systems encounter the dreadful ConnectException again:

Code: [Select]
2011/12/15 14:51:42:932 : http- : [com.creamtec.ajaxswing.ServletHelper] Failed to process a request for session = org.apache.catalina.session.StandardSessionFacade@593bdac8 (Exception java.rmi.ConnectException, Connection refused to host:; nested exception is: Connection refused: connect)
java.rmi.ConnectException: Connection refused to host:; nested exception is: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(
at sun.rmi.transport.tcp.TCPChannel.createConnection(
at sun.rmi.transport.tcp.TCPChannel.newConnection(
at sun.rmi.server.UnicastRef.invoke(
at com.creamtec.ajaxswing.ClientAgentImpl_Stub.processHttpRequest(Unknown Source)
at com.creamtec.ajaxswing.ServletHelper.delegateRequestToClientAgent(
at com.creamtec.ajaxswing.ServletHelper.doPocessHttpRequest(
at com.creamtec.ajaxswing.ServletHelper.processHttpRequest(
at com.creamtec.ajaxswing.AjaxSwingRouter.doPost(
at javax.servlet.http.HttpServlet.service(
at com.creamtec.ajaxswing.AjaxSwingRouter.service(
at javax.servlet.http.HttpServlet.service(
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
at org.apache.catalina.core.StandardWrapperValve.invoke(
at org.apache.catalina.core.StandardContextValve.invoke(
at org.apache.catalina.core.StandardHostValve.invoke(
at org.apache.catalina.valves.ErrorReportValve.invoke(
at org.apache.catalina.core.StandardEngineValve.invoke(
at org.apache.catalina.connector.CoyoteAdapter.service(
at org.apache.coyote.http11.Http11AprProcessor.process(
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(
Caused by: Connection refused: connect
at Method)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(
... 23 more

We checked all the previous causes for this, like:
- 2 network interfaces where one is blocked by firewall
- System.exit() that closes the whole JVM instead of only one session
- OutOfMemory issues
- Filesystem has no space left
- not executable

The interesting thing is, that these problems occur on both load balanced servers at nearly the same time. The machines are not at all on high load. The users as it seems get error pages when trying to get new sessions. Already running sessions seem not to be affected. This currently occurs with our own version of the 3.2.3 release. The problem only occured some days ago and previously worked flawlessly for some time.

The logs can be downloaded here:
The download will expire in 30 days.

Do you have any other ideas why this could occur?

Commercial Technical Support / AccessControlException on ClientAgent.exit()
« on: November 29, 2011, 08:56:06 AM »

why does this exception occur when calling ClientAgent.exit() in a button ActionListener? It does not seem to havy any negative impact, because the session still gets closed properly. Though it is quite discomforting to have these exceptions occur quite often without knowing why. :)

Code: [Select]
Mon Nov 28 09:18:09 CET 2011
at com.creamtec.ajaxswing.core.ClientAgent.exit(
at de.bertelsmann.general.SystemExitHelper.initSystemExit(
at solar.client.interact.mitarbeiterportal.login.PortalKennwortAendernView.abbrechen(
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
at java.lang.reflect.Method.invoke(
at gengui.util.ReflectionUtil.invokeMethodAllowExceptions(
at gengui.util.ReflectionUtil.invokeMethodDisplayExceptions(
at gengui.guiadapter.AbstractMethodActivator.invokeMethod(
at gengui.guiadapter.MethodActivator.actionPerformed(
at javax.swing.AbstractButton.fireActionPerformed(
at javax.swing.AbstractButton$Handler.actionPerformed(
at javax.swing.DefaultButtonModel.fireActionPerformed(
at javax.swing.DefaultButtonModel.setPressed(
at javax.swing.AbstractButton.doClick(
at com.creamtec.ajaxswing.gui.html.HTMLWindowUpdater.defaultEmulateAction(
at com.creamtec.ajaxswing.gui.WindowUpdater.emulateAction(
at com.creamtec.ajaxswing.gui.WindowUpdater.checkAndEmulateAction(
at com.creamtec.ajaxswing.gui.WindowUpdater.emulateRequest(
at com.creamtec.ajaxswing.core.AjaxSwingThread$
at java.awt.event.InvocationEvent.dispatch(
at java.awt.EventQueue.dispatchEventImpl(
at java.awt.EventQueue.access$000(
at java.awt.EventQueue$
at java.awt.EventQueue$
at Method)
at java.awt.EventQueue.dispatchEvent(
at com.creamtec.ajaxswing.gui.AjaxSwingEventQueue.dispatchEvent(
at java.awt.EventDispatchThread.pumpOneEventForFilters(
at java.awt.EventDispatchThread.pumpEventsForFilter(
at java.awt.EventDispatchThread.pumpEventsForHierarchy(
at java.awt.EventDispatchThread.pumpEvents(
at java.awt.EventDispatchThread.pumpEvents(

This is the method that gets called by the ActionListener:
Code: [Select]
public void abbrechen() {
SystemExitHelper.initSystemExit(getClass(), 1);

This is the SystemExitHelper:
Code: [Select]
public class SystemExitHelper {

private SystemExitHelper() {

public static void initSystemExit(Class caller, int status) {
Logger log = Logger.getLogger(caller);"Excecute system exit with status " + status);
if (AjaxSwingManager.isAjaxSwingRunning()) {
if ((ClientAgent.getCurrentInstance() == null)) {
throw new Error("System.exit hätte ausgeführt werden sollen, jedoch ist der ClientAgent schon heruntergefahren.");
} else {
} else {

Commercial Technical Support / Fix: FileOpener not positioned properly
« on: October 17, 2011, 12:46:41 PM »

I just found a workaround for our FileOpener buttons not being rendered properly by AjaxSwing. You might consider putting this fix into the next AjaxSwing release. Or if not just have it available in the forum through this post for others.

The problem we had was that the template:
rendered our buttons 2 pixels off on three points:
1. the text was 2px too much down
2. the button was 2px short to the bottom
3. the button was 2px short to the right

See attachments for screenshots of before and after and for the fixed template file.


see the attached sample that shows the behaviour with AjaxSwing 3.2.3:
1. put download.jpg in wcapps and setup ajaxswing to start the sample
2. start the sample with IE8 or IE9
3. make sure that IE asks for downloads being confirmed (see screenshot where to set this up, though german here)
4. click on "Download" in the app
5. see the message popping up in IE
6. confirm the message
7. see that instead of the download starting, nothing happens
8. again click on download
9. now the file downloads

Is it normal that the download does not start after the message has been confirmed?
Also we got other problems because of this. When doing this in a view that also has a table with a selected row and a button being dependant on the selection, it seems the selection is still visible in the JTable in the browser but the code behind does not want to execute the button because it got disabled somehow. Though I am still working on isolating this dependant problem.

Hi, with AjaxSwing 3.2.5 we encounter lots of ConnectExceptions on our production servers. The clients often get 500 internal error responses from tomcat.

Previously we encountered those ConnectExceptions in the following circumstances:
- Not enough RAM available on the server
> The server has 8GB RAM and does not fully utilize it
- Not enough RAM/HEAP configured for the ClientAgents
> We added -Xmx1024m -XX:MaxPermSize=512m to clientAgent.bat and
- Having multiple network interfaces, having AjaxSwing switch between those, but only one interface allows loopback connections
> The logs showed this by displaying different IPs for the ConnectExceptions. This time it is always the same IP

Interesting about the current situation is:
- AjaxSwing logged ~750 ConnectExceptions in two days
- ClientAgents are instantiated quite often but seem to fail to start
- Or ClientAgents seem to crash and take all sessions down with them
- No real other hints in the application logs, except for the known ThreadDeathExceptions we are used to have without any real negative effect
- Some users can operate normally on their sessions.
- Sometimes they get white pages after some postback action returns or times out.
- When someone wants to log in, he sometimes gets the 500 internal error response from tomcat. He has to restart his browser to try again and to succeed after some retries to get a working session.

We had these problems previously with AjaxSwing 3.2.3, but it seems those problems persist with 3.2.5. I am sending the log files with our configuration files to you via email.

Do you have any other ideas about troubleshooting this behaviour?

Hi, is there some way to detect how many JVMs (ClientAgents) are currently running and how many sessions are open at any given time?
Or is there maybe some listener we can use to get notified about such things? What would be the best way to approach this?

Currently we think about implementing a heartbeat that each client session writes to the database periodically in a seperate thread that gets started after login. The monitoring app then reads those heartbeats and purges the ones that did not write to the database since some timeout. We expect with this, that the heartbeat thread gets killed by AjaxSwing when the user session gets closed (even with common.classpath). We will  also add a ShutdownHook, a finally-block in the heartbeat thread and a check for (ClientAgent.getCurrentInstance() == null) in the heartbeat thread to unregister the session heartbeat from the database.

Is there some better way to do this or do you see any problems with that approach?

With AjaxSwing 3.2.5 we get the following NullPointer in AbstractDocumentRenderer.renderWindow:
2011/09/06 12:03:25:678 : AWT-EventQueue-1 : [com.creamtec.ajaxswing.rendering.html.positioned.AjaxPageRenderer] Rendering FAILED for window de.bertelsmann.client.login.LoginDialog [id=dialog1_1320687469] (Exception java.lang.NullPointerException)
    at com.creamtec.ajaxswing.rendering.AbstractDocumentRenderer.renderWindow(
    at com.creamtec.ajaxswing.rendering.html.positioned.PositionedPageRenderer.renderWindow(
    at com.creamtec.ajaxswing.rendering.html.HTMLPageRenderer.appendBody(
    at com.creamtec.ajaxswing.rendering.html.HTMLPageRenderer.renderDocument(
    at com.creamtec.ajaxswing.rendering.html.HTMLClientAgent$
    at java.awt.event.InvocationEvent.dispatch(
    at java.awt.EventQueue.dispatchEvent(
    at com.creamtec.ajaxswing.gui.AjaxSwingEventQueue.dispatchEvent(
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
    at java.awt.Dialog$
    at java.awt.event.InvocationEvent.dispatch(
    at java.awt.EventQueue.dispatchEvent(
    at com.creamtec.ajaxswing.gui.AjaxSwingEventQueue.dispatchEvent(
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(
    at java.awt.EventDispatchThread.pumpEvents(
    at java.awt.EventDispatchThread.pumpEvents(

Pages: [1] 2 3