bea.com | products | dev2dev | support | askBEA
 Download Docs   Site Map   Glossary 
Search

Release Notes

 Previous Next Contents View as PDF  

Resolved Problems for Service Packs 1 - 6

The following sections describe problems resolved in previous Service Packs for WebLogic Server 7.0. Service Packs are cumulative; Service Pack 6 contains all the fixes made in earlier Service Packs released for WebLogic Server 7.0. For a description of problems resolved in the most recent Service Pack, see Resolved Problems for Service Pack 7.

 


WebLogic Server 7.0 Service Pack 6 Solutions

The following sections describe problems that were resolved in WebLogic Server 7.0 Service Pack 6:

Administration Console

Change Request Number

Description

CR097378

A NullPointerException sometimes appeared on the Administration Console while the Web Application Deployment Descriptor was being edited.

WebLogic Server was not checking for the descriptor being null, which is the case when it can not be parsed. For this reason a NullPointerException was thrown.

If the descriptor is null, the proper error action will now be called to display the correct message.

CR106965

In the Administration Console, "Monitor All Entity EJBRuntimes..." or "Monitor All Message Driven EJBRuntimes..." incorrectly contained information from multiple EJB JAR files with similar names.

Now, the Administration Console only displays MBeans associated with a selected scope.

CR132429

The Administration Console had no option for taking input from a user to remember the last entered user. By default, the last entered user was saved as a cookie which was valid for one week.

Now, the login form on the Administration Console has a checkbox called "Remember my ID on this computer". This checkbox is checked by default. When the checkbox is not checked, WebLogic Server will only remember the user ID for the current session.

CR130110

There was an upload directory problem when the complete path rather than a relative path was specified.

WebLogic Server now checks for relative and absolute path when uploading.

CR079771

WebLogic Server was sending a file link to the browser to report the results of start cluster and start/kill domain operations. That link worked only if the browser was running on the same machine as the Administration Server. This occurred on all platforms.

WebLogic Server now sends a action link which will process the file and send the output to the browser in an HTML format.

CR172233

While accessing the user/group list from the providers, the list appeared blank on the Administration Console if any of the providers was down.

Now, the Administration Console displays the user/group list for the providers that are accessible and shows an error if any of the providers is down.

CR174734

Re-creating a deleted realm was causing an InstanceAlreadyExistException.

Now, the realm is deleted completely so that the InstanceAlreadyExistException is no longer thrown when a deleted realm is re-created.

CR180635

While uploading an archive file through the Administration Console browser, the archive files were uploaded in the domain directory irrespective of the path specified.

Now, WebLogic Server uses the upload directory property while uploading files onto the server so the files are uploaded into the correct directory.

CR181865

The Administration Console was allowing the addition of members into the JMS distributed destination even if their JMS server was not targeted.

Now, a member cannot be added to the JMS distributed destination if the member's JMS server is not targeted.

CR096998

When the Administration Console is used to edit the CMP EJB deployment descriptor, WebLogic Server no longer throws a NoSuchMethodException.

CR106399

Whenever a method permission was created from the Administration Console in the examples domain and the server was restarted, WebLogic Server was throwing a page not found exception.

Adding MethodPermission.jsp for ejb20 has solved the problem.

CR188452

The Administration Console was unable to display the server log. Instead, an exception was being thrown.

Code fixes have eliminated the problem. Now, the server log can be displayed in the Administration Console.

CR081329

The Refresh function in the Administration Console has been fixed. The Refresh button no longer opens the page that was previously opened, but instead refreshes the page that is currently opened.

CR206741

WebLogic Server was making too many RMI calls to find out the deployment status of a component on a target especially if the target was a cluster or a virtual host. In addition, the component status on the target was not depicting the precise deployment status of the target.

The availability status of a component shows whether it is running on a server or not. It also shows the current availability of a component on all the servers of the targeted cluster or virtual host. The availability status is updated when the targeted servers are shut down either gracefully or forcefully.

Deployment status of a component is now shown in terms of its aggregated deployment status and availability status. The aggregated deployment status of a component could be Available or Not Available when it is deployed on a server and Available, Not Available, or Partially Available when it is deployed on a cluster or virtual host. The Partially Available deployment status implies that the component is available only on some of the servers of the cluster or the virtual host.

These changes have minimized the number of RMI calls needed to retrieve the status report for a cluster deployment and have resulted in improved performance.

CR214994

The Administration Console server monitoring versions page now displays the system property, java.vm.vendor, correctly.

CR178658

The Servlet Extension Case Sensitive attribute has been added to server and cluster configurations. In addition, the Web App Files Case Insensitive attribute has been added to security domain configuration.

These attributes specify whether file lookups for Java Server Pages (JSPs) are case sensitive on all platforms except win32; file lookups from standard win32 file systems are always case-insensitive. On case-insensitive file systems other than win32 (such as NT Samba mounts from UNIX or Mac OS that have been installed in case-insensitive mode), specify case insensitive lookups by setting these attributes to false to prevent the JSP from returning its source code. For example, if a JSP is being served from a Samba mount and you have specified case-insensitive lookups, WebLogic Server converts all file name extensions to lower case before looking up the JSP.

Possible values and usage:

    1. OS (the default value): Weblogic Server relies on the operating system for pattern matching.

    2. True: Weblogic Server enforces case-insensitivity irrespective of the operating system.

    3. False: Weblogic Server enforces case-sensitivity irrespective of the operating system.

Clusters

Change Request Number

Description

CR177776

WebLogic Server encountered distributed dead-locks in a cluster when replicated session http requests landed on a server that acts as neither primary nor secondary for the requests. If multiple such requests landed on servers in a cluster, all the threads in the default thread pool were being exhausted due to this behavior and at some point in time, there were no threads available in default thread pool to receive responses. This lead into distributed dead-lock.

WebLogic Server no longer deadlocks under these conditions.

CR206375

Load balancing http requests in a cluster sometimes caused the following incorrect error message to be reported:

Error while primary becoming secondary,[No old secondary found for roid:<roid>] or [No new primary found for roid:<roid>]

This error message indicates a problem with session stickiness configuration either in the plug-in or in the load balancer.

WebLogic Server now displays a proper message that describes the problem and suggests checking the session stickiness configuration in the load balancer and/or in the plug-in.

Connectors

Change Request Number

Description

CR184893

Classloading from within RAR is no longer slow.

Core Server

Change Request Number

Description

CR108791

When the server state was SHUTDOWN_IN_PROCESS and Runtime.getState was called WebLogic Server was returning the wrong string.

Now, WebLogic Server returns the correct string which depicts the state of the server.

If your applications were dependant on the wrong string constant that was being returned, you may need to change the string constant.

CR125000

CR129560

The cluster service was setting the real uid/gid of the process after binding to the multicast port. As a result, errors occurred when WebLogic Server attempted to switch the user after binding to the listen ports.

Now, WebLogic Server uses the postbind uid/gid during server startup except when binding to ports and only switches to the real uid/gid after listening on all ports.

CR121483

A ConcurrentModificationException was thrown when the monitoring subsystem was trying to read the values of the abbrev table and at the same time the abbrev table was being modified by the rjvm layer.

Cloning the key set before sending the data to the monitoring subsystem so that the HashMap is not modified simultaneously by two threads eliminates the ConcurrentModificationException.

CR130376

According to the documentation at "Starting and Stopping Servers" if the CLASSPATH is too long, it could be added as a single line to a file and then accessed as -classpath @filename. However, this was not working because when beasvc attempted to load the contents of CLASSPATH file, it sometimes truncated the last character. This only happened when the file did not end with a new line.

This problem has been resolved.

CR133631

Stopping a windows service configured with beasvc.exe sometimes caused a timeout when a stopclass was specified. The service was timing out because there was a race condition between the stop and main threads of beasvc.exe.

The race condition has been corrected and the windows service no longer times out.

CR135225

A deadlock was occurring between RJVM and NTSocketMuxer.

Code was added to ensure that WebLogic Server does not hold a lock on IORecord during dispatch, thus ensuring that a deadlock will not occur.

CR105444

The server would throw a FileNotFound Exception if a path for a log file was specified but the directory not exist when using the -Dweblogic.Stdout and -Dweblogic.Stderr command-line options.

A code enhancement resolves this issue by creating the directory structure specified by the command-line options when the structure does not exist.

CR099356, CR099005, CR186191

A race condition in JVMSocketManager was causing MuxableSocketDiscriminator.isMessageComplete to throw a NullPointerException which resulted in JVMSocketManager running an infinite loop.

Now, JVMSocketReader initializes the necessary information in static initializer so that initialization happens only once and there is no more infinite loop.

CR130409

When setting the maximum length of an execute queue with the -Dweblogic.kernel.allowQueueThrottling flag to throttle "slow moving resource intensive" requests on a custom queue, clients did not receive a 503 response and therefore waited for the timeout.

This problem was resolved by a code fix to check for the dispatch return value on the caller and use the sendError() API to return the 503 response.

CR174955, CR105257

A call to WLECService.getConnectionPoolCount resulted in a NullPointerException even if the call was made before the IIOP Connection Pool was initialized.

Now, if the IIOPConnection Pool is null, zero is returned. As a result, the NullPointerException is no longer thrown when a call is made to WLECService.getConnectionPoolCount.

CR180426

When WebLogic Server was running in a cluster, a warning message appeared when the DNS name of the cluster was not set. This warning message was degrading the cluster performance.

Now, the cluster address is always read from the clusterMBean if it is not available via the networkchannel. As a result, the warning message no longer causes performance problems for the cluster.

CR180532

Deadlock sometimes occurred when the domain log and server logs were rotated at the same time.

Now, WebLogic Server no longer logs messages while rotating the logs. As a result, deadlock no longer occurs during log rotation.

CR173958, CR185090

Interoperability between 6.1 SP4 and 7.0 SP5 domains using t3 failed when the protocol was changed from "secure" to "non-secure" between the front-end and back-end. The front-end QOS was being propagated to the back-end for the authentication call and it was failing.

The problem was resolved by using "anonymous" when doing the bootstrap authenticate call.

CR175607

Installing WebLogic Server as a Windows service immediately after uninstalling it sometimes created wrong registry keys, which could lead to startup problems.

A code fix ensure that the registry keys are flushed and properly closed.

CR179262

During startup, WebLogic Server was experiencing a deadlock between weblogic.jms.common.DistributedDestinationManager and weblogic.cluster.MemberManager.

Synchronization has been reduced in MemberManager and now there is no longer a deadlock.

CR182838

LocalServerRef did not implement the hashCode method which caused multiple entity beans with different PKs to have the same stub.

LocalServerRef now correctly implements the hashCode method.

CR185841

When starting up many Managed Servers concurrently, the Administration Server CPU usage was high.

WebLogic Server now makes fewer remote calls to ServerMbean.getName(). As a result, Managed Server startup time in a large cluser is faster and the CPU usage on the Administration Server is lower.

CR172366

Messages printed by beasvc.exe to the event log were not readable in Japanese locale.

A code fix ensures that English messages are printed for all non-English locales.

CR181986

WebLogic Server running as a service sometimes ran out of memory if it was using a large number of threads.

Reducing the reserve stack size used by beasvc.exe and beasvc64.exe from 1mb to 256kb eliminated the memory problem.

CR182684

Every time the beasvc service handler was called, the beasvc log added a line indicating that it was called.

For example:

Tue Apr 27 11:52:17 2004] [I] [service_ctrl] 4

This caused the log to fill up when there was no real activity on the server.

The debug statement was removed, eliminating the log problem.

CR188371

When an application cached a stateless session bean remote stub, and all the servers in the cluster were restarted, the stub was unable to refresh its lists of server nodes where the remote object was available and failover did not succeed. This was happening because the stub did not have the information needed to re-establish the initial context with the cluster nodes, hence the remote method invocation failed.

WebLogic Server code was not propagating the thread environment for the stateless session bean stubs in WebLogic Server 6.1 versions and it is required in WebLogic Server 7.0 and higher versions for unmarshalling to set the environment so failover works.

The runtime descriptors for the clusterable stateless session beans now have the propagate-environment attribute set to true by default.

The descriptor is now read and the propagateEnvironment is set so the environment is passed on during unmarshalling. This will allow the failover logic to reconnect to the cluster nodes to retrieve the new list of server nodes where the remote object is available and allow for proper failover.

CR190417

When a request landed on a server that was neither primary nor secondary, it got the session from the existing secondary by looking it up on the secondary server with the host port information from the session id.After it successfully got the session from existing secondary it removed the existing session and tried to create a new session.

When two such requests occurred at the same time a distributed deadlock could occur since these requests landed on the 'Replication' thread queue and the 'Replication' thread queue had only two threads and there was no other thread available for reading the response.

Code was added to WebLogic Server which fixed the problem so that it will not deadlock.

CR190507

Fixed a problem with oneway calls for ReplicationManager.

CR203523

The following log message has been reinstated to appear as it had in previous WebLogic Server releases.

<Warning> <WebLogicServer> <000333> <Queue usage is greater than QueueLengthThresholdPercent "3%" of the maximum queue size. We'll try to allocate ThreadsIncrease "5" thread(s) to help.>

CR206459

The maximum limit on the number of threads that could be created on the client side was fixed at 50.

Now, the maximum limit on the number of threads that can be created on the client side is set to 65536.

CR183620

The startup script for the Managed Server, startManagedWebLogic.sh or startManagedWebLogic.cmd, that was generated from the domain configuration wizard had the following incorrect line:

cd @USERDOMAIN_HOME

This incorrect line caused the following errors:

C:\bea70sp5\user_projects\mydomain>echo off

The system cannot find the path specified.

To fix the problem, the domain configuration wizard now does string substitution.

Deployment

Change Request Number

Description

CR179645

Now, WebLogic Server unpacks large JAR files much more quickly.

CR183537, CR187458

If no target was specified during the redeployment of an application, weblogic.Deployer was adding the Administration Server as the default target.

Now, if no target is specified, the deployed application is correctly redeployed to all of the current targets. A new application is deployed to the Administration Server by default.

CR192196

A WebLogic Server 8.1 client calling DeployerRuntime.getDeployerRuntime(MBeanHome) was getting an InstanceNotFoundException if invoked against a WebLogic 7.0 Administration Server.

A change was made to the implementation of DeployerRuntime.getDeployerRuntime(MBeanHome). As a result, a WebLogic Server 8.1 client is now able to fetch the DeployerRuntime MBean from the WebLogic 7.0 Administration Server and vice versa without getting any InstanceNotFoundException.

CR124450

If the server is running in development mode and an attempt is made to delete an EAR file deployed on the server using the Microsoft Windows Explorer from within the applications directory, the following error no longer occurs:

Cannot delete abc.ear:there has been a sharing violation, The source or destination file may be in use.

EJB

Change Request Number

Description

CR055396

When a EJB QL syntax error occurred, WebLogic Server generated an error message with an incorrect xml file reference.

WebLogic Server now generates the message as follows if there are syntax errors in EJB QL.

CR060229

The Administration Console was not exposing the Transactions Committed Total Count, the Transactions Rolled Back Total Count or the Transactions Timed Out Total Count for Stateful and Entity EJBs.

The Administration Console now allows monitoring of these items.

CR087261

The EJBDeployer was writing an incorrect deployment message to the log for Message Driven Beans.

The correct message is now being logged when a Message Driven Bean is deployed.

CR127369

An AssertionError was sometimes thrown when more than one bean was based on the same Java class.

This error occurred when the following conditions were satisfied:

    1. a bean A had a many-to-one relationship to a bean X (unidirectional relationship)

    2. a bean B had a many-to-one relationship to a bean X (unidirectional relationship)

    3. beans A and B were two different deployments based on the same java class.

While processing the relationships of beans, WebLogic Server holds the list of cmr-field names, and if the cmr-field name has not been declared, WebLogic Server creates it based on the bean class name. In the above case, while processing relationships of bean X, the cmr-field names of the relation to bean A and the one to bean B will be created. But these class names are the same, so the created cmr-field names are the same. This causes the AssertionError.

Code has been added to make the cmr-field name unique, eliminating the possibility of conflicting names.

CR108169

When an EJB deployment descriptor was edited using the Administration Console, an incorrect method name was introduced.

The correct method name has now been implemented.

CR135410

When the bean is looked up and a business method is called for the first time, the call to EntityContext.getCallerPrincipal() from ejbStore returns the user as "anonymous". After this, when ejbStore is invoked again, it returns the correct username. This problem only occurs with ejbStore and no other method.

This problem has been resolved.

CR187121

A high value for idleTimeoutSecs, for instance, 60000000, in the Deployment Descriptor when multiplied by 1000 to convert it into msecs was overflowing into a negative value. This caused the trigger that cleans the passivated beans from the disk to constantly fire, causing high CPU usage.

The variables within the EJB container which held the timeout values in milliseconds, such as idleTimeoutMS, sessionTimeoutMS, and readTimeoutMS, have been changed from the int type to long. This prevents any numeric overflow.

CR189847

Stateful session bean (SFSB) InMemory replication was causing an apparent memory leak.

Although no memory leak was occurring, the heap memory was not being used efficiently. Now, during SFSB InMemory replication, the heap memory is being used more efficiently.

CR196593

Servers were hanging during stateful session bean (SFSB) replication due to lock contention in the NRUCache.

The lock contention in the NRUCache has been reduced to prevent the servers from hanging during SFSB replication.

CR197817

When WebLogic Server executed a finder method on an entity bean, a NullPointerException was being thrown.

To eliminate the NullPointerException, the generated code now expects that the bean could be null and the bean is now handled appropriately.

CR132510

When enabling the relationship caching on an entity bean that is using optimistic concurrency and has cache-between-transaction set to true, WebLogic Server no longer throws an IllegalStateException.

CR205974

When a collection valued CMR field is accessed in a transaction other than the one in which it is created, WebLogic Server no longer throws an IllegalStateException.

As a result, WebLogic Server delivers the correct result set from the finder query regardless of whether caching is turned on or off.

CR203644

Replicated Stateful Session Beans in a cluster with InMemory replicated session no longer throw a NoSuchObjectException or a LeasedRemoteRef error after instances have been passivated or after the cluster instance has been shut down.

Installation

Change Request Number

Description

CR121040

It was not possible to change the password of a WebLogic Server Windows Service without having to uninstall and re-install the service.

WebLogic Server now has an edit option so that parameters can be edited without having to re-install the service.

Individual or multiple options can be edited simultaneously as follows:

beasvc -edit -svcname:wls_service -javahome:"C:\java\java142_05" -password:"blah" (this command alters the value of "javahome" and "password" parameters)

The options will take effect when the service is restarted.

Internationalization

Change Request Number

Description

CR079432

MessageLocalizer was not setting the l10n_package attribute in localized catalog files using the l10ngen utility.

MessageLocalizer now correctly sets the l10n_package attribute in a localized catalog file.

J2EE

Change Request Number

Description

CR132360

The weblogic.j2eeclient.Main did not work in webstart. The client jar file is an argument loaded by the webstart client and made available in the classpath. But the file was not available in the current directory resulting in an error.

A system property (weblogic.j2ee.client.isWebStart) was added to WebLogic Server to load the client jar file from the system classpath. weblogic.j2eeclient.Main now works in webstart.

CR103309

Please review the security advisory information at http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA04-70.00.jsp.

CR186016

While redeploying an application, J2EEApplicationContainer is now redeploying the internal modules such as JDBCModule as it did prior to WebLogic Server 7.0 Service Pack 5.

CR097079

When an application is removed from the Managed Server, the auxiliary jars are now also removed from the staging directory of the server.

CR103506

When deploying an exploded .ear directory that contains a directory whose name contains a period, ".", a NullPointerException is no longer being thrown.

JCOM

Change Request Number

Description

CR185934

COM to Java clients failed when the Microsoft Security Bulletin MS04-011 was applied.

This has now been resolved.

CR199844

When an exception occurred, COM sockets were leaking.

Now, COM sockets are properly closed when an exception occurs.

JDBC

Change Request Number

Description

CR136746

Explicit naming of JDBC driver used in the class VendorId were not possible.

The problem has now been resolved.

CR127720

New versions of JDBC drivers track the transactional state of connections. If a local transaction was active on a connection, XA operations could not be performed on it, resulting in an XAER_PROTO or XAER_RMERR when an xa_start() was called on the connection. As a result, applications had to go through the tedious process of narrowing down where in their code they had started but not ended a local transaction.

This problem has been resolved by a code change in the recovery method that prevents special XA connections from being released to the pool twice.

CR174126

Using multiple different prepared statements in a single transaction invoked a bug in the XA statement cache, which lost the handle to unclosed JDBC statements. This quickly caused all the available cursors in Oracle to be consumed and leaked.

A fix was made to the underlying collection object being used to implement the XA statement cache.

CR177220

In a multi-server domain, a client involved in a global transaction got the following exception:

weblogic.transaction.RollbackException: delist() failed on resource jdbcXAPool

The code was changed so that if the data source is null, then the resource manager is not set. When the data source is initialized, the resource manager is wrapped by VendorXAResource.

CR180097

The JDBC connection pool's "CountOfTestFailuresTillFlush" property neglected to clear statement caches.

The problem was resolved with a code fix.

For detailed information about using the "flush pool" feature, see "JDBC Connection Pool Testing Enhancements" in Programming WebLogic JDBC.

CR184819

WebLogic Server multipools were not failing over when multiple instances of RAC were configured and the first RAC instance was stopped.

Multipool now fails over correctly.

CR182410

Under high load conditions, WebLogic Server slowed significantly.

Removing synchronization in the weblogic.jdbc.common.internal.MultiPool.searchLoadBalance() method eliminated the slowdown under high load conditions.

CR189978

Misconfiguration of the pool or an unresponsive database could have resulted in the creation of a pool that was not activated. If the pool was never activated, WebLogic Server threw a ResourceException. The JDBC MultiPool would not fail over to the next active pool when this exception was thrown.

Now, WebLogic Server throws a ConnectDisabledException with a message indicating that the pool was never activated. The JDBC MultiPool detects and handles this exception and does a retry on a different pool if one is available. As a result, the JDBC MultiPool now fails over to an active pool if any of the pools in the list had never been activated.

CR187604

A getMoreResults and a getResultSet call on a JTS Statement wrapper no longer returns the same and already-closed result set.

CR196738

The MSSQLServer4 driver's Statement.cancel() method was corrupting the JDBC connection. JDBC statements were not being closed within a transaction after the connection was closed.

The MSSQLServer4 driver's Statement.cancel() method was changed so that it is now a no-op and therefore no longer corrupts the connection. This change has no effect on rolling back transactions.

CR197163

The JDBC connection pool's testing of connections was consuming a lot of database resources because each test was creating a new plain statement which requires the DBMS to parse and plan the test SQL every time.

Now, pools will reuse a single prepared statement for a connection's test which results in improved performance. However, if any application DBMS tables or procedures are referred to in the test SQL and if they structurally change at runtime, such as an index being added, this may invalidate the test PreparedStatement's query plan. As a result, the subsequent test will fail and the connection and test statement will be replaced. The test SQL suggested by the Administration Console will typically not include any structurally changing table, so the problem of needlessly recycling a connection is now minimized.

CR203460

When a pool connection was made by the XAConnectionFactory, its seconds-to-trust value was not set, so it remained the default.

Now, the sectonds-to-trust value is set.

CR193357

JDBC refresh was miscounting the number of unreserved connections.

JDBC refresh now correctly counts the unreserved connections and, therefore, is no longer doing any unnecessary work.

CR087241

A JDBC application using XA calls and any Oracle driver, was getting an ORA ORA-01002: fetch out of sequence error while fetching rows if a transaction was suspended and resumed.

The AddOracleFlagToXAResource flag has been added to fix this problem when the XA calls use the Oracle 10g thin driver. To avoid getting the ORA ORA-01002: fetch out of sequence error while using XA calls, you must use the Oracle 10g thin driver and turn on the JDBCConnectionPool flag.

jDriver

Change Request Number

Description

CR142730, CR190124, CR190125

After a long database outage, a JDBC connection pool that used the XA jDriver for Oracle with TestConnectionsOnReserve="true" could not recover and recreate connections to the database. The following error messages were thrown:

<Warning> <JDBC> <001096> <Refreshing this bad pool connection failed weblogic.common.ResourceException: java.sql.SQLException: open failed for XAResource 'oracleXAPool' with error XAER_RMERR: A resource manager error has occurred in the transaction branch.

and

<Warning> <JDBC> <001096> <Refreshing this bad pool connection failed weblogic.common.ResourceException: java.sql.SQLException: LDA pool exhausted - make sure you call Connection.close()

The problem was that during the outage, the JDBC connection pool attempted to recreate connections, but on failure, those connection attempts were not cleaned up and were depleting Oracle client resources (in the LDA).

The jDriver now cleans up connection creation attempts that fail.

CR136168

WebLogic jDriver may cause the server to crash with Oracle error message ORA-02392 when using the long raw type under heavy loads.

A code fix was implemented to resolve this issue.

CR172462

The WebLogic Server jDriver was not functioning properly with Oracle 9.2 when using the AL32UTF8 character set.

This problem was resolved with a code fix.

JMS

Change Request Number

Description

CR099554, CR195519

Under certain circumstances when a server with JMS messages in a pending state was shut down or crashed, pending messages were not recovered when the server was restarted.

Pending messages are now recovered upon restarting the server.

CR135578

The bytes pending counter for non-durable topics was not getting updated correctly when the consumer exited with outstanding non-durable topic messages still pending Redelivery delay on the topic.

Now, the bytes pending counters for JMS statistics will be appropriately adjusted for non-durable topic messages when the consumer exits and Redelivery parameters have been configured. There is no redelivery attempt on unacknowledged non-durable topic messages when the consumer goes away.

CR134155

JMS messages from topic sessions caused a memory leak when the receiver was created using a transacted session, used AUTO-ACKNOWLEDGE mode, and the message was rolled back.

A code fix resolved this issue.

CR178775

When a JMS client repeatedly opened and closed JMS connections against WebLogic Server, JMSConnection and related objects such as DispatcherWrapper were not being released in both the client and the server side. This caused an OutOfMemoryError which occurred when the client retained one open JMS connection while opening and closing other JMS connections.

A change in the code has fixed the problem.

CR179737

A race condition sometimes prevented JMS from detecting and cleaning up lost connections.

The reconnect logic was tightened to prevent this type of race condition from occurring.

CR173565

JMS messages were delivered twice when an XA transaction failed.

A code fix was made to handle failed transactions, and to log an appropriate error message to notify the user that there is a transaction in an ambiguous state.

Prior to this change, any message involved in a transaction that was in an ambiguous state would still be rolled back and redelivered because the message was in memory. However, the record in the store (if there was one) was not properly updated because the store's handle for that record was invalid, leaving the record (if there was one) in the store. Therefore, when the JMS server was rebooted the message was redelivered, resulting in duplicate message.

Now any message involved in a transaction that is in an ambiguous state will require a JMS server restart before it can be recovered. Any attempts to recover the message without JMS server restart will result in an RMERR.

CR183572

Because the JMS IOThreadPool name was incorrect, all JMS stores on a WebLogic Server were sharing the same two threads. As a result, performance was potentially being degraded when more than two JMS stores were running on the same WebLogic Server.

The JMS IOThreadPool name is now correct which eliminates the potential performance degradation.

CR178405

During a scan for expired messages, a java.util.ConcurrentModificationException was thrown.

The problem was resolved with a code fix.

CR182338

A receiver stops processing messages when a RedeliveryLimit is configured and the number of times the RedeliveryLimit is reached is greater than the MessagesMaximum setting on the ConnectionFactory.

Example: RedeliveryLimit=0, MessagesMaximum=10. Receiver receives a message and calls sesssion.recover() 10 times. Receiver will stop processing messages and the console will show 10 messages pending.

Code was added to adjust the window counter when a message is removed from the queue because the RedeliveryLimit had been reached.

CR188040

WebLogic JMS was not receiving notification when ServerDebugMBean() JMS attributes were changed.

The ServerDebugMBean() can now be used to dynamically enable and disable "DebugJMS" ServerDebugMBean attributes. This allows customers to dynamically enabled or disable JMS Debugging flags.

CR187945

JMS DistributedDestination load balancer was not recognizing pre-existing consumer(s) when a member was added dynamically.

WebLogic Server now checks to see if a member has any consumers when a member is added to a distributed destination so that the load balancer has the information it needs to load balance correctly.

CR190438

A Java-level deadlock was found between objects weblogic.jms.backend.BEQueue and weblogic.jms.backend.BEConsummer.

This problem has been resolved by updating the lock hierarchy to make sure that the destination has been locked down first.

CR197857

JMS was not sustaining the minimum flow rate. The actual minimum flow rate was approximately double the configured value. When using the default flow control settings on a Connection Factory, FlowMinimum=50, JMS was sustaining a flow minimum of approximately 100 messages per second rather than 50 messages per second.

Now, once a JMS destination exceeds its specified bytes or messages threshold and flow control is started for the producer, flow control throttles back until it reaches FlowMinimum (default 50) and it should maintain that minimum flow rate as long as thresholds are exceeded.

This change causes a greater slow down from flow control than previously seen because JMS is now correctly sustaining the minimum flow rate.

To maintain previous flow control behavior (behavior prior to the release of 8.1 sp4), double any FlowMinimum configurations and add a FlowMinimum=100 on ConnectionFactories that were previously assuming default values.

CR187610

Bridge was not using Messaging Bridge Thread Pool for bridge dispatch requests.

Now, Bridge uses the Messaging Bridge Thread Pool if one has been configured. If there are not enough available threads configured in the Messaging Bridge Thread Pool, then the bridge will use the default execute thread pool.

Bridge also logs a warning message if the configured Messaging Bridge Thread Pool size is insufficient and then attempts to obtain a thread from the default execute pool instead.

JNDI

Change Request Number

Description

CR197207

The Java client was hanging if the JNDI lookup was performed from a static block during the response from an EJB call.

To fix the problem, a new system property (-Dweblogic.rjvm.t3.dispatchOnCompleteMessage) has been added. This property needs to be enabled on the client side. When this property is enabled, the t3 request is processed on a thread other than the socket reader thread.

JSP

Change Request Number

Description

CR087857

When the character encoding was set by JSP pages or servlets, the ServletOutputStream.write(int) method, which takes int type as its argument, received the data encoded using the specified charset encoder.

WebLogic Server no longer encodes the binary data when ServletOutputStream.write(int) is called.

CR101992

A web application that had a local EJBObject reference in its session, sometimes got an javax.ejb.EJBException after it was redeployed.

Code was added to catch the exception and log a message. An error message is now logged to indicate serialization failure and the getAttribute() of HttpSession, ServletRequest or ServletContext returns null under these circumstances.

CR174837

WebLogic Server was not allowing custom PageContext implementations.

The unnecessary cast to weblogic.servlet.jsp.PageContextImpl in the generated JSP has been removed. As a result, custom PageContext implementations are now usable.

CR172380, CR198902

A struts-based application failed to pre-compile an EAR file, and throwing the following exception:

<Error> <Deployer> <149205> <The Slave Deployer failed to initialize the application dos due to error weblogic.management.ManagementException: 149233 - with nested exception: [java.lang.ExceptionInInitializerError]. java.lang.ExceptionInInitializerError: java.lang.NullPointerException

A code change resolved the problem by setting the thread class loader before precompiling all the JSPs to the ServletClassLoader() method. This ensures that the same classloader gets used for loading the struts classes and loading any other class that the struts library tries to load afterwards.

CR085091

There was a problem that was preventing serving custom error pages, if the request was a conditional GET (Is-Modified-Since header set) for a protected resource.

The logic was fixed to serve the custom error page if one is defined.

CR180425

WebLogic Server was sending wlsproxy specific headers even when the request did not originate with a proxy.

Code was added to check if the request is coming from a proxy and send the appropriate header.

JTA

Change Request Number

Description

CR130073

When an application issued a number of rollbacks from Tuxedo 7.1 through WTC to WebLogic Server, some Oracle XA connections were leaked and not returned to the pool. XA Debug showed that XA End was not called so the connection was not cleaned up.

WebLogic Server now calls XA End, allowing the connections to be returned to the pool and eliminating the out of memory error.

CR125476

When a transaction was in the prepare phase and an XAER_RMERR or an XAER_RMFAIL exception was thrown, the transaction remained pending instead of being rolled back.

Now, under these conditions, the transaction is rolled back.

CR184941

After a manual JTA migration to back up the server, attempts to boot the crashed WebLogic Server were not successful.

Now, after a manual JTA migration to back up the server, if the crashed WebLogic Server is restarted, it boots successfully.

CR202386

Transaction Manager was failing to invoke xa_start() on an object associated with a new resource manager.

To fix this problem, the default registration has been standardized. If the application does not call registerResosource(), the resource is registered with the Transaction Manager as a standard resource.

CR188558

When the WebLogic Server was shut down before the timer thread went off, some resources were not being checkpointed to the TLOG. When the WebLogic Server was brought back up, recovery on those resources would not run and any pending transactions would be left pending.

Now, when the transaction enlists with a resource, if the resource is coordinated locally and if the resource needs to be checkpointed, it is flagged so that at prepare time, if the transaction is two-phase, the resource gets checkpointed to the TLOG.

CR173464

When getting the cached coordinator, the thread no longer goes into an early notification state which was causing the server to hang.

CR211194

Calling the XA call sequence, XA.end (TMSUSPEND), followed by XA.end (TMFAIL), followed by an XA.rollback in the case of an MQSeries resource prevents memory leaks in MQSeries.

JVM

Change Request Number

Description

CR132228, CR188670

Harmless IOExceptions were not being suppressed on Japanese locales.

WebLogic Server now sets the locale to C by default when enabling nativeIO. Customers who do not want to set the locale to C can use the system property

-Dweblogic.nativeIO.useDefaultLocale=true

On non-english locales, the harmless exceptions are now suppressed.

Node Manager

Change Request Number

Description

CR135917

The NodeManager native code was sometimes responsible for a segmentation violation if fdopen on stderr failed. This problem has been fixed.

CR076968

NodeManager has been updated to consistently send the process termination signal as SIGKILL instead of SIGTERM when the offline method is invoked.

CR128517

Using the Administration Console, if you configure a machine, but do not configure the NodeManager, and then you inquire about the state of the server, the NodeManager is contacted by default.

If you do not need the NodeManager, set the ListenPort to 0 in the machine configuration. This tells the server that the NodeManager is not configured and it will not try contacting the NodeManager.

Operations, Administration, and Management

Change Request Number

Description

CR132947

When the Administration Server was shut down after the Managed Server in the same domain was shut down, the Administration Server was always throwing a java.rmi.ConnectException.

This problem has been fixed.

CR187170

When the attributes of an array type changed (meaning certain elements of the array were added or deleted or both), AttributeAdd/Remove notifications were not being sent out. Thus certain deployments were not being carried out properly.

The WebLogic Server now sends AttributeAdd/Remove notifications, in addition to the AttributeChange notification, when an array type attribute values change.

CR108496

When editing an EJB deployment descriptor from the console, the <global/> tag was being changed to <global>true</global> in the deployed EJB jar file.

An empty tag for getGlobalRole method was added so that validation does not fail after persistence.

CR126191

The DESTROY_POOL command used with the weblogic.Admin tool merely disconnected all the users and suspended the pool. It did not actually delete the pool from the domain configuration as it should.

DESTROY_POOL now deletes the pool configuration. Use DISABLE_POOL or SUSPEND to suspend the pool.

CR134167

EXISTS_POOL did not work as expected. It was looking for runtime mbeans which may or may not exist even if the pool exists. DELETE_POOL, an undocumented command, was the internal implementation to delete a connection pool; however, this feature was documented as DESTROY_POOL externally.

The Help menu also displayed some undocumented commands.

EXISTS_POOL command implementation now looks for configuration mbeans to check whether the pool exists.

DESTROY_POOL command now uses the underlying DELETE_POOL implementation.

All the undocumented commands that appeared in the weblogic.Admin help menu are now disabled. Commands include TEST_POOL, REMOVE_POOL, SUSPEND_POOL, SHUTDOWN_POOL, RESUME_POOL, DELETE_POOL. These will not be supported going forward and will not work in 7.0 SP5.

The Help menu no longer lists these commands.

CR171906, CR179030, CR208205

The Administration Server was not starting when the Managed Servers were running with an operations user.

Now, the operator role allows the user to reboot the Administration Server and recontact the Managed Servers. As a result, the Administration Server can now start when the Managed Servers are running with an operations user.

CR179524, CR203851, CR213673

When the server logs were opened in editors/viewers, while the server was still running, the log froze because the server could not re-open the log file for logging after or during the log rotation.

Retry logic has been implemented in the logger so that WebLogic Server now attempts to rotate to an alternate log file when the first attempt fails and continues to log even if all attempts fail.

CR177510 CR135356

Adding or redeploying a module that was part of a large EAR file (600MB) took a very long time.

A code change to the WebApp module improved performance:

  • The WebApp module now considers the update of a module when the delta is for changing the whole module.

  • To reduce the startup time for large application deployment, deployment was modified to persist the staged targets attribute for configured applications.

Remote call traffic between the Administration Server and a Managed Server was reduced during application deployment.

CR182686

A ConcurrentModificationException was sometimes thrown while setting System Properties in a startup class or servlet.

WebLogic Server has been modified to synchronize the properties and no longer throws the ConcurrentModificationException when setting System properties.

CR184787

The Administration Console did not display the "replicated_if_clustered" value for PersistentStoreType on the session parameters page of the Deployment Descriptor page. As a result, when the descriptor was persisted, it put in a different value into the descriptor.

The Administration Console now displays the value and it is correctly added to the descriptor.

CR187170

When the attributes of an array type changed (meaning certain elements of the array were added or deleted or both), AttributeAdd/Remove notifications were not being sent out. Thus certain deployments were not being carried out properly.

The WebLogic Server now sends AttributeAdd/Remove notifications, in addition to the AttributeChange notification, when an array type attribute values change.

CR190237

The WebLogic Server MBeanHome method getAllMBeans() threw an exception when running in a WebLogic Portal environment.

WebLogic Server MBeanHome Helper needed additional knowledge of WebLogic Portal mbean class locations and a correction to existing logic.

The ClassNotFound exception is no longer thrown in the WebLogic Portal environment.

CR188701

Restarting the Managed Servers when the Administration Server was down caused deployment to fail. When the server was set to stage applications, but the application being deployed did not have its staging mode set, the wrong staging mode was used.

Now, applications that do not have a staging mode set, but are deployed on a server with the staging mode set, are correctly deployed in the right staging mode.

CR190822

JDBC connection pool cloning was not working.

Now, JDBC connection pool cloning works even if the server is targeted.

CR200310

The application manager was being started twice when run in MSI mode.

Now the application manager is only started once when run in MSI mode.

CR135521

When creating or deleting a Commo MBean, WebLogic Server no longer throws an IllegalArgumentException.

Now, WebLogic Server throws an InstanceNotFoundException if the type is null. A client such as wlconfig catches this exception and uses JMX MBean Home to get the attribute value on the MBean.

CR182072

Now, the ConfigurationVersion attribute in the config.xml file changes value after the service pack is upgraded.

During every server bootup, the attribute is now set to be the same as the Administration Server version.

CR100218

Because the value for ExecuteQueueMBean.setThreadPriority() is non-configurable by a user, ExecuteQueueMBean.setThreadPriority() has been excluded from the public javadocs.

CR109591

The Administration Console was not locating a log called 'myserver_%yyyy%_%MM%_%dd%_%hh%_%mm%.log.

To fix this problem, WebLogic Server now attempts to locate the filename in the following format:

myserver_yyyy_MM_dd_hh_mm.log

instead of the following format:

myserver_%yyyy%_%MM%_%dd%_%hh%_%mm%.log

If still unable to locate the filename using the myserver_yyyy_MM_dd_hh_mm.log format, WebLogic Server throws a FileNotFoundException.

CR124169

WebLogic Server no longer throws an Assertion error when shutting down or undeploying the MessagingBridge using JMX.

CR202449

When a server instance was created on the Administration Server, its default queue was not getting initialized until the Administration Server was reinitialized.

Now, the default queue is initialized when the server instance is created or cloned.

CR208697

WebLogic Server decremented the notificationID variable when removeNotification() was called to remove some middle elements. WebLogic Server was then throwing an InstanceNotFoundException if access to the last element of

allNotification[] was attempted.

As a result, it was not possible to access the last element because the value of the variable, notificationID, was less than the size of allNotification[].

Code changes have fixed the problem so that now when removeNotification() is called, an ArrayOutOfBoundException is not thrown, and an InstanceNotFoundException is thrown only if the notification instance is not available. The InstanceNotFoundException is no longer thrown if access to the last element of allNotification[] is attempted.

CR211194

Calling the XA call sequence XA.end (TMSUSPEND) followed by XA.rollback no longer causes a memory leak in MQSeries.

CR211815

The locking sequence used during the process of unregistering an MBean has been corrected to avoid deadlock.

Plug-ins

Change Request Number

Description

CR095984

When the file size exceeded 30KB, a DNS error message of IE 6.0 was received instead of a 413 message when using the NSAPI plug-in.

The behavior of MaxPostSize configuration is now the same with or without a plug-in.

CR100070

It was not easy to maintain the WLLogFile for each virtual host in the Apache-WLS plug-in because there was only one global debug flag to enable or disable debugging for all the requests handled by the plugin.

Now, it is possible to specify the debugging option at the top most level and overwrite it within each virtual host and/or location tag.

CR136968

Weblogic Server was not accepting more than one header when the response.addHeader method was used.

The plug-in now allows WWW-Authenticate to have multiple values.

CR171978

When the FilterPriorityLevel was set in the iisforward.ini file, the forwarding path was broken.

A code fix was implemented to ensure that when a virtual host was not defined in the iisforward.ini file, the iisproxy.ini file from the same location as where the iisforward.dll file was loaded is used.

CR172072

Provided an enhancement to the WLExcludePathOrMimeType parameter allowing it to be used at the Location tag level.

WLExcludePathOrMimeType parameter can now be defined locally at the Location tag level as wells as globally. When the property is defined locally, it does not override the global property but defines a union of the two parameters.

CR173581, CR173878

The plug-in was logging a confusing "error page is unavailable" log message to the apache error.log, even when the client had closed the connection.

This was resolved by a code change that commented out the erroneous log message.

CR174431

The Iplanet plug-in now gracefully handles an EINTR OS error.

CR175672

The Apache server is hanging when the WebLogic plug-in tries to open the wlproxy log file, even though Debug is OFF.

The code has been fixed so that the log file is not set if debugging is turned off.

CR175989

The Apache server generated core dumps when using the worker (multi-threaded) option instead of the prefork (only multi-process) option.

This was resolved by fixing the Locking and Unlocking logic.

CR177707

When using the release 7.0 SP02 plug-in with client certificates, WebLogic Server worked fine. However, after an upgrade to release 7.0 SP05, the server log reported the following error:

Failed to parse the client certificate in header: WL-Proxy-Client-Cert. Ignoring this certificate. java.security.cert.CertificateException: Could not parse certificate: java.io.EOFException

The error occurred because the 7.0 SP06 plug-in truncated the WL-Proxy-Client-Cert header when it sent it to the server instance.

The code was changed so that WL-Proxy-Client-Cert is lazily added to the request sent to WebLogic Server.

CR179537

The IIS proxy plug-in caused heap corruption on the Microsoft Windows platform.

The problem was resolved with an internal code fix.

CR180236

The previous 7.0 release plug-in with client certificates reported the following error:

Failed to parse the client certificate in header: WL-Proxy-Client-Cert. Ignoring this certificate. java.security.cert.CertificateException: Could not parse certificate: java.io.EOFException.

The error occurred because the plug-in truncated the WL-Proxy-Client-Cert header when sending it to the WebLogic Server instance.

The problem was resolved with a code fix.

CR178792

HTTP requests can contain either one of the following headers: Content-Length or Transfer-Encoding

Requests with a Transfer-Encoding header set to "chunked" were failing with an IO error.

Code was added to support requests using the Transfer-Encoding header set to "chunked".

CR180560

The plug-in was not printing the socket information (localhost:localport remotehost:remoteport) to the log file when making a new connection to WebLogic Server.

Log messages with the local hostname and local port number are now added when the plug-in makes a new connection to WebLogic Server.

CR180417

If a cookie was part of the POST data then plugin would corrupt the post data while extracting the cookie.

Code was added to fix the cookie extraction from Post Data.

CR180724

The initial cookie was created through web server one and sent to cluster one. When ithit the application again it went through web server two and instead of being directed to cluster 1 it went to cluster 2 and created a new session.

The WLCrossOverEnabled functionality now works correctly in WebLogic Server.

CR182434

Headings passed to rq->srvhdrs were not entirely in lower-case instead of mixed case.

Content-type, content-length and transfer-encoding headers are now passed to NSAPI entirely in lower case.

CR182971

ServerList was deleted after every DNSRefreshInterval which resulted in a core dump.

WebLogic Server now does a dns lookup of all the servers in the list and updates the ServerInfo structure if any server has changed from the last time it was checked.

CR183188

The ISAPI plug-in was unable to handle requests with the Transfer-Encoding header set to chunked.

Functionality was added to enable ISAPI to handle such requests.

CR183311

When Apache was stopped while using a single-thread multi-process module, it would try to stop the timer thread first. This timer thread never existed, thus a core dump occurred.

WebLogic Server no longer creates timer threads when Apache is being used with a single-thread multi-process module.

CR183390

WebLogic Server was throwing an exception from inside the catch block which sometimes caused iPlanet to fail.

WebLogic Server no longer throws an exception from the catch block.

CR185089

The IIS plug-in was sending an Http status code of 500 (internal Server Error) when it encountered a WRITE_ERROR_TO_CLIENT exception due to a connection closed by the client.

The IIS plug-in no longer sends Http status code of 500 when a WRITE_ERROR_TO_CLIENT exception is caught.

CR185668

When using the Apache plug-in to proxy to multiple clusters using MatchExpressions, the PathTrim attribute was failing to trim off the segment of the url used to direct the request.

Reimplementing MatchExpressions parsing without using the strtok API corrected the problem.

CR186148

When the Apache plug-in encountered a missing page, it was returning a 500 error, rather than the correct 503 error.

The plug-in now returns the correct error.

CR186470

When using the IIS plug-in, the creation of a large number of new connections through a firewall resulted in an HTTP status 302, and the connection was closed.

WebLogic Server now recycles the connections if the HTTP status code is 302.

CR187282

Because the plugin did not follow a part of the HTTP1.1 specification, which states that if a request/response contains both a Content-Length header as well as a Transfer-Encoding: Chunked header, the Content-Length header MUST be ignored, there was a unique scenario involving a recycled connection from the pool that sometimes caused an error.

WebLogic Server now returns contentLength as -1 if CTE is on.

CR187577

When using multiple Location tags in a VirtualHost tag, the Apache plug-in generated a strange URL if the requests matched two more Locations.

The Apache plug-in no longer uses regular expression match, unless specified.

CR187578

When KeepAliveEnabled ON was configured in httpd.conf, KeepAliveSecs defaulted to 20. This default setting could not be changed.

Code was added to ensure KeepAliveSecs is configurable.

CR188811

WLExcludePathOrMimeType did not work correctly when a request had a query string.

Requests such as http://webserver:port/weblogic/something.jsp?value=123 were not excluded and requests such as http://webserver:port/weblogic/something.do?name=test.jsp were not forwarded.

The plug-in now ignores query strings while checking for excludes.

CR189251

Under load, Segmentation errors occurred while retrieving plugin Properties for a virtual host.

Replacing the strtok API with strchr, as the strtok API is not thread safe, eliminated the errors.

CR190562

Requests were not retried when the plug-in encountered a broken pipe error on Solaris while sending post data to WebLogic Server.

WebLogic Server now throws a HALF_OPEN_SOCKET_RETRY exception when sendPostData reports a broken pipe on Solaris

CR189933

The WebLogic Server plug-in was not thread safe. The memory address to SrvrInfo array and its size were being passed around and then could be modified by another thread. If they were then modified by another thread, the first thread could end up accessing invalid memory location which could result in seg fault.

Now, the WebLogic Server plug-in is thread safe. WebLogic Server makes a read-only copy of SrvrInfo array before passing it around.

CR191552

The deprecated property, MaxSkips, was replaced by MaxSkipTime. This new property was not being used throughout the code. As a result, the parameter, MaxSkipTime, defaulted to a value of 10 that could not be changed.

MaxSkipTime is now used throughout the code and therefore its value can now be changed.

CR192875

The iPlanet Server was crashing if readPostDataIntoFile() threw a new exception from its try catch block.

This no longer occurs because readPostDataIntoFile() now returns an exception instead of throwing it if it encounters an error while writing post data to a temp file.

CR193447

The cookie did not contain, |, as the delimiter separating primary and secondary information present. As a result, parseJVMID() always returned the primary server information and ignored the secondary server information.

The cookie is now tokenized to separate primary and secondary information and then call parseJVMID() for both of the extracted values. Now, parseJVMID() returns both the primary server information and the secondary server information.