Release Notes

Oracle® JDeveloper 10g

Release Notes

Version 10.1.2

November 2004

Content

Introduction

Oracle JDeveloper 10g is an Integrated Development Environment (IDE) for building applications and Web services using the latest industry standards for Java, XML, and SQL. Oracle JDeveloper supports the complete development life cycle with integrated features for modeling, coding, debugging, testing, profiling, tuning, and deploying applications.

A visual and declarative approach and the innovative Oracle Application Development Framework (Oracle ADF) work together to simplify application development and reduce mundane coding tasks, offering developers unparalleled productivity and their choice of technology stack.

Oracle JDeveloper offers an Extension SDK that lets you add capabilities and customize your development environment. To learn more about Oracle JDeveloper, and to catch up on the latest news, visit JDeveloper’s home page on the Oracle Technology Network (OTN), at http://otn.oracle.com/products/jdev. Also available on this site is the Oracle JDeveloper 10g Release Notes Addendum, which contains additional information not available at the time of this document's publication.

What's New in JDeveloper 10.1.2

While primarily a maintenance release, JDeveloper 10.1.2 adds a small number of new features:

Offline Database Objects

In the Import Offline Database Objects Wizard, the schema selection is now the last step. This was done to allow the schema to be defaulted to the online schema name for TopLink projects.

Struts Page Flow Diagram

  • Rendering and general responsiveness of large diagrams has improved for dynamic projects.
  • Performance of Struts editing is further improved by only validating the xml against the DTD when the project is compiled or when the developer chooses to explicitly validate it from the context menu, rather than every time that the Struts editor gains focus.
  • It is now possible to create actions that are not prefixed with a "/". This means that you can create private actions that are not directly accessible from a browser by specifying a page name without an initial "/" character. Conversely, if you need your action to be accessible from a browser directly, include the "/" at the start of the name.

Improvements in the Business Components Wizards

The Business Components Wizard and View Object Wizard have been updated to make it easier for you to implement the Fast Lane Reader design pattern. When you create a new view object, you now have the option to create a view object with data that is populated by a read only SQL query. In this model, all data is stored in the view cache, which results in very fast performance on repeated queries.

ADF Business Components Performance Improvements

ADF Business Components performance has increased substantially in this release. You do not have to make any modifications to your code or architecture. Just recompile your application in this release, deploy, and run it. Depending on the type of application you are using you could see up to a 30% improvement in performance.


Data Binding

The fix for bug 3077519 BLANK NEW ROW PROBLEM IS BACK FOR WEB APPS has resulted in a small change to data binding design time. This bug in JDeveloper 9.0.5 causes a blank row to be inserted into a browse form when the user clicks a button to add a new row in a blank form, then clicks the browser's back button to go back to the browse form.

For web pages bound to ADF Business Components, this behavior has now been changed: by default, when the user hits the back button, they will no longer see a blank row. If you want your pages to use the old behavior instead, the steps are as follows:

  • With your web page or struts page flow diagram open in the editor, go to the UI model tab in the structure pane.
  • Edit the action binding for the Create operation.
  • In the dropdown list, select the CreateInsert action, replacing the Create action which is shown by default.

Embedded OC4J

JDeveloper 10.1.2 includes embedded OC4J version 10.1.2. For enhancements and bug fixes to OC4J 10.1.2, please see the OC4J release notes.

JDBC Drivers

JDeveloper 10.1.2 is distributed with the Oracle JDBC drivers from Oracle Application Server 10.1.2.

ADF Runtime in Oracle Application Server 10.1.2

Oracle ADF runtime libraries are included in Oracle Application Server 10.1.2. This means that if you are deploying ADF applications to Oracle Application Server 10.1.2, you do not need to run the ADF Runtime Installer to install the ADF libraries in the application server.

Migration Issues

JDeveloper 9.0.3 PL/SQL Web Service has Compile Errors When Regenerated (3023311)

If you open a JDeveloper 9.0.3 project and attempt to regenerate a PL/SQL web service in that project, it will be left in an uncompilable state afterwards.

Workaround:

  • Before you regenerate the service, remove from the project all of the Java files directly related to the service package and any object types used by that service.

Regeneration of Migrated Web Service May Result in an Incomplete Deployment Profile (3506154)

When you regenerate a web service that has been migrated from a previous version of JDeveloper, you may find that the regenerated interface is missing from the deployment profile which will cause the deployed service to be inaccessible.

Workaround:

  • Use the deployment profile dialog to manually include the missing file, then redeploy the service.

WS-I Test Tools Location Must be Entered Again (3535897)

If you migrate user settings from JDeveloper 10g Preview, the location of the WS-I test tools will appear to be correct, however you have to enter the location again to populate a hidden field which is necessary for the analyzer code to function correctly.

Go to Tools | Preferences and choose WS-I Testing Tools. Re-enter the home location for the testing tools by browsing to the folder or by typing in the location.

Migrating Struts Applications to Oracle JDeveloper 10g

Struts applications created in Oracle9i JDeveloper or other tools may not compile correctly after being migrated to Oracle JDeveloper 10g production release. This may happen even if the applications were previously successfully migrated to Oracle JDeveloper 10g preview release.

If you have a Struts application that no longer compiles correctly after migration to JDeveloper 10g, the migration process may have incorrectly removed the struts.jar file from your WEB-INF/lib directory.

To correct Struts compilation errors after migration:

  • Copy the correct struts.jar file from the JDeveloper_installation_directory/jakarta-struts/lib directory into your project's WEB-INF/lib directory.

Default Iterators for View Object Rowsets Advance to First Row When Bound to ADF Iterator Bindings

The new ADF iterator bindings in JDeveloper 10g cause the iterator to which they are bound to advance to the first row in the rowset. This is the optimal behavior for the UI rendering of those rows, and the behavior is required for ADF iterator bindings to work correctly with standard JSP tag libraries like JSTL.

However, this new behavior can cause trouble for existing application logic when you migrate a BC4J application to JDeveloper 10g and begin to add new ADF iterator bindings to your application. Consider the following hypothetical application module method representing some user-written business logic.

public boolean employeeExists(Number empno) {
  EmpViewImpl eview = getEmpView();
  eview.setWhereClause("empno = :1");
  eview.setWhereClauseParam(0,empno);
  eview.executeQuery();
  /*
   * MIGRATION CAVEAT
   * ~~~~~~~~~~~~~~~~
   * When no ADF iterator bindings are bound to the "EmpView"
   * view object instance -- more precisely, to the default iterator
   * of its default rowset -- then immediately after executeQuery()
   * the iterator will be at the slot before the first row. Assuming
   * this query retrives a single row, then the eview.hasNext() will
   * be true, since we haven't yet advanced to the first row.
   *
   * When an ADF iterator binding is bound to "EmpView" then after
   * the executeQuery() the iterator will advance to sit on the first
   * row of the result -- in this case, the only row in the result --
   * and the eview.hasNext() will return false.
   */
  if (eview.hasNext()) {
    return true;
  }
  else {
    return false;
  }
}

The issue can also surface in middle-tier business logic which is written to loop over rowset results and perform some operation on each row. Examples include calculating the sum of some numeric attribute in each row, but not limited to this. For example, you might have code like:

public Number shoppingCartTotal() {
  ShoppingCartImpl cart = getShoppingCart();
  cart.reset();
  double total = 0;
  /*
   * MIGRATION CAVEAT
   * ~~~~~~~~~~~~~~~~
   * When no ADF iterator bindings are bound to the "ShoppingCart"
   * view object instance, then immediately after the reset() call above
   * the iterator will be at the slot before the first row. The loop
   * below will operate over all N rows in the rowset coded like this.
   *
   * When an ADF iterator binding is bound to "ShoppingCart" then after
   * the reset() call, the iterator will advance to sit on the first
   * row of the result. If the loop code is not changed, then it will
   * operate on the 2nd through the Nth rows, missing the first row.
   */
  while (cart.hasNext()) {
    ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cart.next();
    total += curCartItem.getExtendedTotal().doubleValue();
  }
  return total;
}

There are two basic solutions to the issue:

  1. Where just testing whether the first row exists, use the first() API and test whether it is null or not.
  2. Where performing iteration over the rowset, use the createRowSetIterator() API to create a secondary iterator for use in middle-tier programmatic business logic instead. Remember to call closeRowSetIterator() on the iterator when you are finished with the loop if you do not want the iterator to remain around and active.

Use these best-practices for new code that you write as well. Following the two pieces of advice above, the two examples illustrated above would be rewritten like:

public boolean employeeExists(Number empno) {
  EmpViewImpl eview = getEmpView();
  eview.setWhereClause("empno = :1");
  eview.setWhereClauseParam(0,empno);
  eview.executeQuery();
  /*
   * Using first() instead of hasNext() to test for existence of
   * at least one row in the result since default iterator might be
   * bound to an ADF iterator binding being used in the view layer
   */
  if (eview.first() != null) { /* Using first() instead of hasNext() */
    return true;
  }
  else {
    return false;
  }
}

and

public double shoppingCartTotal() {
  ShoppingCartImpl cart = getShoppingCart();
  /*
   * Using secondary iterator since default iterator
   * might be bound to an ADF iterator binding being used
   * in the view layer
   */
  RowSetIterator cartIter = cart.createRowSetIterator(null);
  double total = 0;
  while (cartIter.hasNext()) {
    ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cartIter.next();
    total += curCartItem.getExtendedTotal().doubleValue();
  }
  cartIter.closeRowSetIterator();
  return total;
}

Migrating Projects that Use bc4jhtml.jar

The ADF BC runtime archive bc4jhtml.jar has split in this JDeveloper release. If your migrated project uses bc4jhtml.jar, you should update the classpath so that it contains both <JDEV_HOME>/BC4J/jlib/bc4jhtml.jar and <JDEV_HOME>/BC4J/lib/adfmweb.jar.

Migrating JClient Projects with Java Web Start and JNLP

If your JClient application relied on Java Web Start, the bc4jlibs.ear file in JDeveloper 9.0.5.2 and earlier contained the jndi.jar. Starting in JDeveloper 10.1.2, this JAR file is no longer needed (since it is now available as a standard JDK 1.4 extension). It is necessary to remove the jndi.jar file from your bc4jlibs.ear file when you want to migrate a 9.0.5.x JClient application to 10.1.2.

Custom JClient Error Handler Dialog Migration

When upgrading a JClient-based application from 9.0.3/9.0.4 to JDeveloper 10g (9.0.5 or 10.1.2), if the application has a custom error dialog which does not extend oracle.jbo.uicli.controls.JUErrorHandlerDlg, then their custom error handler dialog will need to implement the new oracle.adf.model.binding.DCErrorHandler interface. This can be done by delegating to their existing implementation of the reportException() method in their implementation of the oracle.jbo.uicli.binding.JUErrorHandler interface.

EJB: Migration of OC4J 9.0.x Native CMP Mappings

When migrating an EJB application containing CMP Entity beans that use the OC4J native (i.e. not TopLink) CMP mappings, users must perform a simple operation before the application can be redeployed to a 10.1.x OC4J server.

  1. Choose a CMP Entity bean, right-click on its EJB node in the JDev navigator and select 'Edit CMP Mappings...'. (Note: this menu item will only appear if the CMP Entity bean is mapped using OC4J native CMP mappings. If the context menu item does not appear, the Entity bean is not mapped using OC4J native mappings, so no migration step is needed.)
  2. Once the CMP Mapping Editor opens and the 'CMP Field Mappings' tree node is selected, click on the 'Relationship Mappings' tab and visit each relationship in which the CMP Entity bean participates. Simply visiting the panel will cause the new data to be saved when the panel is exited.
  3. While still in the CMP Mappings editor, repeat this process for each CMP Entity bean in the EJB module. When done, exit the mapping editor by selecting 'OK' to apply the changes.

Once these steps have been performed, the EJB module is ready to be deployed to an OC4J 10.x server.

Trouble Migrating Web Applications from Oracle9i JDeveloper 9.0.4 (3672145)

When you attempt to compile a web application from JDeveloper release 9.0.4, you may receive the following error:

/WEB-INF/ojsp-global-include.xml:oracle.xml.parser.v2.XMLParseException: Unexpected text in content of Element 'ojsp-global-include'

To fix the problem, edit the /WEB-INF/ojsp-global-include.xml file and change the element

<?xml version="1.0" standalone='yes' ?>

so that it reads

<?xml version="1.0" standalone='no' ?>

Migration Dialog May Display when Migrating from 9.0.5.1 to 10.1.2 (3797912)

When you migrate an application from Oracle JDeveloper 10g release 9.0.5.1 to release 10.1.2, the Migration dialog may open, even though the technology stack has not changed between these releases. You can safely ignore this dialog.

Oracle-Style Bind Parameters Work Differently (3848733)

Oracle JDeveloper releases 9.0.5.2 and earlier contained a version of JDBC that did not provide strict error checking for Oracle-style bind parameters. This allowed expressions that contained more than one bind parameter with the same name, such as:

WHERE SALARY > :1 AND DEPARTMENT = :2 AND MANAGER_ID = :1

Both the first and third parameter in the above expression are named ":1", an error that was not caught by earlier versions of JDBC.

The earlier version of JDBC also did not catch errors involving spaces between colons and numerical portions of parameter names. ": 1" (with a space) is not a legal Oracle-style bind parameter, but the earlier version of JDBC did not catch this error.

The version of JDBC included with Oracle JDeveloper 10g (release 10.1.2) provides stricter error checking, and will throw an exception on expressions like the above where clase, or parameters containing spaces. If you are migrating an application from an earlier version of JDeveloper, and the application contains expressions with non-unique oracle-style JDBC bind parameters, you must change the parameter names to ensure they are unique within the expression. For example, the previous expression could be changed to read:

WHERE SALARY > :1 AND DEPARTMENT = :2 AND MANAGER_ID = :3

You should also ensure that none of your bind parameter names contain spaces, and should change your calls to ViewObject.setWhereClauseParam() and ViewObject.setWhereClauseParams()  to ensure that all parameter values are still supplied. For example, for a view object definition with the above WHERE clause, the instruction

setWhereClauseParams(new Object[]
{
  value1,
  value2
}

should be replaced by

setWhereClauseParams(new Object[]
{
  value1,
  value2,
  value1
}
 
Migrating EJB CMR Relationships to Oracle10g JDeveloper Release 10.1.2 (3667211)

If you are migrating to release 10.1.2 from a previous release and have CMP EJB entity beans with CMR relationships, you need to update those relationships. Simply select each relationship in the CMR Mapping Editor, and JDeveloper will automatically update it appropriately.

Migrated 9.0.X UIX/BC4J/JSP Applications Do Not Have UIX Resources and Styles Available (3365125)

If you migrate a 9.0.X UIX/BC4J/JSP complete application project to JDeveloper 10g and then run the application, the UIX resources and styles are not seen at runtime. This is because the migration process only removes objects and files that are related to prior versions of the product; it does not add the new installables.

Workaround:

  1. Migrate your applications.
  2. Rebuild the model and view projects individually for your 9.0.X applications to add the latest UIX resources and styles.

Deployment Issues

XSQL Page Processor Cannot Read Pages from Unexpanded Servlet 2.2 WAR File (1552039)

Cannot run XSQL pages in WebLogic 6.1/7.0, JBoss 3.0.4, or Tomcat 4.1.12.

Type Incompatibilities when Deploying to WebLogic

Some applications deployed to WebLogic may have type incompatibilities if you use the BEA supplied Oracle classes. To ensure that you don't have these problems, replace the supplied classes12.zip and classes12.jar file in your server's lib directory with classes12.jar in the <jdev_install>/jdbc/lib directory.

WebLogic6.1 Fails to Understand 'Windows-1252' Encoding in XML Files

WebLogic6.1 fails to understand Windows-1252 encoding in the xml files. This is a bug in the xmlparser in WebLogic6.1. To deploy applications in JDeveloper to WebLogic6.1 change encoding to an IANA encoding that WebLogic6.1 recognizes. It is recommended to use UTF-8 encoding. Japanese users need to use Shift_JIS.
  1. Open Tools | Preferences.
  2. In the Environment panel change the Encoding field to UTF-8.
  3. Click OK.
Now create a new project and your application.

ejb-ref in web.xml not Updated if the Bean Type is Changed from Remote to Local (2589997)

Creating a JSP application for a BC4J session facade results is an ejb-ref entry in the web.xml of the that project. If you change the interface type of that facade, from local to remote or vice versa, then you must update the ejb-ref entry in web.xml. For example if you change the bean type from remote to local then you must replace the <ejb-ref> section in web.xml with the appropriate <ejb-local-ref> tags.

Proper Deployment Profiles not Shown for Projects with ADF UIX Technology Scope (3316426)

When working with a project that has only the ADF UIX technology scope assigned, in the "New Gallery" dialog the proper list of deployment profiles does not display with the filter set to "Project Technologies". Switching the filter to "All Technologies" will display the full list of deployment profiles.

Additional Details for Deploying UIX Applications to WebLogic (3390872)

In addition to the provided documentation for deploying UIX applications to WebLogic, the following additional details may be helpful:

  1. When extracting the EAR/WAR archive files, the target directory for the archive contents must have the same name as the archive. For example, if you are extracting webapp1.ear which contains webapp1.war, you must have the following structure on disk: /webapp1 (EAR contents) /webapp1/webapp1/ (WAR contents)
  2. After extracting the archives you need to edit the application.xml in the EAR file to point to the expanded directories instead of pointing at the WAR files.
  3. After expanding the EAR and WAR files, these should be deleted, as only the extracted files are part of the application.

Configuring Persistence-Manager in orion-ejb-jar.xml not Supported for OracleAS 10.1.2

When you deploy container-managed persistence (CMP) entity beans from JDeveloper 10.1.2 to OracleAS 10.1.2 and previous versions, you can't configure persistence-manager settings in orion-ejb-jar.xml. These settings will cause a deployment error.

Starting ADF Application Exception in Websphere 5.1 (3590864)

If you start an ADF BC4J JSP application after EAR deployment to WebSphere 5.1 the application may fail, writing exceptions similar to the following in the application server log:

Exception:
AppDeploymentException: [ADMA0092E: Unexpected exception occurred while preparing task MapRunAsRolesToUsers. Please check server machines FFDC for more information.]
AppDeploymentException: []
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml
AppDeploymentException: []
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml
com.ibm.etools.archive.exception.DeploymentDescriptorLoadException:
WEB-INF/web.xml

To correct this exception, remove the <filter-mapping> attribute from application's web.xml file.

Additional Details for Deploying UIX Applications to WebLogic (3390872)

In addition to the provided documentation for deploying UIX applications to WebLogic, the following additional details may be helpful:

  1. When extracting the EAR/WAR archive files, the target directory for the archive contents must have the same name as the archive. For example, if you are extracting webapp1.ear which contains webapp1.war, you must have the following structure on disk: /webapp1 (EAR contents) /webapp1/webapp1/ (WAR contents)
  2. After extracting the archives you need to edit the application.xml in the EAR file to point to the expanded directories instead of pointing at the WAR files.
  3. After expanding the EAR and WAR files, these should be deleted, as only the extracted files are part of the application.

ADF DataAction for Struts Known Issues

Best Practice for ADF Binding to Method Results

In an ADF-based Struts web application, when trying to display data on a page that is the result of a declarative method invocation on your data control, we recommend performing the method invocation in a separate DataAction (with its own binding container) that, in turn, forwards to the DataAction or DataPage that will perform the rendering of the method's results. An attempt to execute the method declaratively via a method action binding in the same binding container as the iterator bound to its results, can run into problems.

ADF Business Components Issues

Don't Use "Scan Source Path" Project with ADF Business Components (3508285)

The JDeveloper project option "Scan Source Paths to Determine Project Contents" does not work reliably for ADF Business Components. For this release, we recommend not using this project option if your project contains any ADF business components.

No Such Method Error For ADF BC4J JSP Application in WebLogic 8.1.2 (3739767)

If you run an ADF BC4J JSP application in WebLogic 8.1.2 you may see the following error:

java.lang.NoSuchMethodError:
javax.xml.namespace.QName.(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

To correct this error, add these items to the WebLogic server classpath before running the application:

xmlparserv2.jar
adfmweb.jar

View Object Custom Methods In Batch Mode (3274140)

When running in "batch mode", client-side code making use of a custom ADF View Object interface must do so by first returning the view object (cast to this custom interface) from a application module custom method. Otherwise, a ClassCastException can be thrown.

Authentication Using LDAP Does not Work with Standalone OC4J (3903758)

If you are using standalone OC4J (rather than a complete installation of Oracle Application Server) to run your ADF Business Components, you will not be able to use LDAP to provide identity management for authentication or authorization. This has two consequences for applications that use LDAP to provide identity management:

* You must deploy them to a complete installation of Oracle Application Server, rather than standalone OC4J
* You cannot define entity-by-entity authorization in JDeveloper if you use LDAP to provide identity management, because the JDeveloper design time relies on standalone OC4J.

This issue will be fixed in the next release of JDeveloper.

ADF UIX Issues

Third-party Popup Blockers and Toolbars May Interfere With ADF UIX (2900583)

Certain ADF UIX components (date pickers, list of values, etc.) use external popup windows to allow the user to select values without moving to another page. Some third party toolbars interfere with these windows by not allowing them to communicate back to the base page, as is allowed in HTML. The only current workaround is to disable popup blocking for sites with UIX content.

Javascript Compression May Cause Errors in ADF UIX

Due to a bug in Microsoft Internet Explorer, routines used by ADF UIX to load Javascript libraries may not function properly if the server hosting UIX has enabled compression of Javascript files, an optional performance optimization. ADF UIX does not perform this optimization by default, but it can be configured in some servlet containers or via Oracle's Web Cache technology. To work around this, do not compress Javascript libraries to be loaded by UIX applications.

This issue does not affect other browsers.

UIT Templates not Available for Context Menu Insertion (3038299)

Under certain conditions all of the .uit templates in a project may not appear on the context menu for insertion into a UIX page. Performing a Save All operation will force all the templates in the project to be available.

Setting Source Attribute for UIX Image Component Fails if Image on Different Drive (3458363)

When setting the source attribute for an UIX image component, if you choose an image that is outside of your html_root directory and located on a different drive than JDeveloper is installed, the optional copying of the file into the html_root fails. Workaround is to manually move/copy the image file in the file system.

Live Data in UIX Preview

UIX Preview does not support showing live data for pages bound using ADF Data Controls in this release.

Apache Struts Restrictions

Multiple Struts Application Modules within a Single Project not Supported

This release of the Struts diagramming can only support a single Struts Diagram per workspace project. Multiple Struts configuration files should be split off into individual projects. A detailed document describing how to handle multiple configuration Struts applications can be found on the OTN JDeveloper How-To page: (http://otn.oracle.com/products/jdev/howtos/index.html)

Only Partial Support for Tiles Based Applications

Tiles based applications can be used with Struts in JDeveloper 10g, however, it is not possible to use the page flow diagrammer view with such applications. Direct editing of the Struts Configuration file, the Struts Console editor, and the use of the Structure pane and property inspector are still all available to developers of Tiles based applications.

<welcome-file> Entries in Web.xml (3423938)

When an Action is defined as the default start action of a Struts Page flow (using the context menu in the page flow diagram), the project properties are updated to make the designated action the default run target. Additionally, if the starting action is a Forward Action the web.xml <welcome-files> collection is updated with a new <welcome-file> entry for the designated page. In some cases you may want to amend this entry in web.xml to use a page which redirects to a Struts action rather than the underlying ActionForward's page. Additionally, if the default start action is set several times in a project, multiple entries may be added to the welcome file list.

Action Attribute Must be Edited When Using HTML Form in JSP Pages (3452660)

When the component you insert into a Struts-based web page requires a Form element, such as an input field, JDeveloper will prompt you to insert the component inside a Form that it creates for you. The Form element is used at runtime to submit the values with the Request object and contains placeholder text to specify the target Struts action:

<html:form action="/Handle_This_Form.do">

You must edit the action attribute to specify the name of the action that your page flow uses to handle the form input. For example, change /Handle_This_form.do to /MyActionName.do when the name of the action is MyActionName.

Drag and Drop of Method on to Data Page/Action Fails with Overlapping Forward Label (3443358)

When working in the struts page flow modeler if the text label of a forward is positioned so that it overlaps a data page/action, it can be difficult to drag methods from the data control palette on to the data page/action. Moving the forward label off of the data page/action will allow successful drag and drop of methods on to the data page/action.

Directory WEB-INF Does not Exist Message is Shown in Console (3976907)

When designing or running a simple struts Application you may get an erroneous message on the console:

Directory C:\WEB-INF does not exist. 

This message can be safely ignored.

Data Binding Issues

Avoiding Performance Problems Fetching Data or Retrofitting Client Side Cache (3278854)

To avoid performance problems in fetching data or retrofitting client side cache with a modified rangeSize, it's advised to set the same rangeSize for all usages of a RowSetIterator associated to iterator bindings in multiple binding containers of the same application/application flow.

Scalar Attributes Returned by Bean Accessors (3389123)

Scalar attributes returned by Bean accessors are marked as 'readonly' in ADF databinding. Support for updating these values is not implemented in this release.

NoDefExeception When Rendering a Bean with No Scalar Attributes (3475505)

Using the <adf:render> or <adf:inputrender> tags will throw an oracle.jbo.NoDefException when you attempt to render a bean that contains no scalar attributes.

oracle.jbo.domain.Array data type (3412750)

The oracle.jbo.domain.Array data type can be rendered using custom Input/Value renderer in JSPs and JUArrayComboBox in JClient. In future releases these Array objects may be dereferenced and treated as a collection type so that its node can be expanded and the Array content (if nonscalar) is accessible on the DataBinding Palette for drop.

Not Possible to Set Type of Rowset Return Type in Custom AM Method (3323420)

There is no way to set the type (or bean class) of a collection return type of a custom application module method. In other models you can edit the xml file and set the bean class of a collection. However, there is no way to do this for the BC4J model. You can work around this by providing a dynamic widget that doesn't require the metadata at design time.

If Secondary RSI is Used for Master, no Detail Rows are Returned (3507403)

If a viewlinked master/detail is dropped on a page and then Master ViewObject's RSIName is modified to be non-null, then the detail is not actively coordinated with the master as the dropped detail is bound to a default RowSetIterator on the master ViewObject (and not the named RSI). The workaround is to not edit/modify the RSIName for the master ViewObject's iteratorBinding. Leave it as null.

DataControl Ids in .cpx File Must be Unique (3539053)

When you work with more than one business service in your client project, the Id for each DataControl in the .cpx file must be unique. When you use the Data Control Palette to design your document, the data control references are added to the .cpx file with unique Ids for you. To avoid creating a runtime error, do not edit the Id property of the DataControl (in the Property Inspector) in the .cpx file to use the same name.

JClient Issues

Tooltip Text is not Picked up by JClient Clients (3442568)

JClient clients ignore any tooltip text that has been entered for an underlying entity object attribute or view object attribute. To workaround this issue you can set the tooltip text in your client code. This example shows how to set the tooltip text for the Deptno attribute:

  
  mDeptno.setToolTipText(panelBinding.findCtrlValueBinding("Deptno").getTooltip());

JClient Controls Ignore Business Components Control Hints at Design Time (3405193)

The display width and display height set for the Business Components attributes in the Entity Object Editor or View Object Editor will not be used to render the control in the Java Visual Editor.

JClient Controls Bound to a Collection are Not Visible in the Java Visual Editor (3379812)

After you insert a control from the Data Control Palette that you bind to a collection (such as a table, tree, list, or graph) into the JClient panel or form, the control will have a size of 0 width and 0 height. The 0,0 size initially makes it impossible to resize the control in the Visual Editor. To display the control so it can be resize, select the control in the Structure window and edit the size properties in the Property Inspector.

JClient No Longer Creates Rows Ready to Commit

Starting in JDeveloper 9.0.5.x, new rows that a user creates in the JClient application will be initialized as TEMPORARY and will not be validated and posted until the row is edited by the user -- or the row's state is forced to NEW through a call to setNewRowState() (see note below). This change was made to reflect the behavior typical of Java UI applications, like spreadsheets, which allow the user to precreate and insert a range of rows while the application need only validate, post, and commit the rows filled in by the user.

Note that this behavior may cause JClient applications that need to create rows as complete, and ready to post, to be ignored during the transaction commit. To set a new row's state into NEW, and thereby simulate the JClient behavior prior to 9.0.5, one has to write code to transition the row state. There are a number of ways to do this:

  1. Override and ignore the setNewRowState() call in ViewRowImpl subclass.
  2. Override the default navbar action for create and after the super, get the current row on the iterator and set it's new row state back to NEW using getIteratorBinding().getCurrentRow().setNewRowState(Row.STATUS_NEW)
  3. Implement a custom action-performed event for the Create/New button and call createRow()/ insertRow() on the appropriate RowSetIterator in code.

Java Web Start Not Launched in IE 5.5

If your default browser is Internet Explorer, the browser may prompt you to download the JSP rather than run it with Java Web Start. This is a known issue with Internet Explorer version 6 and earlier. To address this problem, you can create a static JNLP file or you may set JDeveloper tool's preferences to launch another browser. The JClient Java Web Start Wizard lets you generate a static JNLP file that you can modify to include the JNLP definitions. Alternatively, if you prefer to use dynamic JNLP, and English is the character set you use, you may edit the Local.jsp file to remove the charset encoding attribute in the file's page directive, as shown here:

<%@ page contentType="application/x-java-jnlp-file" %>

Toplink Issues

Using the Custom Query Tab in the Mapping Editor

Use the Custom Query tab in the TopLink Mapping editor to define custom SQL to be used with a TopLink descriptor insert, update, delete, read, or read all actions. For example, to replace the default TopLink readObject function with a custom stored procedure, add the custom SQL string to implement the replacement code on the Read tab of the Custom Query tab.

Importing Projects from TopLink Mapping Workbench

Use this procedure to import your OracleAS TopLink Mapping Workbench 9.0.4.x project (.mwp) into Oracle JDeveloper 10g. Before completing this procedure, you should create a backup copy of your original Mapping Workbench project.

To Import a Mapping Workbench Project:

  1. Create a new JDeveloper TopLink-enabled project.
  2. Create an offline database object for the project. Use one of the following methods to create the necessary database tables (as identified in the \mw\table directory of the Mapping Workbench project).
    • If the tables in the Mapping Workbench project were imported from a live database, import the tables into the JDeveloper project.
    • If the tables were created in the Mapping Workbench project and do not reside on a live database, manually create each database table.

      Note: Ensure that each JDeveloper table name, column name, and foreign key constraint is identical to the corresponding table name, field name, and reference name in the Mapping Workbench.

      If the names are not identical, JDeveloper may not correctly import the mapping information.

  3. Close the JDeveloper project.
  4. Copy the following files and directories from the original Mapping Workbench project:

    Copy this element from the Mapping Workbench Project... To this location in JDeveloper...
    <file name>.mwp Rename the file to toplink_mappings.mwp and place in the JDeveloper <project name> directory.
    descriptor directory <project name>/descriptor
    Java source files and directory structure <project name>/src
    For EJB 2.0 CMP projects:
    • ejb-jar.xml
    <project name>/META-INF

  5. In a text editor, open the toplink_mappings.mwp file and make the following changes:
    Change the project's <name> element
    Change the project's <name> element to toplink_mappings.
    Convert each database table's <name> element
    The <database-table> element lists each database table in a <name> element. This <name> may include a catalog, schema, and table name. You must change each table to include only a schema and table name.
    The following table demonstrates several sample conversions.

    If your Database Table
    <name> Element Contains...
    Convert the <name> Element to...
    <name>Catalog.Schema.Table
    </name>
    <name>Schema.Table</name>
    <name>Schema.Table</name> No conversion required
    <name>Table</name> <name>Schema.Table</name>

  6. In a text editor, open each descriptor's <project name>/descriptor/<descriptor name>.xml file and make the following changes:
    Convert the descriptor's table elements
    For each database table <name> that you changed in the toplink_mappings.mwp file, you must make the identical name change in the following elements in each descriptor's <project name>/descriptor/<descriptor name>.xml file:
    <field-table> 
    <primary-table> 
    <associated-table> 
    <reference-table> 
    <reference-name> 
    <relation-table> 
    <sequencing-policy-table> 
    <source-table> 
    <target-table> 
  7. Reopen the JDeveloper project and use one of the following methods to add the source files to your project:
    • Choose the Scan Source Paths to Determine Project Contents option on the Project Settings dialog. This adds the source files to your dynamic source path.
    • Choose Project > Add to Project to add the contents of the <project name>/src folder. This adds the source files directly to your project.
  8. For EJB projects, choose File > Import > EJB Deployment Descriptor File. Use the wizard to import the <project name>/META-INF/ejb-jar.xml and /src files.

Cannot Modify the Primary Key Attribute of an Object in a Unit of Work (3376332)

You cannot modify the primary key attribute of an object in a Unit of Work. This is an unsupported operation and doing so will result in unexpected behavior ( such as exceptions or database corruption). To replace one instance of an object that contains unique constraints with another object , use the Unit of Work setShouldPerformDeletesFirst method. Refer to the OracleAS TopLink Application Developer's Guide for more information.

orion-ejb-jar.xml Required to Deploy Using TopLink CMP (3492309)

An orion-ejb-jar.xml file is required to deploy EJB 2.0 CMP projects with TopLink. If your project does not have an orion-ejb-jar.xml, clicking a TopLink mapping for any CMP EJB in the project will create a basic orion-ejb-jar.xml file, as shown in the following example. Clicking the TopLink mapping tab for a CMP EJB sets the persistence manager as TopLink.


<persistence-manager name="toplink"/>
<entity-deployment name=" [entity name] " data-source=" [datasource name] " table=" [table name] "

Users will get an oracle.toplink.workbench.external.meta.ExternalClassNotFoundException error if they try to import new classes (.java) into a project with the TopLink technology selected, and subsequently attempt to map these classes by selecting the "add descriptor" button under the TopLink node in the Structure pane. In order to eliminate this error, users should compile the classes once before mapping them the first time.

Make sure you have < PM-name="toplink" > attribute entries set for each EJB CMP in the orion-ejb-jar.xml.

You may also use this procedure to create < PM-name="toplink" > attribute entries.

  1. Create a minimal orion-ejb-jar.xml by selecting Deployment Descriptors > orion-ejb-jar.xml from the New Gallery dialog.
  2. Click the TopLink Mappings node in the application navigator.
  3. Click each CMP EJB in the TopLink Mappings Structure pane. This will open the TopLink mapping editor and adds <PM-name="toplink" > attribute entries for the <entity-deployment> tag for each CMP EJB.

Exception When Mapping Classes with TopLink Technology Scope (3530302)

You will get an oracle.toplink.workbench.external.meta.ExternalClassNotFoundException error if you try to import new classes (.java files ) into a project with the TopLink technology selected, then attempt to map these classes by clicking the Add Descriptor button in the TopLink Structure pane. T o eliminate this error, you should compile the classes once, before mapping them the first time.

TopLink Mappings Tab Not Available in Code Editor (2986395)

After the Code Editor and adding a TopLink deployment descriptor, the TopLink Mappings tab may not appear in the Code Editor. You must close, then reopen the Code Editor to display the TopLink Mappings tab.

TopLink Descriptors May Be Lost After Modifying .JAVA Files (3733058)

After creating Java objects (and TopLink descriptors) from tables, if you modify the .JAVA files with an incorrect syntax (for example: private Stri) and close JDeveloper, when you reopen JDeveloper, the TopLink Descriptor for the modified .JAVA file will be lost.

Accessors (getters and setters) May Not Appear as Methods in the TopLink Mappings Editor(3633296)

To ensure that the accessors appear as methods in the TopLink Mappings editor, you must close the Mappings Editor, save the JDeveloper project, then reopen the Mappings Editor. The accessors will now appear as methods.

TopLink Mappings Structure Window May Not Update Properly (3747403 and 3773050)

When making changes to a mapped attribute, the TopLink Mappings Structure window may not properly update to show the
changes. You must save the project after making the changes to update the TopLink Mappings Structure window.

Toplink Accessibility Issues (3845935, 3845909, 3845804)

When using JAWS screen reader with the TopLink Mapping editor, the following user interface elements may not be read correctly:

  • Preallocation field on the Sequencing tab
  • Specific mapping type in the TopLink Mappings structure window.

Class Names Containing Dollar Signs (3768125)

Class names that contain a dollar sign ( $ ) are assumed to be inner classes. You cannot use the TopLink Mapping editor to create a TopLink descriptor for these classes.

Using TopLink Mapping Editor with Oracle10g Database (3856465)

JDeveloper does not include a 10g-specific database file. To use a Oracle10g database with the TopLink Mapping editor, select the Oracle9i database option.

Migrating TopLink Data Control Parameters (3859963)

When migrating a JDeveloper project with TopLink mappings to 10.1.2, the TopLinkSequenceOnCreate and TopLinkShouldPerformDeleteFirst parameters are optional, and therefore not included in the migrated project. Use the Structure window or Property window to add these parameters, if necessary. Refer to the Javadocs for more information.

Some Attributes may not Appear in TopLink Structure Window (3813680)

When adding attributes to the .java file in code, you must save save the file to ensure that the attributes correctly appear in the
TopLink Structure window.

TopLink Default Queries are Non-Configurable (3603407)

In the TopLink Mapping editor, you cannot configure the caching options for the default TopLink queries (such as readAll and readOne). For example, you cannot change items such as cache usage, binding, timeout, and row return.

Using TopLink ADF Data Bindings (3736337)

To use the TopLink ADF data bindings in JDeveloper when deploying to OracleAS 10g (10.1.2), select the Tools > ADF Runtime Installer option in JDeveloper. It is not necessary to use the ADF Runtime Installer when using standalone OC4J.

Using Database Session with Connection Pool Causes SessionLoader Exception (3887079)

In the TopLink sessions.xml, if you are using a Database session, do not create or use a Connection Pool. Connection Pools should only be used with Server sessions.

Refactoring Classes Does Not Update TopLink Descriptors (3903528 and 3926599)

If you refactor (rename or remove) a class, its associated TopLink descriptor is not renamed or moved. To rename a TopLink descriptor, you must first remove the descriptor from the project, then re-import the renamed Java class. A new TopLink descriptor will be created with the new class name.

Adding a Preceding Space to a Session Name Causes Exception at Runtime (3900559)

Although JDeveloper allows you to prepend a space to the the name of a session the TopLink sessions.xml, doing so will cause an exception at runtime. Ensure that your session names do not begin with a space.

Synchronizing Datacontrols.dcx and Databindings.cpx (3917609)

When working with data controls in JDeveloper, changes in the DCX may not be reflected in the CPX. To avoid this problem, be sure to modify the Databindings (CPX) before modifying the Datacontrols (DCX).

Error When Deleting and Committing a Record (3815959,3903366)

If a TopLink mapped object has 1:M relationship that employs bi-directional relationship maintenance, a database integrity constraint violation can occur upon UnitOfWork.commit() if the source column in the foreign key constraint for this relationship has a non-null constraint. This issue materializes in TopLink ADF through 'commit' data action.

Workarounds:

  1. Set the 1:M relationship as "privately owned". This will indicate to TopLink that when the related object is removed from the 1:M Collection that it should be deleted from the database rather than updated to have a null FK value. This option should be used carefully as a disassociation of an object in a 1:M Collection will result in the associated database row being deleted.
  2. Turn the non-null constraint on the source column in the foreign key constraint off. This will allow the null update to occur without an integrity constraint violation.

Multibyte Strings in "Source" View for session.xml are Shown Garbled (3983407)

When multibyte strings are in session.xml, they are shown as garbled in "Source" view for session.xml. This is just a view problem. "Source" view or session.xml is read-only and the actual session.xml is encoded properly.

Resetting TopLink Units of Work will Improve Performance

When a TopLink Unit of Work is committed, its state is not automatically reset. Over multiple transactions, this will cause the Unit of Work's change set to grow, which may eventually degrade performance. You can reset the Unit of Work's state explicitly by calling TopLinkDataControl.resetState() from within your View or Controller layer. For example, from within a Struts DataAction's handleLifecycle() method, you could use code like the following:

TopLinkDataControl dc =
  (TopLinkDataControl) actionContext.getBindingContext().findDataControl("DataControlName");
if (! this.hasErrors(actionContext) )
{
  dc.resetState();
}

You may also want to call resetState() after a commit operation to explicitly reset unmapped aspects of the state.
 

Web Services Issues

Insight Not Available for WSDL Documents (2954818)

JDeveloper cannot rely upon there being a live network connection available on start-up, and as the relevant schemas are all on the W3C site, which JDeveloper can't copy into its local install for legal reasons, JDeveloper does not pre-register any xml schemas for the WSDL file type. Therefore code insight is not available for WSDL documents in JDeveloper's XML Editor.

Compilation Errors After Regeneration of PL/SQL Web Service (3431499)

It is possible that after you regenerate a PL/SQL web service you will get compilation errors caused by some files being removed from the project during regeneration. To correct this, you need to add the files back to the project by hand.

In the navigator, select the web service node and click on the Add to Applications button (with a + sign). In the dialog, navigate to the \src\<package> directory. Select all the .sqlj files and click Open. Now you should be able to compile the project without any errors.

In the Find Web Services Wizard, JAWS Will Only Return a Valid Value Once the Row is Loaded (3194304)

If you use an accessibility reader such as JAWS, you need take care using the Find Web Services wizard. On the tModel page of the wizard you need to wait until a row has properly loaded before you can be sure that the 'Is WSDL' column is returning a valid value. You can do this by moving to the Description column first. While the row is being loaded, the Description column returns "Loading". Once the row is loaded, the Description column returns a description of the web service. Now you can go to the 'Is WSDL' column and read the value.

Changing the Project in the PL/SQL Web Services Wizard May Fail to Update the Context Root for the Endpoint (3477647)

In step 1 of the PL/SQL Web Services wizard, there is a combo box which allows you to choose the project into which the service will be generated. Once you move onto step 3 of the wizard you will see that the web service endpoint has been automatically generated using the context root of the chosen project.

However, if you decide to go back to step 1 and choose a different project, then moves forward to step 3 again, you will notice that the automatic regeneration of the web service endpoint has failed and the endpoint still reflects the context of the originally chosen project.

You will need to manually update the endpoint in the wizard to reflect the correct context root for the project before generating the web service, otherwise the endpoint in the generated WSDL document will be incorrect and any stub generated to access the web service will point at the wrong endpoint. Alternatively, you may re-edit the web service after generation to reflect the correct endpoint on regeneration.

Must Use Schema Qualified Name for PL/SQL Web Service (2966028)

In a PL/SQL web service that uses XMLTYPE as a parameter or an attribute of an object type, you must use the schema qualified name of SYS.XMLTYPE.

Web Service Stub Fails if Generated from JDeveloper Install Path with Space (3068701)

If you install JDeveloper in a path where any of the folders have a space in the name and then generate a web service which you run on the embedded OC4J server or on an external instance of the OC4J server, you will find that a stub to the service will fail when the web service is called.

The workaround is to install JDeveloper in a path without a space in any folder name.

Cannot Generate Stubs for Web Services which Reference Base64 (2920137)

The WSDL validation on the Select Web Service Description page of the Create Web Service Stub/Skeleton wizard does not recognize the XML Schema type base64 from the http://schema.xmlsoap.org/soap/encoding/ schema. As a result, you will not be able to generate services from any WSDL files which reference this type.

JPublisher Generates Incorrect Code if the PL/SQL Package Name Contains Hyphens (3522618)

If you are generating a PL/SQL web service for a database package that contains hyphens in its name, the SQLJ files generated by JPublisher will be incorrect as hyphen (-) is not a valid character in a Java identifier.

The workaround is to edit the SQLJ file generated by JDeveloper, and surround the occurrence of the package name with quotes (""), then rebuild.

Location of WS-I Log File has to be on Same System Drive as JDeveloper (3535903)

The location of the WS-I log file, which you set in Tools | Preferences | WS-I Testing Tools, must be on the same system drive as in JDeveloper, otherwise the log file is not written. For example, if JDeveloper is installed on drive D:, the location of the WS-I log file must also be on drive D:.

Please check Migration Issues for Web Services specific migration information.

Cannot Generate a Stub or Skeleton for a WSDL that Uses Certain Types (3912349)

JDeveloper 10.1.2 only understands a subset of all of the complexTypes that can be defined in a WSDL document. For example, if the following appear in the "types" section of the WSDL, any use of those types will cause JDeveloper to generate a reference to UnknownType in a stub or skeleton:

  • Restrictions of simpleTypes
  • complexTypes which define attributes

Modeling Issues

Erasing UML Diagram Elements From Disk (3421852)

If you have class or interface that is modeled on a diagram, and you use Erase from Disk to remove the class or interface from the navigator, you may find that it still appears on the diagram. This occurs when you have created the class or interface and saved it, then closed JDeveloper. Then after restarting JDeveloper, you have erased the class or interface from the navigator.

The workaround is to manually delete the modeled class or interface from the diagram.

Erasing Modeled EJBs From Disk (3100651)

When you have an EJB that is modeled on a diagram and you select Erase from Disk from the modeled EJB's context menu, the EJB is still shown in the navigator. To remove it, select the EJB and choose File | Remove from package. When you have an EJB that is modeled on a diagram, and you Erase from Disk the EJB in the navigator, the modeled EJB is still displayed. To remove it, select it and choose Erase from Disk from the context menu.

The workaround is to close the diagram before erasing the EJB, and erase the EJB from the navigator.

Deleting Element from Diagram without Deleting Constraint Affects Node in Add to Diagram Dialog (3431254)

When you have an element with a constraint attached to it modeled on a diagram, and you delete the element but not the constraint, you will not be able to expand the Constraint node on the Add to Diagram dialog.

Renaming a Modeled Java Class to an Invalid Name Causes Errors (3495725)

Using Tools | Refactor to rename a Java class on a diagram to the package nam