|
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.
[java] ERROR: Error from ejbc: Error while reading 'META-INF/ejb-jar.xml' or 'META-INF/weblogic-cmp-rdbms-jar.xml'.
|
|
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.
|
|
CR122203
|
The EJB specification requires cmp and cmr fields to start with lower case characters. Some charsets, however, do not have a notion of upper or lower case. If such a charset was used, our compliance checker would throw an exception because the cmp\cmr fields didn't start with lower case.
Now, the compliance checker only throws the compliance exception if the cmp\cmr field starts with an upper case letter and not if the charset has no notion of upper or lower case.
|
|
CR127369
CR195223
|
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.
|
|
CR128850
|
Even after setting enable-call-by-reference to false, a method parameter was being passed by reference. This behavior is correct. The parameter was being passed by reference instead of by value because it was not serializable.
Now, if enable-call-by-reference is set to false and business methods of the remote interface have argument types that are not serializable, WebLogic Server shows a warning to explain that the parameter will be passed by reference.
|
|
CR131561
|
TableQuery verification for a CMP EJB was causing a full table scan on the DB2 database that was running on the host because the WHERE-Clause of the verification query was not being optimized by the DB2 query optimizer. This resulted in long query execution time.
Now, the "FETCH FIRST 1 ROWS ONLY" option instead of the "WHERE 1=0" option is used for DB2 database-type in the case of TableQuery validation. As a result, performance is now optimized.
This change is specific to the DB2 database type and is not applicable to any other database type. Other database types still use "WHERE 1=0" in the case of TableQuery validation.
|
|
CR132853
|
When a Message Driven Bean uses the synchronous message polling scheme, it has issues when the Sonic jms server is used. The message driven bean container's polling optimizations could result in a delay in the message receiving.
To avoid this problem, do not use the optimized poller. As the Sonic message delivery scheme does not work well with this scheme, use a poller that continuously polls the Sonic jms server.
This new Message Driven Bean behavior is applicable to TIBCO and Sonic jms providers only
See also CR128980, CR135722
|
|
CR135125
|
When a setter method for a read-only EJB was called, the setter was not executed but no exception was being thrown.
Now, if a setter for a read-only EJB is called, WebLogic Server throws the EJBException.
|
|
CR173231
CR189040
|
When an inner class was passed as an argument to an EJB method, such as ejbCreate, the generated code did not convert the inner class argument to a correct representation.
WebLogic Server has now fixed code generation so that it converts the inner class argument to a correct inner class representation.
|
|
CR173260
|
WebLogic Server was throwing an OptimisticConcurrencyException when order-database-operations was set to true, and if an entity bean was removed and created with the same Primary Key in the same transaction.
Now, WebLogic Server does not throw the OptimisticConcurrencyException under these conditions.
|
|
CR175158
|
BMP Entity beans using the Exclusive concurrency strategy and loaded into the cache did not timeout upon idle-timeout-secs expiration. The same BMP beans did timeout for other types of concurrency strategy such as database, readonly and optimistic.
BMP beans using the Exclusive concurrency strategy are now scrubbed from the cache after being idle for idle-timeout-seconds.
|
|
CR177114
|
WebLogic Server was throwing an exception when verifying the sequence during EJB deployment if:
1) a global synonym was being used and no schemaName was specified or
2) the sequence was owned by a user other than the user who created the connection pool for the EJB.
Now, WebLogic Server verifies the Oracle sequence against the ALL_SEQUENCES view even if the schema name has not been specified. As a result, WebLogic Server no longer throws the verification exceptions during EJB deployment.
|
|
CR178404
CR192516
|
If the NOT logical operator was used in a WHERE clause and its operand was a conditional expression which included an OR operator (for example, WHERE NOT (lefthand_cond_exp OR righthand_cond_exp)), a NullPointerException occurred while parsing a query.
WebLogic Server now handles the OR operator properly.
|
|
CR183557
|
CMR collection contained two relationship entities instead of one when the parent and child were created in one transaction. This manifested only when the bean used auto-key-generation for SqlServer and delay-database-insert-until was set to ejbCreate.
Changes were made to correct the issue.
|
|
CR184154
|
The Weblogic Server generated java class for weblogic-cmp-rdbms-jar.xml during ejbc released the Resultset incorrectly. This caused the JDBC log to overflow with "java.sql.SQLException".
Code was added which corrected the order in which the JDBC objects are closed in the EJB generated code.
WebLogic Server now releases the correct Resultset.
|
|
CR184780
CR128984
|
An Oracle SELECT_HINT that was defined for a finder in a weblogic-ql element was not being included in the generated SQL query.
Now, it is included.
|
|
CR186325
|
In WebLogic Server 8.1, compliance check was added so that key-cache-size had to be equal to the increment value on the sequence in the database. If the key-cache-size was not equal to the database increment value, WebLogic Server threw the following error during deployment:
The ORACLE SEQUENCE named 'test_sequence' with INCREMENT value '1' '[EJB:011065]The ORACLE SEQUENCE named 'test_sequence' does not have INCREMENT value '1' in the database'
Now, WebLogic Server allows the key-cache-size to be less than or equal to the increment value of the sequence in the database. An exception is thrown only if the key-cache-size value is greater than the increment value in the database because that may result in duplicate keys being generated.
The following rules are followed while verifying the sequence during the deployment of the EJB:
1) Allow key-cache-size < DB INCREMENT_BY with a warning that missed keys (10, 20, 30) would be generated.
2) Allow key-cache-size = DB INCREMENT_BY. This is as it works now.
3) Disallow key-cache-size > DB INCREMENT_BY and disallow the deployment as it could generate duplicate keys.
Other rules regarding the different values of <create-default-dbms-tables> have been modified accordingly.
In general, Prod sequences (i.e., sequences defined by the user) are not altered. Dev sequences (i.e., sequences created by Web Logic Server) are altered.
If a sequence generation in the order of 1, 5, 10 ... or negative sequence generation -1, -5, -10 ... is required, set the key-cache-size to 1 with INCREMENT_BY in the database to 5. However, because the key-cache-size is 1, the container always goes to the database to get the next autoKey and thus follows the INCREMENT_BY set in the database sequence.
|
|
CR186949
|
The EJB container was starting the JMS connection before creating the initial number of beans in the free pool. This sometimes caused the container to instantiate another bean instance to process the message delivered to the container.
WebLogic Server now creates the configured number of initial-beans-in-free-pool instances before starting the JMS Connection to accept messages.
|
|
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.
|
|
CR187304
|
When using Database concurrency strategy, if a BMP tried to create a duplicate row in the same transaction, a ClassCastException occurred.
When creating beans, WebLogic Server now checks if the bean already exists.
|
|
CR188022
|
In certain conditions while inserting rows at commit time, the EJB container threw a DuplicateKeyException reporting an incorrect primary key as the cause.
The exception handling was simplified while inserting rows during commit time. When inserting a Batch of statements, if there is a SQLException, then it is thrown as is. The SQLException will have the details of the failure. This is because of driver limitations around reporting the exact statement within the batch that caused the failure.If the row is not inserted as a part of the Batch, only then a check will be done to detect a Duplicate key and report it.
|
|
CR188814
|
PreparedStatement and ResultSet were not closed after updating a BLOB or CLOB column.
WebLogic Server now closes PreparedStatement and ResultSet when updating a BLOB/CLOB.
|
|
CR189544
|
When an inner class within an inner class was passed as an argument to an EJB method, the incorrect code was being generated.
WebLogic Server now converts the inner class representation and handles an inner class within an inner class correctly.
|
|
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.
|
|
CR190831
|
When an array of inner class was being used for the EJB method return type, the incorrect code was being generated.
Now, WebLogic Server converts the inner class representation and generates the correct code when handling an array of inner class.
|
|
CR191003
CR186958
|
Validation with MetaData was failing while deploying an EJB when the fk-column of a bean also mapped to a cmp-field in the same bean.
Now, when the foreign-key column of a bean also maps to a cmp-field in the same bean WebLogic Server does not add the fk-column if it has already been added. As a result, validating the column names when using MetaData no longer fails.
|
|
CR191351
|
Automatic Key Generation was generating the new key from the default number in the database plus the cache size which is defined by <key-cache-size>.
Now, WebLogic Server has added the select-first-sequence-key-before-update tag in the auto-key-generation. This tag is used to specify the behavior of automatic primary key generation.
If the select-first-sequence-key-before-update is set to true, and when the EJB container needs to fetch the sequence value from a database, it generates the primary key from the current value plus one in the sequence table and updates the value in the table with the current value plus the key-cache-size. For example, when the current value in the sequence table is 100 and the key-cache-size is 100, the EJB container generates the primary key with 101 (the current value plus one in the table), and updates the value in the table with 200 (the current value plus the key-cache-size).
By default, the select-first-sequence-key-before-update is set to false.
|
|
CR192682
CR106774
|
When using EJB CMPs, WebLogic Server was translating the EJB-QL keyword, between, to >=? AND <=?. As a result, queries (especially on large tables) with DB2 on some platforms were taking a long time.
Now, the queries on DB2 run faster because they use the EJB-QL keyword, between, instead of, >=? AND <=?.
|
|
CR193685
|
Container-managed persistence (CMP) now uses PreparedStatement to execute SQL.
|
|
CR197639
|
CMP20 EJBs in WebLogic Server now support automatic primary key generation for DB2 and Informix databases.
|
|
CR198962
CR201394
|
The EJB Compiler was giving errors when compiling EJBs that had ejbSelect queries that used IS EMPTY or IS NOT EMPTY in the WHERE clause.
The ejbSelect queries no longer cause errors under these conditions.
|