Sun GlassFish Enterprise Server v3 Release Notes

Known Issues

This section describes known issues in Sun GlassFish Enterprise Server v3 and workarounds if available.

[JDK_Issue] Performance degradation caused by invoking setSoLinger or setReuseAddress (Issue 7109)

Description

When the setSoLinger method or the setReuseAddess method is invoked, performance is degraded and the following exception is thrown:


[#|2009-01-26T00:33:56.325-0800|WARNING|sun-appserver9.1|
javax.enterprise.system.container.web|_ThreadID=17;
_ThreadName=SelectorReaderThread-8084;
_RequestID=11ae0030-c392-4217-8408-cfa7efe0a879;|setSoLinger
exception
java.net.SocketException: Invalid argument

This issue is caused by an issue with the JDK software. This issue is resolved in JDK version 7.

For more information, see Issue report.

Workaround

None.

[JDK_Issue] Null pointer exception on server restart (Issue 8299)

Description

Restarting Enterprise Server sometimes causes a null pointer exception to be thrown.


SEVERE: doSelect exception
java.lang.NullPointerException

This issue is caused by an issue with the JDK software. This issue is resolved in JDK version 7.

For more information, see Issue report.

Workaround

None.

[JDK_Issue] IO exception: invalid argument during longevity test (Issue 7529)

Description

During an HTTP longevity test, the following exception is thrown 42 hours into the run:


[#|2009-04-05T17:41:26.537-0700|SEVERE|glassfish|javax.enterprise.system.core|
_ThreadID=15;_ThreadName=Thread-1;|doSelect
exception
java.io.IOException: Invalid argument

The instance and application are still accessible during the run.

This issue is caused by an issue with the JDK software. This issue is resolved in JDK version 7.

For more information, see Issue report.

Workaround

None.

[JDK_Issue] EPoll null pointer exception at startup (Issue 9472)

Description

At startup, Enterprise Server throws a null pointer exception:


java.lang.NullPointerException
        at sun.nio.ch.Util.atBugLevel(Util.java:326)
        at sun.nio.ch.SelectorImpl.<init>(SelectorImpl.java:40)
        at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:47)

This relates to Grizzly and is a JDK 6 issue. This issue is resolved in JDK 7.

For more information, see Issue report.

Workaround

None. Grizzly tries to work around this issue but still may fail.

[JDK_ISSUE] Richaccess: java.io.IOException: Invalid argument from doSelect (Issue 8573)

Description

The following exception is seen:


[#|2009-06-20T06:05:57.942-0700|SEVERE|glassfish|
com.sun.grizzly.config.GrizzlyServiceListener|
_ThreadID=21;_ThreadName=Thread-2;|doSelect
IOException
java.io.IOException: Invalid argument

This is a JDK issue, scheduled to be fixed in JDK 1.6.0_18.

For more information, see Issue report.

Workaround

Increase the maximum number of file descriptors to 10000 or greater (the default on Solaris is 64000). Once JDK 1.6.0_18 becomes available, install it.

File permissions on domain /applications directory can cause NullProcessException (Issue 6545)

Description

If a domain's /applications directory restricts access, or if you use directory deployment from a restricted directory, the server cannot read the files in the expanded directory. A NullProcessException error occurs during deployment.

For more information, see Issue report.

Workaround

Change the file access settings for such directories to grant the server permission to read the directory contents.

Windows installation log file is not readable (Issue 4881)

Description

The time-stamp-install.log file cannot be read, because all lines written to the file are concatenated into a single long string.

For more information, see Issue report.

Workaround

Use a different editor, and manually open the installation log file created under the %TEMP% directory.

Access to statistics for new virtual servers requires server restart (Issues 6238 and 6422)

Description

Monitoring statistics about newly added virtual servers are available only after the server is restarted.

For more information, see the reports for Issue 6238 and Issue 6422.

Workaround

After adding a virtual server, restart the server to view monitoring data for the virtual server.

[Open Installer] Option -l to relocate log files ignored on Windows (Issue 10693)

Description

Option -l to relocate log files is ignored when used with options -a and -s and the log files are created in the default location.

For more information, see Issue report.

Workaround

None.

Issues occur with ZIP distribution if UAC enabled on Windows Vista (Issue 10755)

Description

Some features will not work well on Windows Vista with User Account Control (UAC) enabled. One example is the Administration Console, which cannot be launched.

For more information, see Issue report.

Workaround

Disable UAC and reboot.

Null pointer exception thrown from com.sun.xml.wss.NonceManager.getInstance (Issue 11138)

Description

Testing a JAX-RPC web service, with GlassFish message security provider enabled, throws the following exception in the server logs:


[#|2009-11-23T11:16:58.375+0005|SEVERE|glassfishv3.0|
javax.enterprise.resource.webservices.rpc.server.http|_ThreadID=25;_
ThreadName=http-thread-pool-8080-(2);|caught
throwable
java.lang.RuntimeException: com.sun.enterprise.security.jauth.AuthException

The default value of the nonce property does not work.

For more information, see Issue report.

Workaround

To use message security with JAX-RPC web services, disable the nonce property in the configuration. See the Issue report for the complete steps for the workaround.

[Open Installer] Start menus not displayed and then empty on Windows Vista and Windows 2008 (Issue 5087)

Description

The Start menu group for Enterprise Server is not displayed after installation is first completed. If you log out and then log back in, the menu group is displayed but it is empty.

For more information, see Issue report.

Workaround

None.

When specj application is deployed, asadmin get --monitor=true "server.*" results in I/O error (Issue 11163)

Description

The command asadmin get -m "server.*" returns all monitoring data pertaining to that server. When many applications are deployed, the amount of data is quite large and could take a long time to return. The client might time out with the following client-side error:


./asadmin get --monitor=true "server.*"
I/O Error: Read timed out
Command get failed.

For more information, see Issue report.

Workaround

Minimize the amount of data that is returned to the client.

  1. Run the asadmin list -m "server.*" command, which returns the top-level elements.

  2. Select the top-level element for which details are needed, and use this as a filter. For example:


    > ./asadmin list -m "server.*"
    ...
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-cache
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.
    create-int-int-[Lorg\.spec\.jappserver\.supplier\.helper\.ComponentOrder
    
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.
    findByPrimaryKey-java\.lang\.Integer
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.generateXml
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.getEJBLocalHome
    ...
    
    >./asadmin get -m
    "server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.*"
    ...
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove.
    methodstatistic-name
    = MethodStatistic
    server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove.
    methodstatistic-starttime
    = 1259604209775
    ...

Standalone Update Tool fails with segmentation fault on Solaris (Issue 11222)

Description

The standalone Update Tool started with the updatetool command fails with a segmentation fault on Solaris when installing add-on components.

For more information, see Issue report.

Workaround

Ensure that your system conforms to the standalone Update Tool patch requirements as defined in the Update Center Release Notes.

Update Tool functionality in the Administration Console uses a different Java-based Update Center API and is not affected by this issue.

Ruby applications deployed on context root don't work with Admin Console (Issue 10854)

Description

If a Ruby application is deployed at contextroot '/' and the Administration Console is then accessed, accessing the Ruby application produces a 404 error.

For more information, see Issue report.

Workaround

None.

Java EE 6 Managed Bean support not available in app clients launched using Java Web Start (Issue 11257)

Description

When using Java Web Start to launch an application client, any managed beans in the application client will not be recognized.

For more information, see Issue report.

Workaround

Launch the application client using the appclient script. Managed beans in the application client will be supported normally.

Warning messages when invoking appclient script on Mac OS X with Apple Java implementation (Issue 8644)

Description

When you invoke the appclient script on Mac OS X systems with Java from Apple installed, the following stack trace is seen twice (only the first few lines are shown here):


Intentionally suppressing recursive invocation exception!
java.lang.IllegalStateException: recursive invocation
    at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394)
    at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377)
    at sun.security.jca.ProviderConfig$1.run(ProviderConfig.java:64)
...

For more information, see Issue report.

Workaround

None needed.

Despite the warning messages, the client will be launched successfully and run normally. These errors are from an issue in the Apple Java implementation.

Launching an app client can give ClassNotFound error for the client's main class (Issue 11181)

Description

A problem occurs when all of the following are true:

Attempts to launch the application client fail with the following error because one file generated on the server is placed in the wrong server directory and overwrites another generated file:


java.lang.ClassNotFoundException:(main-class-for-the-client)

For more information, see Issue report.

Workaround

Change the name of the application client so it is not myAppClient.jar. Specifically:

  1. Edit myApp/META-INF/application.xml so that the declaration of the client is <java>myClient.jar</java>. Note that you can use any name other than myAppClient.jar.

  2. Rename the directory myApp/myAppClient_jar to myApp/myClient_jar. Note that the client's subdirectory name must be the same as the application client URI in the application.xml file, with the .jar replaced with _jar.

  3. Deploy the application:


    asadmin deploy --retrieve localdir myApp
    
  4. Run the application client:


    appclient -client localdir/myAppClient.jar
    

Change to log file location requires server restart to take effect (Issue 11142)

Description

Changes to server log values on the General tab of the Logger Settings page in the Administration Console do not immediately take effect.

For more information, see Issue report.

Workaround

Restart the server. All changes to the values on this page require a server restart to take effect.

Unable to open installation log files using links on the Summary screen on Linux and Mac OS (Issue 6621)

Description

Installation log files cannot be opened by clicking the links on the Summary page that displays at the end of the installation process in the graphical installer.

For more information, see Issue report.

Workaround

Access the files manually. The names of the installation log and summary files are timestamp-install.log and timestamp-install-summary.html. On Linux and Mac systems these files are generated under the $TMP directory.

updatetool command does not work if you reinstall into the same install directory on Windows (Issue 8233)

Description

If you reinstall Enterprise Server (with Update Tool) in the same installation directory with the same defaults and invoke Update Tool using the updatetool command, you receive a message saying that Update Tool is not installed and are asked if you want to install it. This occurs on Windows systems only.

For more information, see Issue report.

Workaround

Following uninstallation, manually remove the remaining .org* directory before reinstalling.

[Update Center] Non-user directory access fails (Update Center Issue 1583)

Description

This issue occurs intermittently on Windows and Mac OS systems. pkg(5) does not work on certain systems at certain times.

For more information, see Update Center Issue report.

Workaround.

None.

Inline help and CLI man page list incorrect servlet version 2.4 in X-Powered-By (Issue 11011)

Description

The inline help and CLI man page list servlet 2.4 in the X-Powered-By field. The correct version is servlet 3.0.

For more information, see Issue report.

Workaround

None.

[Embedded] Deployment of application containing activation-1.1.jar fails when using uber-jar (Issue 11149)

Description

When using embedded with glassfish-embedded-all-3.0-b73.jar, deployment fails with the following error:


SEVERE: WEB9051: Error trying to scan the classes at
/private/var/folders/CV/CVhj8DvqEwGK5bdJKK9TaE   TI/-Tmp-
/gfembed6991712842235699248tmp/applications/xwiki-enterprise-web-2.0/
WEB-INF/lib/activation-1.1.jar for annotations in which a 
ServletContainerInitializer has expressed interest
java.util.zip.ZipException: error in opening zip file

The issue occurs because embedded uses a folder with plus signs (+), and plus signs in a path are converted into space characters " " when the path is decoded.

For more information, see Issue report.

Workaround

A system property has been added that enables you to place temporary directories. The property is glassfish.embedded.tmpdir and can be set so the temporary domain directory is not placed in the user directory.

create-service fails to create service without AS_ADMIN_USER in passwordfile on Solaris (Issue 11119)

Description

create-service fails to create service without AS_ADMIN_USER in passwordfile on Solaris.

For more information, see Issue report.

Workaround

None.

[Monitoring] Extra monitoring view for connector-connection-pools not available (Issue 11256)

Description

Enterprise Server uses a tree structure to track monitorable objects. Within that tree, the following view is not available to obtain connection pool statistics:

server.connector-service.resource-adapter-name.connection-pool-name.* or server.jms-service.connection-factories.connection-factory-name.* (for jms-ra-related pools).

For more information, see Issue report.

Workaround

Use the server.resources.* view to obtain the statistics.

For more information about Monitoring, see Chapter 8, Administering the Monitoring Service, in Sun GlassFish Enterprise Server v3 Administration Guide.

[EclipseLink] Issues with ElementCollections of embeddables (EclipseLink Issue 296606)

Description

With weaving enabled, updates on an element collection of embeddables can potentially throw a null pointer exception.

For more information, see EclipseLink Issue report.

Workaround

Two workarounds are available:

  1. Add the annotation @ChangeTracking(DEFFERED) on the embeddable and set the property eclipselink.weaving.internal to false, or

  2. Set the following properties to false in persistence XML: eclipselink.weaving.changetracking and eclipselink.weaving.internal.

Virtual server started twice (Issue 11195)

Description

After starting the domain and accessing localhost:4848, the following messages are seen in the server log:


[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0|
javax.enterprise.system.container.web.com.sun.enterprise.web|
_ThreadID=20;_ThreadName=Thread-1;|Created
virtual server server|#]

[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0|
javax.enterprise.system.container.web.com.sun.enterprise.web|
_ThreadID=20;_ThreadName=Thread-20;|Created
virtual server server|#]

These messages give the impression that the virtual server, server, was started twice. This is not the case. Virtual servers are only started once, but messages are logged multiple times.

For more information, see Issue report.

Workaround

None.

Problems debugging JPA (Issue 11274)

Description

Debugging JPA is difficult because of limited messages from the server.

For more information, see Issue report.

Workaround

Add the property org.eclipse.persistence.session.level=INFO to the logging.properties file. You can then use the Administration Console to control EclipseLink loggers.

EJB interop for remote EJBs broken when target EJB is on the same host (Issue 11152)

Description

EJB interoperability for remote EJBs is broken when the target EJB is on the same host (another Enterprise Server domain or another Enterprise Server v3 instance).

For more information, see Issue report.

Workaround

Set the following property in jvm-options:

-Dorg.glassfish.orb.iiop.orbserverid=:

Installer hangs at 41% intermittently on Windows Vista and Windows 7 (Issue 11185)

Description

The Enterprise Server graphical installer hangs at 41% during installation on Windows Vista and Windows 7. This does not happen with every installation attempt.

For more information, see Issue report.

Workaround

This issue is related to the auto-tuning feature in Windows Vista and Windows 7, which is enabled by default.

If you experience hangs when installing Enterprise Server initially, or when adding packages or applying updates, restrict or disable the auto-tuning feature.

Cannot send JMS messages between systems (Issue 11254)

Description

By default, the default host name for the JMS service on Enterprise Server is localhost. To access the JMS service from another system, however, you must change the host name. You can change it to either the actual host name or to 0.0.0.0.

For more information, see Issue report.

Workaround

To make the change, do one of the following:

  1. Use the Administration Console: Expand the Configuration, Java Message Service, and JMS Hosts nodes, select default_JMS_host, and edit the Host field, or

  2. Use an asadmin subcommand such as the following:

    asadmin set server-config.jms-service.jms-host.default_JMS_host.host="0.0.0.0", or

    asadmin set server-config.jms-service.jms-host.default_JMS_host.host="hostname"

Windows system menu is empty (Issue 11239)

Description

When Enterprise Server is installed using the graphical installer, the installation completes successfully but only the top-level GlassFish v3 entry is added in the Windows system menu, and it is empty. This issue occurs with both the localized and English installers.

For more information, see Issue report.

Workaround

None.

mysql not listed in list of supported databases in --dbvendorname in deploy command man page (Issue 11328)

Description

mysql is not listed in the list of supported databases in --dbvendorname in the deploy command man page. This is incorrect. MySQL is a supported database and should be listed.

For more information, see Issue report.

Workaround

None.

Embedded ACC overly strict on current thread context class loader (Issue 11427)

Description

The ACC expects the current thread's context class loader to be an ACCClassLoader. This is overly restrictive. Although this condition is met for appclient script and Java Web Start launches, it might not be met for the embedded case. Other functions inside the ACC require the class loader to be a URLClassLoader (or an instance of a subclass of URLClassLoader), but the loader does not need to be an ACCClassLoader.

For more information, see Issue report.

Workaround

Two workarounds are available:

  1. Set -Djava.system.class.loader=org.glassfish.appclient.client.acc.ACCClassLoader, or

  2. In your Java program, instantiate an ACCClassLoader and set it to be the current thread's context class loader using Thread.currentThread().setContextClassLoader before using the embedded ACC classes and interfaces.

EJB Timer Service config issue for MySQL (Issue 11428)

Description

Able to create and store EJB timer in MySQL as user, but when trying to configure EJB Timer Service for MySQL, get the following exception (SQLException executing statement):


"CREATE TABLE EJB__TIMER__TBL (TIMERID
VARCHAR(255) NOT NULL, BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE
VARCHAR(255), INTERVALDURATION BIGINT, OWNERID VARCHAR(255), STATE INTEGER,
LASTEXPIRATIONRAW BIGINT, PKHASHCODE INTEGER, CREATIONTIMERAW BIGINT,
CONTAINERID BIGINT, PRIMARY KEY (TIMERID))":
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in
your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT,
SCHEDULE VARCHAR(255), INTERVALDU' at line 1|#] 

For more information, see Issue report.

Workaround

Make sure that the datasource-classname specified for the timer pool represents an XA DataSource.

MySQL-specific steps:

  1. Unpack glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war.

  2. Add the following to WEB-INF/classes/__ejb_timer_mappings.xml after <persistence-unit-metadata>:

    <persistence-unit-defaults>
    <delimited-identifiers/>
    </persistence-unit-defaults>
  3. Repackage the WEB-INF/classes/__ejb_timer_mappings.xml file.

  4. (This step required only if the current installation has already used the EJB Timer Service.) Manually create the EJB__TIMER__TBL in the database using this create statement:

    CREATE TABLE `EJB__TIMER__TBL` (`TIMERID` VARCHAR(255) NOT NULL,
    `BLOB` BLOB(64000), `INITIALEXPIRATIONRAW` BIGINT, `SCHEDULE` VARCHAR(255),
    `INTERVALDURATION` BIGINT, `OWNERID` VARCHAR(255), `STATE` INTEGER,
    `LASTEXPIRATIONRAW` BIGINT, `PKHASHCODE` INTEGER, `CREATIONTIMERAW` BIGINT,
    `CONTAINERID` BIGINT, PRIMARY KEY (`TIMERID`))

deploy subcommand fails against secure server (Issue 11439)

Description

The deploy subcommand fails against a secure server unless the --secure option is used.

For more information, see Issue report.

Workaround

Use the --secure option when issuing the deploy subcommand against a secure server.

Expired certificate in Enterprise Server truststore (Issue 6852796)

Description

One of the authority certificates in the Enterprise Server truststore expired on January 7, 2010. The certificate is cacerts.jks. An error message is generated on startup indicating that the certificate has expired:


Version: V1
  Subject: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US
  Signature Algorithm: MD2withRSA, OID = 1.2.840.113549.1.1.2

  Key:  SunPKCS11-Solaris RSA public key, 1000 bits (id 17891456, session object)
  modulus: 
  public exponent: 
  Validity: [From: Tue Nov 08 19:00:00 GMT-05:00 1994,
               To: Thu Jan 07 18:59:59 GMT-05:00 2010]
  Issuer: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US
  SerialNumber: [    02ad667e 4e45fe5e 576f3c98 195eddc0]

For more information, see Issue report.

Workaround

The expired authority certificate was removed in update 18 of Java SE 6. It will also be removed from the Enterprise Server truststore in a future update.

You can ignore the error messages and use the update, or you can eliminate the error messages. To stop receiving the error messages, use keytool to remove the certificate from the Enterprise Server truststore:


=> cd domains/domainX/config
=> cp cacerts.jks cacerts.jks.save
=> keytool -delete -keystore cacerts.jks -alias verisignserverca
Enter keystore password:

To prevent the expired certificate from reappearing in subsequently created domains, the certificate should also be removed from the template truststore:


=> cd glassfish/lib/templates
=> cp cacerts.jks cacerts.jks.save
=> keytool -delete -keystore cacerts.jks -alias verisignserverca
Enter keystore password:

For more information about the keystore password, see the information about master passwords and keystores in Authentication in Sun GlassFish Enterprise Server v3 Administration Guide.