添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

When the Administration Console created an Application MBean, the associated WebAppComponent MBean incorrectly inherited the Application MBean name instead of the WebAppComponent's URI name. This caused the deployer tool to incorrectly create an additional deployment repository for this application when it was updated.

This defect was corrected by a code change.

Navigation through the directories did not go through action servlet, so encoding was not set properly.

A change was made to set the encoding explicitly in the page, so the correct encoding is used to produce the response.

Propagation from list page to realm deletion changed the MBean class name specific to the MBean to be deleted. Because of this MBean showed only the last deleted type MBeans in the list.

A attribute (original class name from list) has been introduced which will be propagated in the above described flow. This attribute provides a way to recover the original class name and listing remains undisturbed. This solution applies to all MBean types.

The console jsp that was used to upload applications to remote servers was calling the ApplicationManager.update() method even when the server was not in development mode.

Removed the call to ApplicationManager.update() if ProductionMode is enabled. Uploaded applications are no longer automatically deployed when Production Mode is enabled.

A NullPointerException sometimes appeared on the Administration Console while the WebApplication 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.

The correct icons were not being retrieved by the console pages due to changes in the getServletContext code to be in compliance with the Servlet 2.3 specification.

Code changes were made to buildIconList() to provide the path to the images subdirectory in the console.war.

Correct icons now appear in the navigation applet.

Creating a new ACL with a blank Permission caused an unexpected error. This was due to names not being checked for null and blank values under some circumstances.

Appropriate checks have been added, and messages for null names have been corrected.

The getParameter() method in GraphApplet is used to get the value of the min/max heap size. Although the return type is long, WebLogic Server was using Integer.parseInt to convert the string values. When the heap size was over 2G, there was an overflow in the integer value. Because of this, the current free memory was sometimes reported as a negative number.

WebLogic Server now uses Long.parseLong to avoid overflow and to get the correct value of the heap even if it is over 2G .

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.

When a JMSJDBCStore was created, the "None" option was eliminated from the Connection Pool drop down list.

Adding the ability to make JDBCConnectionPool null restored "None" to the list.

When an application with an incorrect web.xml file was added to the applications directory, the Administration Console reported it as having been deployed even though it was not deployed at startup.

WebLogic Server now correctly reports such applications as undeployed.

WebLogic Server was using the greater than symbol, '>', as the Token delimiter. Because of this, if a custom message contained a '>', it was being truncated while being displayed.

WebLogic Server no longer truncates the last token when writing to the log.

readClassDescriptor() of MsgAbbrevInputStream was trying to resolve a class and throwing a ClassNotFoundException for unknown classes. Java serialization will skip this ClassNotFoundException if corresponding data is not being read.

readClassDescriptor() of MsgAbbrevInputStream no longer tries to resolve unknown classes and MsgAbbrevInputStream implemented resolveClass().

ReplicatedSessionContext has two hashtables, one of which stores the sessions for which the server is primary, and the other stores sessions for which the server is secondary. The hashtable with secondary sessions has sessionId as a key and ROID as value.

When a session was invalidated and the request to remove the session came to the secondary server, WebLogic Server passed the ROID to the ReplicatedSessionContext, iterated over the values in the hashtable in order to compare ROID with that value, and then removed the entry. WebLogic Server now avoids iterating over the hashtable by passing the sessionId instead of ROID.

weblogic.cluster.MulticastObjectListener was locked on a call to objectAdded and waited to lock a HashMap while in a different thread MulticastReceiver locks the HashMap and attempted a lock on MulticastObjectListener. This caused a Java Level Deadlock.

Changing the lock order eliminated the deadlock.

When a node in cluster was restarted, it first tried to synchronize with other cluster members resulting in one server adding the other to the cluster view.

Before that cluster node opened the listen port, if a request came in with this cluster node as a secondary, it resulted in an error and from that point on all requests to create secondaries on that cluster node failed.

Now during cluster synchronization, when a node is coming up, it first identifies all the running nodes in a cluster and then sends out a broadcast identifying itself. This ensures that the cluster node coming up is identified by other nodes after it opens a listen port.

When a Dynamic Proxy that implemented interfaces declared inside the web application was put into the HttpSession and the session was replicatable, WebLogic Server was not able to load the interface classes on the secondary server.

Dynamic Proxies implementing interfaces stored in the application archive can now be put into HttpSession and be correctly replicated.

The cluster members timed out if they did not receive a heartbeat within the default 30 second timeout period. Heartbeats were sent every 10 seconds and servers waited for 3 periods (total wait time was 30 seconds) to get a heartbeat before the cluster member was timed out and declared unavailable. For example, during session replication if the secondary server was unavailable at TCP level, the 30-second period was sometimes too long for a very busy web site. Before the secondary was removed from the cluster view, the primary tried to replicate many sessions to the secondary and thus caused the server to hang or made the server slower.

The timeout value IdlePeriodsUntilTimeout is now tunable. It is set on the <Server IdlePeriodsUntilTimeout="3"> tag in the config.xml file. In general customers should not tune this value and should leave it at the default (3). However, in certain cases depending on the load, available redundancy in the architecture and specific application problems and/or certain production scenarios, tuning this value carefully might alleviate the problem temporarily until the root cause is identified and fixed.

BEA WebLogic recommends that you use HIGH caution when changing this value and ensure sufficient testing of your application at peak load scenarios to ensure the expected behavior. There is no recommendation that fits all scenarios, so testing for load and stress is a must if this value needs to be changed.

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.

In WebLogic Server 7.0 and higher, the javax.ejb.TransactionRolledbackLocalException's SVUID was changed and when WebLogic Server 7.0 or 8.1 experienced a javax.ejb.TransactionRolledbackLocalException when a WebLogic Server 6.1 client made a remote call to ejb hosting by a WebLogic Server 7.0 or 8.1 server instance, it experienced an InvalidClassException.

This problem is fixed in WebLogic Server 6.1 so that it now understands the incoming final-ejb20 ClassDescriptor for javax.ejb.TransactionRolledbackLocalException.

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.

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.

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.

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.

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.

Stateful Session Bean handles taken from the 70 (or 81) WebLogic Server servers to WebLogic Server 61 server/client were failing with a ClassNotFoundException in the serialization code.

Compared to the WebLogic Server 6.1 server, WebLogic Server 70 and 81 servers used a different PK mechanism for SFSB in the ejb container.

Adding the necessary classes to 6.1 line to support the inter-op requirement eliminated the ClassNotFoundException.

According to the documentation in "Starting and Stopping Servers" if the CLASSPATH is too long, it can be added as a single line to a file and then accessed as -classpath @filename. However, when beasvc attempted to load the contents of CLASSPATH file, it truncated the last character when the file did not end with a new line.

Now beasvc determines whether the file terminates properly and then reads the file accordingly.

Interoperability between 6.1 SP04 and 8.1 SP02 us t3 was failing 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.

When <<no stack trace available>> was sent out as part of the exception message field (from the server side) rmi layer was recursively adding / appending the exception as server side stack trace. This was filling up the log files. This manifested when the server was running out of heap and there was a NullPointerException thrown by the application code (EJB + Servlets)

WebLogic Server now parses the exception message field, traps this specific exception and ensures that it is appended only once.

Under heavy load, T3File client often threw an ArrayIndexOutOfBoundsException when closing OutputStream/InputStream.

WebLogic Server now acquires the lock on the Vector before starting the loop.

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.

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.

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.

A code change was made so beasvc figures out whether the file terminates properly and is then read accordingly."

A distributed deadlock occurred due to a failure to maintain session stickiness with the primary server. When a request lands on the server which is neither primary nor secondary, it will try to remove the existing session from the primary as well as the secondary and create a new one on the current server and register a new secondary to it. In doing so, this server makes a remote request to the primary to remove the session on non-blocking queue, the primary server makes a remove call to the secondary server to remove itself on non-blocking queue. If there are more than one such requests, there will be no other thread to receive the response on the current server since there will be only two threads available in non-blocking queue and hence there is a distributed deadlock.

WebLogic Server now makes no new remote requests while processing requests that come in on a non-blocking queue. This fixes the problem, as it ensures that there will always be a thread available in the non-blocking queue to receive a response.

When <validate-db-schema-with>MetaData</validate-db-schema-with> was used AND a cmp-field and a cmr-field were mapped to the same column, a java.lang.IndexOutOfBoundsException was being thrown.

WebLogic Server has been modified and this exception is no longer thrown under these circumstances.

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.

[java] ERROR: Error from ejbc: Error while reading 'META-INF/ejb-jar.xml' or 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was:

For BLOBs, in the generated code, WebLogic Server calls ObjectOutputStream.writeObject and ObjectInputStream.readObject to serialize/deserialize the object before writing/reading it to the database. These calls add extra header information. The writeObject method writes the class of the object, the signature of the class, the values of the non-transient and non-static fields of the class, and all of its supertypes are written. (This is the reason for the extra header seen in the database.) These calls do not cause a problem when customers are using only WebLogic Server to set and get BLOBs, because it uses readObject to convert the bytes into the appropriate object, which needs that extra header information. However, if the BLOB has been inserted directly into the database by some other vendor or programmer using:

OutputStream os = ((weblogic.jdbc.common.OracleBlob) lob).getBinaryOutputStream(); os.write(this.tiffImage); // byte[] tiffImage

then problems may occur because WebLogic Server uses readObject and the header information is missing. For the data inserted using WebLogic Server, the other programs that would read the bytes directly get the extra header information and fail.

A system property has been added which allows WebLogic Server to correctly report header information.

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.

EJBStatelessHomeRuntimeMBean's implementation class did not provide correct details of pool statistics.

Code was changed to provide the correct pool statistics in the runtime mbean methods.MBean calls now show the correct data.

The Stateful EJB monitoring page did not have the machine name prefixed to its output

so it was impossible to see to which machine the entry referred.

The machine name was added to the Stateful EJB monitoring page.

The read-only concurrency strategy in 6.x used Exclusive concurrency. This guaranteed exclusive access to the bean, but not to the generated Set for the 1-N relationship. It was possible for two clients to get access to the same Set. In such a case, when some method was called on the relationship Set, it caused a NullPointerException.

Relevant code changes were made to guarantee exclusive access to the relationship Set to fix the issue.

In WebLogic Server 6.1 SP04, the Administration Console reported incorrect values for waiters for entity beans.

The problem was solved by adding a waiterCurrentCount attribute that is incremented when a client starts waiting for a lock and decremented when the lock is acquired or the client times out.

EJBContext.getRollbackOnly() returned "true" if a transaction marked for rollback and had not yet been rolled back. After the transaction was rolled back, it returned "false".

EJBContext.getRollbackOnly() now returns "true" even if the transaction has already been rolled back.

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.

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.

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.

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.

<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.

class weblogic.db.oci.OciLob defined two class level variables to hold the returned byteArray for either BLOB or CLOB data from database. As this byte array could be quite large each instance of OciLob filled up the heap quickly until a garbage collection occurred.

Further testing and a modified OciLob moving the class level variables retBArray[] and retCArray[] into the methods caused the variable to be allocated on the stack and reduced the size of the OciLob object instance and thus overall heap usage was reduced.

Code was added to move the global variables retBArray and retCArray to the method level in order to reduce the size of the memory heap usage.

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.

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.

WebLogic Server Oracle jDriver was not properly releasing Clob Objects for garbage collection.

WebLogic Server now releases Clob Objects correctly.

In previous releases, methods in the weblogic.jdbc.common.Pool and weblogic.jdbc.common.JDBCServices interfaces were referenced in the Programming WebLogic JDBC guide, but the Javadocs for those interfaces were not published.

In WebLogic Server 6.1 SP7, the Javadocs for these interfaces are published at ../javadocs/weblogic/jdbc/common/package-summary.html. Note, however, that the methods in these interfaces have been deprecated and are not available in WebLogic Server 7.0 and 8.1.

Statement.getResultSet() sometimes generated an unnecessary new ResultSet wrapper for the one underlying DBMS resultset, if a result set had already been returned to the user code. If the user code had run an executeQuery() call first, without retaining the result set it returned, garbage-collecting could close it immediately, with the underlying DBMS resultset, invalidating and prematurely closing any result set returned by a subsequent getResultSet() call.

WebLogic Server no longer generates unnecessary wrappers due to a code change.

WebLogic Server sometimes threw an incorrect warning about a JDBC connection leak that began:

[SerialConnection]: Connection Leak detected!!!!!!java.lang.Throwable: StackTrace at creation of connection: /n

The leak detection code that sent this warning is obsolete. A code change resolved the problem.

In jta.DataSource, when doing refreshAndEnlist, WebLogic Server called tx.enlist(), but the connection was not returned to the pool if there was an exception in the refreshAndEnlist call.

A code change catches the exception and releases the connection to the pool.

When an EJB transaction created many new entities or otherwise engaged many beans that all use JDBC, WebLogic Server risked running out of Oracle cursors, because in an attempt to avoid a suspected Oracle driver bug, WebLogic Server delayed closing JDBC statements until the end of a transaction, holding the cursors for the statement until then.

This behavior has been changed so that the session need not hold cursors until the transaction ends.

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.

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

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.

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.

In previous WebLogic Server 6.1 service packs, when the server instance went down but its clients remained active, JMS threw a runtime exception weblogic.rmi.extensions.RemoteRuntimeException, instead of a JMSException as expected per the JMS specifications.

A code change has resolved the problem in this Service Pack.

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.

An idle bridge was logging a message after the maximum idle time setting had been reached.

Code was added to suppress the repetitive log message "Bridge X start transferring messages" logged by an idle bridge.

If the bridge is stopped and restarted, or if it encounters an exception and is restarted you will see the "Bridge "bridgename" starts transferring messages" log message, but you will not see the repetitive message logged by an idle bridge.

Enhancement request to allow explicit naming of JDBC driver being used in class VendorId.

This customer enhancement was made through a code change.

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.

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.

The HttpSessionBindingListener were not getting fired correctly. In some cases they were invoked twice.

Re-implementing the callbacks strictly per the Servlet Specification fixed this problem.

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.

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.

Code that used a response wrapper and called getOutputStream on the original response passed into a JSP resulted in NestedBodyResponse always throwing an IllegalStateException.

Mixed use of getWriter() and getOutputStream() from NestedBodyResponse are now allowed, so the exception will only be thrown when appropriate.

A protocol exception, excjava.net.ProtocolException: Didn't meet stated Content-Length, was occurring when a client cancelled a request while the default fileServlet was sending a file.

This was resolved with a code change.

WebLogic Server decoded the path /foo/bar%c0%baz/ to /foo/bar because sun.io.ByteToCharConverter stopped converting the remaining bytes if it encountered bytes that were not valid in UTF8 (for example, 0xc0). This problem does not occur on JDK 1.4.

The problem was resolved with a WebLogic Server UTF-8 converter that replaces invalid UTF-8 sequences with U+FFFD characters. As a result of this fix, the path /foo/bar%c0%baz/ is decoded to /foo/bar?%baz.

The java.lang.IllegalStateException: HttpSession is invalid exception occurs in the servlet container's internal call. If other threads using the same session ID invalidate the session object during processing of ServletRequestImpl.syncSession(), an IllegalStateException may occur while calling SessionData.putValue() or SessionData.isNew().

Ignore the IllegalStateException if the session has been invalidated by other threads.

When a Serializable Servlet request attribute was added, and then overwritten it with a non-Serializable value, the original value masks the new one.

A code change was made to try to remove the value from a HashMap table of serializable attributes if necessary, when replacing a Serializable value with a non-Serializable one.

On a Web server without a default Web application, an HTTP request for a missing resource received a response that included an incorrect date header:

HTTP/1.1 404 Not Found Date: Thu, 01 Jan 1970 00:00:00 GMT

This header is not valid according to section 14.18 of RFC2616. A code change resolved the problem.

HttpClusterServlet threw this exception, when KeepAliveEnabled was set to true after a large file download was canceled.

Analysis revealed that when a client canceled a file download, the remaining data was left in the inputstream. If the socket was recycled for a subsequent request, the servlet read the remaining data, resulting in the exception.The problem was solved with a code fix to drain the inputstream and if the download is canceled we will read this remaining data.

ServletContext.setAttribute threw a NullPointerException when a null value was passed to it.

The problem was resolved by a code change that calls removeAttribute() when a null value is passed to the setAttribute().

Using ServletOutputStream.write(byte) to write more than the buffer size caused infinite loop.

A code change resolved the problem by updating the check for boundary conditions when the buffer is full and autoflush is set to false.

After a protocol exception, the server hung while trying to process a new license because of a problem with the ensureContentLength method.

A code change ensured that the server no longer hangs during this process.

breakUpAndWriteItOutAsNecessary() tried to separate a manifest header to enforce a maximum of 72 bytes per line, and wrote one line to an outputstream at a time. The cause of this problem was that the start offset for the new line is wrong.

A code change resolved the problem.

A JSP in a subcontext of the root context was precompiled when deployed as a Web application packaged in a WAR file, but not if it was deployed in exploded format.

JSPs now precompile when deployed in an exploded format.

Jsp used several MBeans with attributes that had the same names, thus when they were displayed, it looked as though there were duplicates, when in fact, there were none.

The display labeling of the MBean attributes was changed for the mbeans that had the same attribute names. They are now distinguishable.

When a Serializable ServletContext attribute was added and then overwritten with a non-Serializable value, the original value masked the new value.

When replacing a Serializable value with a non-Serializable one, WebLogic Server now removes the original value from the attributes hashtable.

A race condition arose during the computation of a secondary JVMID when more than one frame was used. It appeared that the computation of the secondary JVMID was resetting the member variable value by one thread, causing the race condition.

Following a code change, the computation of the secondary JVMID no longer leads to the race condition.

The HTML page served by the CertificateServlet displayed the wrong value for the radio button—it displayed 2048 for the radio button, but using the button resulted in a 1024 bit certificate.

The radio button now produces the correct 2048 bit certificate.

The WebLogic Server implementation of HttpURLConnection did not check whether keep-alive connection had been timed out on the server side when using POST method, resulting in the error: Connection aborted by peer: socket write error on flush.

Checks were added to ensure that the HttpClient is non-null before updating the timestamp.

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.

A change to support piping of passwords into weblogic.Admin. That change locked up the System.in stream, preventing automated scripts from working correctly.

The change that locked the System.in. stream has been corrected and scripts can now be automated.

When a deployment was done where the targets were across two different platforms (such as unix and windows), the deployment files were not found.

The deployment location was not being localized for the local machine type. If one deployed a webapp from an administration server running on windows and targeted it to a unix based machine, the location of the deployment was malformed for that platform.

The deployment path has now been localized for each machine type.

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.

when an exception was thrown while retrieving attributes via MBeanServer.getAttributes(), any exceptions thrown by the JMXServer were handled and a null value was returned.

WebLogic Server now rethrows the exception instead of returning a null value.

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.

When the value of SqlStmtProfilingEnabled was set through MBeans or manually in config.xml file and then you tried to retrieve that value through MBeans it did not show the value. Instead, it returned a message, "It appears that no attributes have been specified for this MBean".

Exposing the SqlStmtProfilingEnabled attribute of JDBCConnectionPoolMBean eliminated the error.

The KernelDebugMBean options, DebugDGCEnrollment and ForceGCEachDGCPeriod, could not be enabled. There was no way to "set" the enable attribute in weblogic.management.configuration.KernelDebugMBean.

The setter signature did not take boolean for these attributes, so the values for these flags could not be changed from the default.

These attribute setters now accept boolean.

When printing the ExecuteQueueRuntimeMBean, the ExecuteThreads attribute was not being displayed correctly with the weblogic.Admin tool.

The entries in the ExecuteThreads attribute are now displayed as a readable string value.

When Domain and Server logfile names were date and time based (SimpleDateFormat), the following features were not fully functional:

  1. These type of logs were not being rotated.
  2. The total number of log files were not restricted even when the FileCount was set.There was no code in place to delete the older log files because the FileFilter could not list these files because of their file name patterns.
  3. File rotation has been implemented for these types of file names.After each rotation, WLS now checks to see whether the files exceed the limit, if restricted. It then deletes the older log files.

    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.

    Apache) 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".

    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

    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.

    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.

    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.

    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.

    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.

    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.

    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.

    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.

    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.

    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.

    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.

    If the PRIMARY server could not be located, then the request was served by the next available server in the list. It ignored the Secondary server.

    If the Primary server can not be located, but the Secondary server is present then the request will be forwarded to Secondary server rather than being served by another server on the list.

    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.

    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.

    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.

    WebLogic Server was throwing CONNECTION_REFUSED errors with the Iplanet plugin.

    After polling a socket for WRITE operation, if the state of the socket is in any one of the following states, then the plug-in will not throw aCONNECTION_REFUSED exception.

    Valid states are:

    POLLOUT

    POLLWRBAND

    POLLWRNORM

    (Apache) The plug-in was dropping sessions after WebLogic Server was restarted.

    This is because Apache 1.3.x creates multiple child processes to handle incoming requests. Each process maintains its own serverlist where each server entry is uniquely identified by the JVMID (provided by WebLogic Server, and which is updated when a request is successfully processed). Whenever a server instance is restarted, it generates a new JVMID. So a request whose cookie contains a new JVMID will fail to locate the corresponding primary server plug-in if the JVMID is not refreshed in the plug-in.

    A code fix ensures that if the JVMIDs extracted from cookie do not match with the ones stored in the serverlist, then WebLogic Server will try to refresh the JVMIDs once again.

    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.

    In an Apache configuration with multiple virtual hosts, if only one of the virtual hosts was configured with SecureProxy=ON for the WebLogic Server plug-in, and the other virtual hosts did not use SecureProxy or WLProxySSL, the virtual hosts with no SSL configured saw that the plug-in attempted an SSL connection with the backend WebLogic Server. This caused a performance problem.

    A new argument was added to an internal method to determine if a SSL connection needs to be initiated.

    Apache plugin caused a duplicated http header and body for the 302 response. There was no problem between the plugin and backend servers, but the Apache server added an additional 302 response.

    Code was added which reverted the return value of the request_handler method to OK.

    When the plug-in parameter "QueryFromRequest" was used in the httpd.conf file

    it gave the following syntax error during Apache Server startup

    Syntax error on line 971 of C:/Program Files/Apache

    Group/Apache2/conf/httpd.conf:Invalid command 'QueryFromRequest', perhaps misspelled or defined by a module not included in the server configuration.

    The Apache 2.0 plug-in now supports the "QueryFromRequest" parameter.

    The release 8.1 SP02 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.

    When using the release 7.0 SP02 plug-in with client certificates, WebLogic Server worked correctly. However, after an upgrade to release 8.1 SP02, 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 8.1 SP02 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.

    (Apache) 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.

    (Apache) The Apache server was hanging when the WebLogic plug-in tried to open the wlproxy log file, even though Debug was OFF.

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

    When the WLExcludePathOrMimeType property was defined within a Location tag, it should not have had a global scope. (However, when the property was defined outside a Location tag, then it should have had a global scope.)

    This was resolved by a code change to ensure that the WLExcludePathOrMimeType property is applied only to the requests that match the appropriate Location path for the defined property.

    (Apache) 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.

    (NSAPI) The "pluginparams.ErrorPageTest" failed when attempting a proxy by extension.

    The workaround for the ErrorPage to be loaded locally is to use the WLExcludePathOrMimeType property if proxying by MIME type.

    For the SUN One Web Server, version 6.1, some additional configuration steps are required:

    1. Remove NameTrans fn="ntrans-j2ee" name="j2ee" from the default object in the obj.conf file.
    2. Remove Init fn="load-modules" shlib="C:/Sun/WebServer6.1/bin/https/bin/j2eeplugin.dll" shlib_flags="(global|now)" from the magnus.conf file.
    3. For more information, refer to Sun's documentation, at http://docs.sun.com/source/817-1831-10/agjava.html#wp1084 323

      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.

      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.

      iPlanet users experienced a problem with host name verification and received the following:

      INFO: Host () doesn't match (), validation failed

      ERROR: SSLWrite failed

      A code fix resolved this issue.

      The ISAPI plug-in sent the WL-PATH-TRIM HTTP Header value to a WebLogic Server in place of the WL-PATH-TRIM value.

      WebLogic Server now receives the correct value.

      When the NSAPI plug-in performed name resolution on backend WebLogic Server instances, name resolution used sysGetHostByName, which called getHostByName, which called internal methods that had maximum limits for open file descriptors, causing name resolution sometimes to fail.

      A fix to cookie parsing and the substitution of JVMIDs to locate primary and secondary servers resolved the problem.

      The ISAPI plug-in sometimes failed after adding a persistent cookie to a servlet session.

      A correction to the cookie parsing code resolved the problem.

      [ISAPI] When a connection was retrieved from the pool, but the WebLogic Server had already closed the connection, then the HALF_OPEN_SOCKET_RETRY exception was raised.

      Requests will be now be retried after receiving the HALF_OPEN_SOCKET_RETRY exception.

      WebLogic Server proxy plug-ins restrict the HTTP commands that can be submitted from the client to the server. The validation rules in the plug-in code now allow the following HTTP commands that are needed for WebDAV implementations:

      DELETE

      OPTIONS

      *COPY

      MKCOL

      PROPFIND

      PROPPATCH

      SEARCH

      UNLOCK

      A request did not fail over to the next available server in the cluster after receiving 503 HTTP status. The same server was tried repeatedly until a READ_ERROR_FROM_SERVER or a CONNECTION_REFUSED exception was raised.

      Code now marks the server as failed on getting a 503 HTTP status error, gets the next available server and re-sends the request. All requests now successfully fail over to next available server.

      During the repository id generation of getter and setter operations, sometimes an extra '_' was added if the getter or setter contained a reserved keyword. This sometimes resulted in the failure of a remote call.

      WebLogic Server now ensures it truncates extra underscores.

      The method used to send IIOP messages was unsynchronized leading to corruption of the underlying data if multiple threads tried to send and receive data at the same time.

      The method was made synchronized and the product now works correctly in multi-threaded environments.

      When a application client code cached the remote stub and invoked a remote method on a SLSB deployed to a cluster, the behavior was that each call refreshed the list which tracked the cluster nodes where the remote object is available. This list was used to failover the calls if any of the node failed with a recoverable exception. The issue here was that failover did not work when the entire cluster was restarted while the application client had cached the stub from a previous invocation.

      The retry logic in the failover algorithm was incorrect. This logic originally allowed n-1 number of retries in a cluster with n nodes. When the entire cluster restarted, the cached stub would have stale list. And the retry logic scanned though the stale list and exhausted all the retry attempts. In the last attempt it would have potentially refreshed the list. Even though the client side stub now had a new copy of the list it did not attempt to failover as it has already reached n-1 attempts limit.

      The remote stub cached in the application client now ensures it refreshes the list only when remote method invocation fails on all the nodes in the existing list. Then stub is given one last chance for failover if the list got refreshed. If this last chance does not succeed the stub will throw an exception to the application otherwise failover will continue to work as advertised transparently.

      In WebLogic Server 6.1 SP06, the examples.ejb 1.1 package, examples/ejb/building.html provides incorrect instructions for building samples, and incorrectly describes how the samples build script works. The instructions and description refer to previous version of the build script which used build.cmd or build.sh. The current version of the build script (build.xml) uses ant. To run build.xml, type ant in the directory for the sample you wish to build. To understand how the build script works, refer to the comments in build.xml

      When using the .NET C# example included with the MedRec application (%WEBLOGIC_HOME%\samples\server\medrec\src\clients\CSharpClient\bin\ReleaseCSharpClient.exe), the client successfully retrieves a patient record, but when attempting to "Save Changes" from the client application, a date field error was flagged.

      A code change fixed the date validation.

      Some internal WebLogic Server objects that are bound into the JNDI tree were insufficiently protected. Some of these objects control key functions of the server. Simply unbinding the appropriate objects renders the server unreachable. It was possible to leave the server operational but to have some confidential data transmitted to a foreign object rather than the internal WebLogic Server object.

      The patches available in this release control access to the JNDI tree.

      See Security Advisory BEA04-65.00 .

      Whenever an HTTP or HTTPS request was made of the server, information about the WebLogic Server version was supplied.

      The default setting for returning a Web Server version upon HTTP or HTTPS request has been changed from true to false.

      See Security Advisory BEA04-70.00 .

      A deadlock occurred between two threads when using Netscape LDAP classes - LDAPConnection and LDAPConnThread. This deadlock grew until all the default execution threads were deadlocked with LDAPConnThreads.

      After updating to the new Netscape SDK, deadlocks no longer occur.

      A protection problem occurred when WebLogic Server was running on an operating system that required case-sensitive filenames and cross-mount directories containing Web applications from an operating system that did not support case-sensitive filenames. For example, this problem occurred when mounting Windows-based Web applications onto a Linux-based WebLogic Server.

      This resulted in some URL patterns in the web.xml file being incorrectly evaluated so that access control was compromised.The associated patch adds configuration options to specify that Web application files should be treated as case-insensitive even though the operating system may be running in case-sensitive mode.

      See Security Advisory BEA04-67.00 .

      The constructor method for a flat group used by a custom realm expected a case-sensitive value. When a case-sensitive value was not found, a NullPointer exception was thrown.

      WebLogic Server no longer throws a NullPointer exception when the value for the CachingRealm MBean value is null.

      A set of enhancements have been added to the WebLogic Server command-line utilities and Administrative ant tasks to eliminate the need for a system administrator to enter a clear-text password. With these fixes, the WebLogic Server command-line utilities and Administrative ant tasks now create and read user-managed configuration files. Like the boot.properties files, this new capability relies on strong encryption and file system protections for security.

      See Security Advisory BEA04-68.00 .

      A NullPointer exception occurred when using the WebLogic Server Administration Console to list LDAP users.

      Code was added to eliminate the NullPointer exception.

      The Use Java attribute on the SSL tab in the WebLogic Server Administration Console was not working properly.

      The behavior of the attribute has been fixed.

      A password echo occurred intermittently on the Linux operating system when booting WebLogic Server using the Administrative Console.

      No-echo capabilities have been added to resolve the issue. See the README file in the patch for further documentation.

      See Security Advisory BEA04-69.00 .

      If the certificate name was the same for both an Administration Server and remote Managed Server, WebLogic Server used the certificate for the Administration Server for the remote Managed Server.

      The SSL Listen thread has been updated so that is only loads local certificates.

      WebLogic Server was setting the AuthenticatedUser in the session rather than the AuthenticatedUserName.

      Servlet authentication has been changed so that is sets the AuthenticatedUsername resolved in the ClassCast exception.

      If host name verification failed but the setExpectedName() method was defined, WebLogic Server ignored the host name defined in the method and dropped the connection.

      WebLogic Server now performs the host name verification check first. If that check fails, WebLogic Server uses the ExpectedName() method to verify the hostname. If that verification fails, the connection is rejected.

      A NullPointerException was being thrown when an Applet attempted to obtain an initial

      context using the t3s protocol.

      The basic constraints check for applets was updated, and this eliminated the NullPointerException.

      Following a code change, WebLogic Server does NOT support HTTP TRACE requests by default. If you want to turn on HTTP TRACE support, in WebLogic Server 6.1 and above, set HttpTraceSupportEnabled="true" in cluster/server. In 5.1, set weblogic.httpd.httpTraceSupport.enabled=true.

      See Security Advisory BEA04-48.01 .

      WebLogic Server was verifying the hostname of the administration server against the administration certificate in the nodemanager, thus causing an error.

      Hostname verification in the nodemanager now only checks against the nodemanager hosts file.

      The value that the WebLogic Server SNMP agent returned for sysUpTime did not accurately report the duration since the SNMP agent had been initialized.

      The duration since initialization is now accurately reported.

      When SNMP information was collected using a third-party collector task, the following message was logged:

      <Error> <SNMP Agent> <000000> < Unable to set Entry Field Value...>

      A code fix was implemented to resolve this issue.

      WLEC clients were experiencing the following problems with WLEC connection pools:

      Corruption of the ConnectionPool display in the administration console

      COMM_FAILURES caused by unregistered endpoints

      A code fix was implemented to resolve these issues and improve the overall performance of WLEC connection pools.

      A memory leak occurred when deploying an Enterprise Application that contained a singleton class with static data. The problem did not occur when the singleton class was deployed as a Web Application.

      This problem was solved with a fix to the application classloader.

      WebLogic Server threw a ClassNotFoundException when processing a user-defined exception thrown from an EJB on a remote server to an EJB on the local server. This occurred even though the user-defined exception was included in the classloader for the local EJB. The problem occurred because the socket reader that processed the exception used the system classloader, rather than the application classloader.

      This problem was solved with a code fix.

      Client programs could not use java.lang.reflect.Proxy to access proxy objects deployed in WebLogic Server, unless the proxy classes were added to the system classpath. If an object did not reside in the system classpath, the client would receive a ClassNotFoundException .

      The resolveProxyClass() method was implemented to load interfaces from the application-specific classloader as well as the system classloader.

      WebLogic Server 6.1 SP04 threw a null pointer exception at weblogic.rmi.cluster.BasicReplicaList.add(BasicReplicaList.java:61). The problem occurred when a managed server was restarted after a failure. Upon restart, the NPE occurred and all server instances in the cluster had to be restarted. The error was related to a timing issue, and was solved with a code fix.

      Clustered servers could lose sessions when a client switched to a third server in the cluster from the first and second servers, which had been the client's primary and secondary servers. A process would remove the session from the first two servers, and when the client switched back to the primary server, the primary server looked for the session on the secondary server, instead of properly looking on the third server.

      A code fix resolved the problem by causing the session to be recreated from session information on the third server, completely removing the session from the primary and secondary servers.

      In WebLogic Server 6.1 SP02, when using HTTP Tunneling with a cluster, the client got this message:

      java weblogic.Admin -url http://colma:17683 -username system -password password PING 10

      <May 29, 2003 10:14:18 AM PDT> <Error> <RJVM> <000515> <execute failed java.net.ProtocolException: Tunneling result not OK, result: 'DEAD', id: '0'java.net.ProtocolException: Tunneling result not OK, result: 'DEAD', id: '0'
      at
      weblogic.rjvm.http.HTTPClientJVMConnection.receiveAndDispatch(HTTPClientJVMConnection.java:422)

      at
      weblogic.rjvm.http.HTTPClientJVMConnection.execute(HTTPClientJVMConnection.java:305)

      at
      weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213 at
      weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
      > Failed to connect to <urldeleted> due to: <urldeleted> :Bootstrap to <urldeleted> failed. It is likely that the remote side declared peer gone on this JVM]

      The problem occurred because the plug-in tried to round-robin each tunnel request to the next server. The request did not stick to the same server.

      The problem was solved with a code fix to ensure state was maintained in the client by setting the jsessionid cookie and sending it back to the plugin.

      In WebLogic Server 6.1 SP04, an error occurred when trying to update a secondary session. Given three clustered server instances: Server A, Server B, and Server C.

      1) Hit Server A, PRIMARY A, SECONDARY C

      2) Hit Server C, PRIMARY C, SECONDARY B

      3) Hit Server A again

      This error occurred on Server A:

      <Jun 4, 2003 4:24:56 PM PDT> <Debug> <Cluster> <Error updating secondary for 3535724191309537720 on 7312270160516507840S: <IPaddressdeleted> : [7005,7005,7002,7002,7005,7002,-1]: <IPaddressdeleted> :7005, <IPaddressdeleted> :7005, <IPaddressdeleted> :7005:mydomain:myserver3. Re-creating secondary.>

      This error occurred on Server C:

      <Jun 4, 2003 4:24:56 PM PDT> <Info> <Cluster> <Lost 0 replication updates of object 3535724191309537720. Re-fetching secondary.>

      The problem was solved by a code change.

      In WebLogic Server 6.1 SP03, when a client of a stateful session bean accessed a bean deployed on a cluster configured for weight-based load-balancing, and the Managed Servers with the highest and second highest weight are killed in that order, the client gives the following message

      <Jul 22, 2003 1:32:56 AM IST> <Warning> <Kernel> <No replica in list has the expected weight. Reverting to round-robin>

      When the Managed Servers are restarted, the load balancing algorithm was switched to round-robin.

      Analysis revealed that the replica list was getting updated when a Managed Server went down, but due to a race condition the max weight in RichReplicaList was not reset properly.

      A code change to recompute max weight whenever the replica list size changes solved the problem.

      The web application container returned 404 messages for InitJVMID requests from the HTTPClusterServlet , resulting in log files filling up with messages:

      ####<Sep 6, 2002 4:56:43 PM EDT> <Debug> <HTTP> <petunia> <ms1petunia> <ExecuteThread: '13' for queue: 'default'> <kernel identity> <> <101147> <HttpServer(887891,null default ctx,ms1petunia) found no context for "/WLDummyInitJVMIDs".

      The problem was solved by sending InitJVMID requests to the internal web application which is always deployed on WebLogic Server.

      When a transaction obtained connections to two resource adapters and both adapters used the same resource manager, WebLogic Server cleaned up only one connection. The connections were closed before the committing the transaction. This problem appeared as a javax.resource.spi.ResourceAllocationException .

      The problem occurred because the transaction manager ignored the second connection that used the same resource manager. This was solved with a code fix.

      When allocating a new connection, the connector container used the descriptor MBean to obtain configuration information. Because the descriptor MBean resides on the Administration Server, Managed Servers required the Administration Server to be available in order to allocate the new connection. If the Administration Server was down, the process of allocating new connections would throw a exception:

      weblogic.rmi.extensions.RemoteRuntimeException

      The container was modified so that it stores configuration information locally after an adapter is deployed. Managed Servers use this local configuration information, rather than the descriptor MBean, for allocating new connections.

      When WebLogic Server Service Pack 5 obtained MetaData information from a Resource Adapter, it did not check the return value for nulls before using the object. This could cause a NullPointerException and connection failure.

      The code was modified to check the return value for null after calling getMetaData() . If an adapter's implementation of ManagedConnection.getMetaData() returns a null value, WebLogic Server no longer throws a NullPointerException and no MetaData is logged.

      WebLogic Server sometimes displayed the following NullPointerException when a domain contained two Administration Servers and you tried to access the servers via the Administration Console:

      java.lang.NullPointerException
      at
      weblogic.management.console.helpers.UrlHelper.buildIconList(UrlHelper.java:149)
      at weblogic.management.console.helpers.UrlHelper.getIcon(UrlHelper.java:174)
      at
      weblogic.management.console.tags.SmartNavNodeTag.getIcon(SmartNavNodeTag.jacva:111)
      at
      weblogic.management.console.tags.SmartNavNodeTag.inferStuffFromContext(SmartNavNodeTag.java:96)
      at
      weblogic.management.console.tags.SmartNavNodeTag.doStartTag(SmartNavNodeTag.java:44)
      at
      weblogic.management.console.webapp._domain.__nav._jspService(__nav.java:301)
      at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
      at
      weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:262)
      at
      weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:198)
      at
      weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:250)

      [...]

      This problem was solved with a code fix.

      After upgrading from WebLogic Server SP02 to SP04 on Solaris 8, when customer logs into the console they get the following exception in the log files. The console continues to work.

      j ava.lang.NullPointerException at weblogic.management.console.utils.ConsoleComparator.compare(ConsoleComparator.java:81) at java.util.Arrays.mergeSort(Arrays.java:1176) at java.util.Arrays.sort(Arrays.java:1123) at java.util.Collections.sort(Collections.java:116) at weblogic.management.console.utils.MBeans.sort(MBeans.java:1103) at weblogic.management.console.tags.DeclareBeanSetTag.doStartTag(DeclareBeanSetTag.java:99) at weblogic.management.console.webapp._domain.__nav_services._jspService(__nav_services.java:982) at weblogic.servlet.jsp.JspBase.service(JspBase.java:27) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:262) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:198) at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:490) at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:316) at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:116) at ...

      Analysis revealed that MBeans were returning a null displayName . The problem was solved with a code fix.

      In WebLogic Server 6.1 SP02, when the WebLogic Server security manager starts and sets the policy file, the path /usr/lib was prepended to javac during JSP compilation, causing a java.security.AccessControlException.

      The problem was solved with a code fix.

      In WebLogic Server 6.1 SP04 and SP05, when starting WebLogic Server as an Windows service using a classpath from a file, the error

      "Thread created successfully! Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/Server"

      is thrown if classpath file is over about 2k length.

      The problem was solved by correcting an error related to reading the classpath from a file.

      When using URLClassLoader on the client, a remote method call resulted in a NoClassDefFoundError.

      c:\java\java131_07\bin\java -classpath ".;client.jar;C:\home\ravia\weblogic\dev\src700\3rdparty\weblogicaux.jar" URLTest qa146 9901 ejb20-statefulSession- TraderHome installadministrator installadministrator java.lang.NoClassDefFoundError: weblogic/rmi/extensions/server/Stub at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:488) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:106) at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:401) at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:162) at java.lang.ClassLoader.loadClass(ClassLoader.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:250) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:310) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at weblogic.utils.classfile.utils.CodeGenerator.generateClass(CodeGenerator.java:71) at ...

      The problem was solved by setting ThreadContextClassLoader as the parent for AugmentableSystemClassLoader .

      In WebLogic Server 6.1 SP04, this error occurred:

      weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Old socket closed and released FD before FDRecord still exists,...

      The problem was solved with a code change to Ensure that socket closes outside the muxer are handled gracefully.

      The Solaris and Windows 2000 versions of WebLogic Server logged socket exceptions similar to:

      <Apr 3, 2003 11:40:07 AM EST> <Error> <socket> <000424> <IOException on socket: weblogic.servlet.internal.MuxableSocketHTTP@1eca988 - idle timeout: '30000' ms, socket timeout: '0' ms, fd: 53 java.net.SocketException: Connection reset java.net.SocketException: Connection reset
      at
      java.net.SocketInputStream.read(SocketInputStream.java:168) at
      weblogic.socket.PosixSocketMuxer.readBytesProblem(PosixSocketMuxer.java:876)
      at
      weblogic.socket.PosixSocketMuxer.deliverGoodNews(PosixSocketMuxer.java:767)
      at
      weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:694)
      at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:23)
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
      ad.run(ExecuteThread.java:189)
      >

      However, these messages do not indicate a defect with the server or application. The code changed so that the above exceptions are displayed only when the server is in debug mode.

      In WebLogic Server 6.1 SP04, child threads of WebLogic Server execute threads did not inherit the correct context classloader. This problem common occurred when a servlet or an ejb created a timer (java.util.Timer).

      Analysis revealed that WebLogic Server execute threads maintained their own context classloader and child threads of these execute threads did not inherit the context because java.lang.Thread directly assigned the member variable of its own to the child threads.

      The problem was solved with a code fix.

      In WebLogic Server 6.1 SP04, the following exception occurred on a Solaris 8 server with patch for CR100665_61sp4.jar:

      <Apr 23, 2003 3:36:27 PM CDT> <Error> <Posix Performance Pack> <Uncaught Throwable in processSockets java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:750) at java.util.HashMap$EntryIterator.next(HashMap.java:792) at java.util.HashMap.putAllForCreate(HashMap.java:408) at java.util.HashMap.clone(HashMap.java:624) at java.util.HashSet.clone(HashSet.java:217) at weblogic.socket.PosixSocketMuxer.closeSockets(PosixSocketMuxer.java:486) at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:589) at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:24) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)

      The problem was solved with a code fix.

      WebLogic Server ships with a file named wlntio_g.dll , which is a debug version of of wlntio.dll (and is required only for debugging purposes). WebLogic Server 6.0 Service Pack 2 included the wrong version of wlntio_g.dll , which could cause stack traces similar to the following when used for debugging:

      <NT Performance Pack> NATIVE.malloc(): allocated at 0x08DAD008 numAllocs 1
      numFrees 0
      NATIVE: start io on 1972 with addr 0x08dad008
      NATIVE: GetQueuedCompletionStatus on 1972 with addr 0x08dad008
      <May 6, 2003 11:17:19 AM EDT> <Error> <NT Performance Pack> <failure in
      processSockets() - GetData: 'weblogic.socket.NTSocketMuxer$GetData - native
      pointer: '0', numBytes: '0''
      java.lang.NoSuchFieldError: fd
      at weblogic.socket.NTSocketMuxer.getNextSocket(Native Method)
      at
      weblogic.socket.NTSocketMuxer.processSockets(NTSocketMuxer.java:589)
      at
      weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:24)
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)>

      Service Pack 6 now includes the correct version of wlntio_g.dll .

      In WebLogic Server 6.1 SP04, stateful session EJB failover did not work when multiple failovers were required

      In a three node cluster a JSP creates or calls a replica-aware stateful session EJB. The remote EJB stub is stored in the http session. After each call to the stateful session EJB the updated EJB stub is also updated in the http session to reflect any changes for the EJB replica list (primary/secondary).

      The following call sequence with the same browser window leads to a java.rmi.ConnectException when only one node of the cluster survives:

      1. All three cluster nodes are running.

      2. Making a call to node1, create EJB and store remote in http session (http session replication is enabled)

      3. Kill node1

      4. Make a call to the secondary node2, the EJB remote is retrieved from the replicated http session and the call to the EJB works fine. After this EJB call again the remote is stored in the http session.

      5. Kill node2

      6. Make a call to node3, get the EJB remote from http session.

      WebLogic Server tries to lookup the EJB on node2 and does not try to use node3 (this should now be the new secondary?). The following exception is thrown on node3:

      java.rmi.ConnectException: Could not establish a connection with -3088833905169218734S:172.23.64.38:[7001,7001,7002,7002,7001,7002,-1]:mydomain:managed2, java.rmi.ConnectException: Destination unreachable; nested exception is: java.net.ConnectException: Connection refused: connect; No available router to destination
      at
      weblogic.rjvm.RJVMImpl.getOutputStream(RJVMImpl.java:275)
      at
      weblogic.rjvm.RJVMImpl.getRequestStream(RJVMImpl.java:408) at
      weblogic.rmi.internal.BasicRemoteRef.getOutboundRequest(BasicRemoteRef.java:97)
      at
      weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:255)

      The problem was solved with a code fix.

      In WebLogic Server 6.1 SP04, a customer saw close_waits running under AIX.

      Analysis revealed that when WebLogic Serve 6.0 clients connected to a WebLogic Server 6.1 instance, WebLogic Server leaked sockets. This occurred when WebLogic Server attempted to close the MuxableSocket via the muxer without registering the socket with the muxer—the socket was rejected after being claimed by t3, before it could be registered with the muxer. The problem was corrected with a code fix.

      In WebLogic Server 6.1 SP04, running with IBM's MQWorkflow on AIX 5.2., invocation of an MQWorkflow Java API by a servlet in WebLogic Server resulted in an error in MQWorkflow. The problem was not exhibited under Window, if Native IO (Performance Pack) was disabled, or if the libmuxer.so library was removed from the classpath.

      Analysis revealed that WebLogic Server did not set the "language code", an encoding parameter, to "en-us" as it should, but to "c". The problem was corrected with a code fix.

      In WebLogic Server 6.1 SP03 and SP04, restart of the Administration Server resulted in this error:

      java.rmi.ConnectException: This RJVM has already been shutdown

      The problem was reproduced consistently when beforing these steps:

      1. Configure a cluster with server instances on at least two machines.
      2. Deploy a sample EJB to cluster.
      3. Restart the Administration Server.
      4. Untarget the EJB from cluster
      5. Retarget the EJB to cluster.
      6. The following error resulted:

        <Feb 5, 2003 7:03:27 PM PST> <Info> <J2EE> <Undeployed: ejb_basic_statelessSession> java.rmi.ConnectException: This RJVM has already been shutdown -7152222714009328 37S:172.17.25.250:[7001,7001,7002,7002,7001,7002,-1]:mydomain:myserver
        at
        weblogic.rjvm.RJVMImpl.getOutputStream(RJVMImpl.java:280)
        at
        weblogic.rjvm.RJVMImpl.getRequestStream(RJVMImpl.java:408)
        at
        weblogic.rmi.internal.BasicRemoteRef.getOutboundRequest(BasicRemoteRef.java:97)
        at
        weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:125)
        at
        weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35) at $Proxy7.getMBeanServer(Unknown Source)
        at weblogic.management.internal.MBeanProxy.getAttribute(MBeanProxy.java:253)
        The problem was solved with a code change to remove stale MBean references.

        In WebLogic Server 6.1 SP04, running with AIX, a method call made over IIOP to a remote object hung.

        The customer has a server (non-WebLogic Server) hosting remote objects. An EJB running on WebLogic Server calls a remote object on the non-WebLogic Server over IIOP. The method call hung indefinitely. The method call was simple—it returns a boolean type. The thread dump showed:

        "ExecuteThread: '11' for queue: 'default'" (TID:0x300C12A8, sys_thread_t:0x35649A58, state:CW, native ID:0x1011) prio=5 at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:429) at weblogic.iiop.SequencedRequestMessage.waitForData(SequencedRequestMessage.java:24) at weblogic.iiop.EndPointImpl.sendReceive(EndPointImpl.java:641) at weblogic.iiop.OutboundRequestImpl.sendReceive(OutboundRequestImpl.java:43) at weblogic.iiop.IIOPRemoteRef.invokeInternal(IIOPRemoteRef.java:128) at weblogic.iiop.IIOPRemoteRef.invoke(IIOPRemoteRef.java:90) at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35) at $Proxy70.isRunning(Unknown Source) at java.lang.reflect.Method.invoke(Native Method) at weblogic.iiop.IIOPInvocationHandlerImpl.invoke(IIOPInvocationHandlerImpl.java:285) at $Proxy71.isRunning(Unknown Source) at...

        Analysis revealed a classloader problem. A code fix resolved the problem.

        In WebLogic Server 6.1 SP05 a lookup on context (and assigning to object) throws IllegalArgumentException if EJB stubs is not in classpath

        The problem occurred with a stateful session EJB ( examples.ejb20.basic.statefulSession , shipped with WebLogic Server) deployed to a single WebLogic Server server. A JDNI lookup was performed on the EJB home object and the returned value was assigned to the class object. The client classpath contained weblogic.jar and no client classes.

        This code was used to perform the lookup on the context.

        Context ctx = new InitialContext(ht); Object objref = ctx.lookup("ejb20-statefulSession-TraderHome");

        The lookup succeeded for latter succeeds for WebLogic Server 6.1 SP03 but failed on WebLogic Server 6.1 SP05. The exception was:

        j ava.lang.IllegalArgumentException: java.lang.IllegalArgumentException: interface examples.ejb20.basic.statefulSession.

        TraderHome was not visible from the class loader With verbose classloading set for the JVM, it was found that the examples.ejb20.basic.statefulSession.TraderHome class was successfully loaded by the In WebLogic Server 6.1 SP03, although it was not in the classpath. With In WebLogic Server 6.1 SP05, the failure occurred when attempting to load that class.

        The problem was solved by a code change to ensure the ClientRuntimeDescriptor uses the current classloader, if it is a GenericClassLoader.

        In WebLogic Server 6.1 SP04, the WLECConnectionRuntime MBeans were not updated when an INVOKE was issued on WLECConnectionPoolRuntime using Admin tool.

        Analysis revealed that when resetConnectionPool() was invoked on the WLECConnectionPoolRuntime MBean, the pool was not reset. Old connections were not removed

        The problem was solved with a code change. Now, the mbeans that correspond to old connections are unregistered before the resetConnectionPool() invocation.

        In WebLogic Server 6.1 SP05, a deadlock in weblogic.socket.PosixSocketMuxe r was detected when a Managed Server could note connect to the Administration Server. This is an extract from the thread dump:

        1wasLKDEADLOCK Deadlock detected!!!
        NULL
        NULL
        2LKDEADLOCKTHR Thread "ExecuteThread: '0' for queue:
        '__weblogic_admin_rmi_queue'" (0x8461B8A0) 3LKDEADLOCKWTR is waiting for:
        4LKDEADLOCKMON sys_mon_t:0x84D183A8 inflaming: 0x00000000: 4LKDEADLOCKOBJ weblogic.socket.PosixSocketMuxer$FDRecord@31FD4B10/31FD4B18:
        3LKDEADLOCKOWN which is owned by: 2LKDEADLOCKTHR Thread "ExecuteThread: '98' for queue: 'default'" (0x767D26E0)
        3LKDEADLOCKWTR which is waiting for:
        4LKDEADLOCKMON sys_mon_t:0x83AD8C18 inflaming: 0x00000000:
        4LKDEADLOCKOBJ weblogic.rjvm.ConnectionManagerServer@31FA3430/31FA3438:
        3LKDEADLOCKOWN which is owned by:
        2LKDEADLOCKTHR Thread "ExecuteThread: '0' for queue: '__weblogic_admin_rmi_queue'" (0x8461B8A0)

        The following exception is also thrown:

        java.rmi.ConnectException: The connection manager to ConnectionManager for: 'weblogic.rjvm.RJVMImpl@2a7512ad - id: '8419466038107054512S:10.32.197.52:[7001,7001,-1,-1,7001,-1,-1]:bossapp:AdminServer' connect time: 'Fri. Aug 01 09:43:07 CST 2003'' has already been shut down at weblogic.rjvm.ConnectionManager.getOutputStream(ConnectionManager.java(Compiled Code)) at...

        Analysis revealed that PosixSocketMuxer hit the deadlock due to contention for the FDRecord and ConnectionManage r locks. One thread holds the FDRecord lock and waits for a ConnectionManager lock, which is held by another thread which is waiting for the FDRecord lock to do a cleanup.

        A code fix removed the contention. Now, the FDRecord lock is not held during dispatch.

        For context-wide sessions, WebLogic Server did not check if an object was Serializable before placing it in the session. This could lead to the error:

        Could not deserialize context attribute
        java.io.NotSerializableException:
        com.app.name
        at
        java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java(Compiled Code))
        at
        java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Compiled Code))
        at
        weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java(CompiledCode))
        at
        weblogic.servlet.internal.WebAppServletContext.getAttribute(WebAppServletContext.java(Compiled Code))
        at
        weblogic.servlet.internal.WebAppServletContext.getAttribute(WebAppServletContext.java(Compiled Code))

        The code was modified so that setAttribute() checks for a serializable object before adding it to the session.

        When starting several T3 clients on the same machine simultaneously, there was a possibility that two or more of the clients could obtain the same JVMID, cause exceptions or hanging on the clients. The problem occurred only when starting multiple T3 clients on the same machine at the same time. This problem was solved by modifying the code used to generate JVMIDs.

        Prior to WebLogic Serve Service Pack 6, all server instances in a cluster used the server listen port as the multicast port for cluster communication. There was no way for a cluster to use a multicast port different from the server listen port.

        This Service Pack introduces a new, optional Java property, -Dweblogic.cluster.multicastport= port_number , to specify the multicast port used in a cluster. To use the new property, all cluster members must specify the same -Dweblogic.cluster.multicastport value in their startup scripts.

        If the -Dweblogic.cluster.multicastport is not specified at startup time, servers continue to use the listen port as the multicast port for cluster communication.

        Prior to this Service Pack release, WebLogic Server did not log a nested exception associated with a deployment error. The logged text indicated only the deployment error, as in:

        <Mar 28, 2003 1:10:51 AM PST> <Error> <J2EE> <Error deploying application application_name: Caught IOException for path=path_to_application>

        The code was modified to log the nested exception as well as the deployment error itself, as in:

        <Mar 28, 2003 1:10:51 AM PST> <Error> <J2EE> <Error deploying application_name: with deployment error Caught IOException for path=path_to_application and nested error java.io.FileNotFoundException: File not found>

        A CMP2.0 EJB accessing an Oracle database did not timeout when the database was locked.

        The problem was exhibited when running the ejb2.0 cmp example, with trans-timeout-seconds to a non-zero value such as "10", against a locked database table (the table was locked using SQLplus "lock table ejbaccounts in exclusive mode"). When the table was locked, and the client ran, the client hung indefinitely trying to create an account. After the database lock was released using SQLplus, a rollback exception occurred in the client. The rollback should occur when at the end of the transaction timeout.

        Analysis revealed that, when the timeout period expired, and the timer sent a TransactionRolledBack message to the database, the database did not release the lock.

        The problem was resolved, for the Oracle thin driver, for row-level locks by: