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 JDevelopers 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:
Where just testing whether the first row exists,
use the first() API and test whether it is null or
not.
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.
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.)
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.
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
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:
Migrate your applications.
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.
Open Tools | Preferences.
In the Environment panel change the Encoding field to UTF-8.
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:
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)
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.
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:
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)
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.
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:
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:
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:
Override and ignore the setNewRowState() call in ViewRowImpl
subclass.
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)
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:
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:
Create a new JDeveloper TopLink-enabled project.
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.
Close the JDeveloper project.
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
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>
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:
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.
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.
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.
Create a minimal orion-ejb-jar.xml by selecting Deployment Descriptors
> orion-ejb-jar.xml from the New Gallery dialog.
Click the TopLink Mappings node in the application navigator.
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.
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:
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.
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