Oracle JDeveloper 10g is a complete and integrated development environment
for standards-based SOA applications. The Oracle JDeveloper 10g Release
3 (10.1.3) version adds many new features including a new look and feel, a greatly
improved coding environment with extensive refactoring options, support for
the latest Java standards (J2SE 5.0, J2EE 1.4, EJB 3.0), and visual JSF development.
A visual and declarative approach and the improved Oracle Application Development
Framework (Oracle ADF) work together to simplify application development and
reduce mundane coding tasks, offering developers unparalleled productivity regardless
of their choice of technology stacks and deployment platforms.
Be sure to check online for additional features available for download using
Help > Check for Updates.
Debugger Preference for Connection Retry on Linux (4432394)
If migrating from 9.0.3x or 9.0.4x to 10.1.3 on Linux the Debugger preference
for Connection retry needs to be increased to at least 20. This is particularly
necessary when migrating an XML projected where XSLT debugging will be done.
XSLT debugging was not available in 9.0.3 or 9.0.4 so projects migrated to 10.1.3
do not have enough connection retrys set to allow the debugger to connect to
the local process due to the additional XSLT debugging framework.
Change in Location of XML Files (4387850)
The default directory for the XML wizards (XML Document, XML Document from
XML Schema, XML Schema, XQuery, and XSL Style Sheet) was formerly the "public_html"
directory. This is no longer the case. XML files will now be created in the
Project root directory by default. When a project is migrated, any existing
XML files will remain in the public_html directory, but any new XML files will
be created in the new location by default.
Code Insight/SQLJ Issue (4001857)
Code Insight displays errors for any variable declared with #sql until the
file is compiled. Due to the SQLJ translator being between the SQLJ and class
files, variables in the project are not recognized until the java file is created
from the SQLJ. At that point the variables used are recognized as expected.
Use Refresh to See Content of Project Imported into CVS
and Automatically Checked out into JDeveloper (4717242)
This problem occurs when you create a new project that references unversioned
files. If you import the project using the Import to CVs wizard with the Perform
Module Checkout option selected, the JDeveloper navigators will show only the
project heading and not its content. The workaround is to click the Refresh
button on the navigator toolbar. This will make the project content (file nodes)
appear in the navigator.
ORA-604/ORA-12705 Error on Some Unsupported Locales in
JDBC (4704421)
When trying to connect the Oracle Database via JDBC 10.1.0.5 on locales containing
a variant (for example, "fr_FR_EURO") or some locales that are not
supported in JDBC (listed bellow), JDBC throws a SQLException.
Unsupported Locales:
Any locale that is not listed in Supported Locales in Java 5.0 (http://java.sun.com/j2se/1.5.0/docs/guide/intl/locale.doc.html),
for example, ab_CD, fr_FR_EURO, it_IT_EURO. The following locales are also not
supported, despite being supported in Java 5.0:
th_TH_TH, Thai (Thailand,TH)
be, Belarusian
be_BY, Belarusian (Belarus)
es_AR, Spanish (Argentina)
es_BO, Spanish (Bolivia)
es_DO, Spanish (Dominican Republic)
es_EC, Spanish (Ecuador)
es_HN, Spanish (Honduras)
es_PY, Spanish (Paraguay)
es_UY, Spanish (Uruguay)
mk, Macedonian
mk_MK, Macedonian (Macedonia)
no_NO_NY, Norwegian (Norway,Nynorsk)
sq, Albanian
sq_AL, Albanian (Albania)
The workaround is to update your default Locale setting of Java. For example:
When default Locale is es_AR, set es (Spanish) to the default Locale as
following; Locale.setDefault(new Locale("Es"));
When Locale has variant code like fr_FR_EURO, remove variant code (EURO)
and set default; Locale.setDefault(new Locale("fr", "FR"));
Set English as default Locale; Locale.setDefault(Locale.ENGLISH);
You can verify runtime Java's locale by doing the following:
Exception When Dragging and Dropping on Linux (4517150)
Linux users may see a Null Pointer Exception thrown in the console when using
drag and drop in JDeveloper. This is due to a bug in the JDK and the exception
is harmless.
In certain situations on the Windows platform, the clipboard can become corrupt
after doing Edit->Copy in JDeveloper. The cause is a case mismatch between
a source directory on disk and the project property in JDeveloper that points
to that source directory. For example, if you have a directory on disk named
"src" but your JDeveloper project points to "Src", you are
likely to encounter problems with Copy and Paste. The workaround is to modify
the property in your JDeveloper project pointing to the directory (Tools->Project
Properties->Project Content or one of its subpanels) so that it uses the
exact same case as the corresponding directory pathname on disk. Alternatively,
you could also rename the directory on disk to align with the property in your
project.
Null Pointer Exception During EAR Import (4605526)
As long as the source path is specified when importing an EAR the import succeeds
even if there a is a NPE in the console.
Intermittent IllegalStateException Rerunning ADF Web
Applications on Embedded OC4J (4758240)
When running or debugging your web application inside JDeveloper 10g, you
can re-run or re-debug the application without stopping the embedded container.
In this case, the embedded OC4J undergoes a "warm-restart". This makes
for quicker run/debug cycles, but due to a known issue you may intermittently
see the following exception some time after performing this warm-restart of
the embedded OC4J server for an application:
05/11/23 15:59:11 java.lang.IllegalStateException: ClassLoader "SomeLibraryName:X.Y.Z"
(from <shared-library> in .../jdev/system/oracle.j2ee.10.1.3.35.74/embedded-oc4j/config/server.xml):
This loader has been closed and should not be in
use.
This warning only occurs in the OC4J "warm-restart" scenario inside of JDeveloper
10g and can be safely ignored.
Deployment Issues
Migrating Projects from JDeveloper
10.1.2 to 10.1.3 (4902942)
When migrating a project from JDeveloper 10.1.2 to JDeveloper 10.1.3, the data
sources defined in the workspace are preserved. Database connections in the
IDE do not need to be recreated before running the Application. However, if
you do choose to create IDE connections, migrated datasources with the same
names should be deleted first, to avoid conflicts. This can be done by navigating
to Embedded Server Preferences menu/Current Workspace/DataSources and deleting
the child nodes.
Deploying Applications to Application Server 10.1.2 (4733478)
The Oracle DCM client responsible for deployment to Application Server 10.12
cannot handle EAR files with paths that contain spaces and interprets the deployment
command as invalid.
There are two workarounds to this issue from a JDeveloper perspective (both
will result in the EAR file being written in a directory without whitespace).
You can:
Make sure that JDeveloper is installed in a directory that does not have spaces.
Create your project workspace in a directory that does not have spaces.
Testing Session Failover Using the Embedded Server (4720841)
When testing session failover using the embedded server include an orion-web.xml
descriptor and change the persistence-path to a location outside the application-deployments
directory. For example:
persistence-path="c:/shared/persistence/App1"
Also, change JDeveloper to shutdown the embedded server gracefully from Tools/Embedded
Server Prefs/Shutdown. This ensures persistence data is written out to disk
before the server shuts down.
Switching Between JDK 1.5 and JDK 1.4 When Running Applications
in Embedded Server (4737312,4747983)
Users must be cognizant of the JDK version being used when running applications
in the embedded server. This is especially true when switching between versions
of the JDK and working with multiple JDeveloper projects with different JDK
versions.
By default the embedded server starts with JDK 1.5. Once the server has run
with JDK 1.5, running a JDK 1.4 based project (Project Properties->Libraries
-> J2SE Version) will require that users follow the steps documented
in chapter 4 (OC4J runtime configuration) of the Oracle Containers for J2EE
Configuration and Administration Guide.
Workaround for URL / WS Data Control Apps When Deploying
to Third Party Application Servers or Oracle Application Server 10.1.2 (4931009)
Copy the following JAR files to your target application server along with the rest of the ADF installed JAR files. The following JAR files are available under your JDeveloper's home directory.
Shutdown the application server and modify the application server's class path to include all of the JAR files that were extracted from the archive. Please refer to the application server documentation for details on how to modify the class path.
Restart the application server. You are now ready to deploy / run the application successfully.
Third Party Deployment Issues (4867128)
Deployment to non-Oracle application servers is not supported for:
Applications using the URL / Web Service Data control with Security features
enabled.
Applications using Oracle JAAS Authorization.
Deploying Large EAR Files to Weblogic (4542728)
If while deploying a large EAR file to Weblogic you encounter a SocketException,
deploy the EAR using the console rather than using JDeveloper.
"Input Line Too Long" Errors on Starting WebLogic
Server (4505772)
An "Input Line Too Long" error can occur from the startWebLogic.cmd
scripts, depending on which products the domain/server includes, if the
installation path for the product is too long, or if too many additional
entries are added to the server CLASSPATH. This is a limitation in the
Windows command processor. An installation directory with a name of 18
characters or less will work for unmodified scripts for a platform
domain (which includes WebLogic Server, WebLogic Portal, and WebLogic
Integration CLASSPATH entries).
Workaround:
Install to a shorter directory name. Trim the number of additional server CLASSPATH
entries by combining JARs or using Manifest Class-Path entries in a single JAR
file.
Deploying ADFm Applications to JDeveloper Embedded OC4J
When Working with Foreign Datasources
Change the import-shared-libraries tag to include the ADF generic domains
library definition. Since the Oracle domains library is not required when
using foreign datasources, remove it. It is inherited by default from the
global application.xml.
Deploying ADFm Applications to Standalone OC4J When Working
with Foreign Datasources
Copy the JDBC driver library to /BC4J/lib.
Using JDeveloper edit orion-application.xml in the META-INF
folder. Change the import-shared-libraries tag to include the following
library definitions. If there is an entry for "adf.oracle.domain", remove
that entry.
Deploying to Standalone OC4J then Running in Embedded
OC4J Page Throws Error (4944908)
When re-running the page in the embedded OC4J the following error is thrown:
JBO-29000: Unexpected exception caught:
Two workarounds are available:
Delete the orion-application.xml in src\META-INF and classes\META-INF
OR
Add in
src\META-INF\orion-application.xml and copy
jdev\system\oracle.j2ee.10.1.3.##.$$\embedded-oc4j\config\system-jazn-data.xml
to src\META-INF\jazn-data.xml.
Data-Sources Password Handling and Application Server
10.1.2
It is important to note that deploying an application that uses connections
defined in data-sources.xml developed using JDeveloper 10.1.3 that is deployed
to Application Server 10.1.2 will result in a deployment failure. One example
would be an application that uses an EJB to connect to a database. This is due
to differences in the way Application Server 10.1.3 and Application Server 10.1.2
interpret password indirection. We are expecting a patch for Application Server
10.1.2 to be made available that will allow deployment of these types of applications
to Application Server 10.1.2.
Database Issues
Problem Creating Connection to Oracle Lite (4880755)
When you try to create a connection to Oracle Lite using a connection type
of either Third Party or Oracle Lite, the connection will fail unless you open
<jdev_install>\jdev\bin\jdev.conf in a text editor, uncomment the "Oracle10g
Lite Settings" section, and modify the directories to point to your Oracle
Lite installation.
Need to Refresh Connection After Updating DB Outside of
JDeveloper (4726652, 4468968)
If you make any change to the database outside of JDeveloper, for example using
SQL*Plus, JDeveloper's cache of database objects is not refreshed. You must
manually refresh the connection by selecting the connection name node in the
Connection Navigator and clicking the Refresh button.
Generic JDBC Database Support (4773865)
When you create a connection to a Generic JDBC database, that is one that is
not explicitly supported, you will be able to browse it in the Connection Navigator
and to import its tables into JDeveloper's to use the offline database features.
However when you view a column you will see its native datatype instead of its
equivalent JDBC type. The datatype may also be incomplete, missing properties
such as length, prevision and scale.
Generating or Reconciling to the Database (4768254, 4729493)
The JDeveloper team recommends that users should use the 'Generate SQL from
Offline Database Objects' wizard to generate or reconcile to the Database, so
that the correct SQL will be produced.
If it isn't possible to generate straight to the Database, then the user must
reimport their Database Schema offline again once the changes have been applied
before continuing with any other offline modifications.
Column Information Not Retrieved When Using Informix Driver
with Informix Tables (4424588)
If you import a table containing a column of type INTERVAL, or view it in
the Connection Navigator using a DataDirect driver prior to version 3.4.68,
the data type will be empty. If you use version if you use version 3.4.68, 3.5.17
or later, the table will not be imported or viewable in the Connection Navigator.
Modeling Issues
Refactoring Context Menu and UML (4463153)
From the App Navigator context menu the refactoring submenu is visible for
navigator packages containing UML artifacts. However, refactoring the package
will NOT cause UML artifact to be refactored, though Java and other types will
be refactored as expected.
Java Modeler Accessibility (4541424)
The Java Modeler's popup code editor is not currently accessible when using
JAWS screen reader. The workaround is to invoke 'Go To Source' instead of 'Edit'
for Java elements on the diagram, which will invoke the main code editor.
Naming PL/SQL Objects (4588244)
Naming a PL/SQL object with a name containing a colon
will result in incorrect behaviour. This applies to quoted names only as colons
are invalid in unquoted names.
Visual Properties on the Database
Diagram (4864790,4613035)
Certain visual properties do not work on the database
diagram. Selecting or unselecting these visual properties has no effect: Show
Dependency Lines; the Table Column properties; and the View Column properties.
Cardinalities of Newly Created Foreign
Keys (4923919)
In some situations, the cardinalities of a newly created foreign key are shown
the wrong way around. They are shown in the correct position if you close and
reopen the diagram.
Use Cases not Appearing Within System Boundary on Use Case
Diagram (4944520)
If a use case is not appearing within the system boundary on a use case diagram
as expected, the cause is probably that the scope of the use case has become
corrupted. Open the underlying use case document and ensure that the scope section
references a valid location. Then restart JDeveloper.
Web Development Issues
UIX Design Time Support
Design Time support for UIX is not present in the production
release of JDeveloper 10.1.3. This support will be made available after production
as an extension, along with a utility to convert UIX pages to Oracle ADF Faces
pages. Oracle ADF Faces is a significant evolution of UIX and is based on the
new JSF standard. The migration utility will handle most of the UIX components,
but code migration will require manual intervention.
Migrated 10.1.2 Servlet Does not Run in JDeveloper 10.1.3
(4697146)
When migrating any earlier JDeveloper servlet projects to 10.1.3 you must manually
add the servlet mapping tag in web.xml for each servlet.
Compile Error for JSPs Created Within MyFaces Project (4481965)
MyFaces 1.0.9's html tag library's outputLabel has the for attribute marked
as required. The spec and the RI do not require this. To work around this, please
provide one.
This issue applies to both the J2EE and Studio editions.
Tiles Servlet Class is not Included with Newer Versions
of Struts (4665667)
If you use a different version of Struts from that delivered with JDeveloper
10.1.3 (Struts 1.1), for example Struts 1.2.4, the TilesServlet may not be available
by default, because it may not be included in the download for that different
version. When you attempt to add a Tiles Definitions file to a project for a
Struts application, and examine the web.xml file for the application,
a warning will be shown explaining that the class org.apache.struts.tiles.TilesServlet
was not found.
As a workaround, create a new library that has org.apache.struts.tiles.TilesServlet
on the class path, and add this new library to your project.
For details of using a different version of Struts from the one supplied, see
the Oracle JDeveloper - How-To's on the Oracle Technology Network here:
In the faces-config.xml Overview Editor, on the managed beans page, you can
not set the value of a managed-property or map-entry if it previously was set
to null. The workaround is to first delete the <null-value/>
tag from the Source Editor or the Source Structure Panel.
Toplink Issues
Using EJB2 COMP on OC4J (4379121)
When using EJB2 CMP on OC4J, the datasource and login information specified
in the orion-ejb-jar.xml is used for CMP deployment. The information in the
orion-ejb-jar can be edited by launching a properties editor from the navigation
bar. Although deployment database connection information is editable in the
TopLink map, the information specified for TopLink will be ignored on deployment.
TopLink POJO's Must Implement java.io.Serializable When
Returned From a Session Bean's Remote Interface (4902787)
When creating a session bean facade for TopLink POJO objects, you must implement
java.io.Serializable for each of the TopLink POJO objects returned from the
SessionBean facade through a remote interface. This is typically required when
using ADF Swing, a EJB Sample Client, or when your EJB Session Bean resides
on a separate application server from the client.
You can also tell you you need to implement java.io.Serializable when you get
the following exception:
com.evermind.reflect.UndeclaredExceptionTypeException:
/oracle.oc4j.rmi.OracleRemoteException/
at __Proxy1.[Your Class Name Here] (Unknown Source)
The workaround is to manually edit each POJO object to implement java.io.Serializable.
We plan to remove the need for this manual step in a future release.
Double-byte Languages (4924156)
If your TopLink map or TopLink sessions configuration file contains double-byte
characters, generating POJOs will cause exceptions. Ensure that your tlmap.xml
and sessions.xml files do not contain double-byte characters.
Native Sequencing Configuration for SQL Server (4927333)
If you are unable to configure native sequencing for SQL Server, select a different
database platform (i.e. Oracle) and then enable native sequencing. You should
then set it back to SQL Server.
Change in Deployment Descriptor Location After Migration
(4928625)
The deployment descriptor location has changed after migrating a 9.0.5 Toplink
ADF application into 10.1.3. For the migrated application to work in 10.1.3
the property DeploymentDescriptorFileName has to be changed to META-INF\package\toplink-deployment-descriptor.xml
from META-INF\toplink-deployment-descriptor.xml.
After Load Method Chooser not Populated in All Cases (4960233)
A user has the option of adding the "After Load" advanced property
to a
descriptor (mapped class) in the TopLink Mapping Editor. In the After Load
property editor, a user may specify a class that contains methods that meets
the TopLink signature requirements for an after load method. In some cases
these methods will not show up in the "Static Method" chooser.
Workaround:
After specifying a class that contains valid After Load methods, open the
given class in the java source editor and type a couple of spaces or random
characters. This will cause the class meta data for the TopLink Mapping
model to update and the after load methods defined in that class will show up
in the "Static Method" chooser.
Technical Solution:
Class meta data in the 10.1.3 TL editor lazily loads in some cases as required
by the TL mapping meta data model. In the case where the class specified in
the After Load properties has not been referenced in the mapping model, it may
not be populated in terms of its attributes and methods. The solution to this
issue is to force a full populate of the class specified for the AfterLoad method
in the case where it is not populated.
Accessing Related TopLink POJOs and EJB 3.0 Entities Outside
the Container
When using TopLink POJOs or EJB 3.0 entities remotely (outside of the container),
entities will not be able to access information from related entities. The solution
is to pre-load all the required entity data before sending it back to the client.
For example, if you have two entities, Departments and Employees, you must iterate
over the collection of Employees to load the data.
This is code for the 'findAllDept()' method generated by default for session
beans that have entities (and POJOs) in the same container:
public List findAllDept() {
Session session = getSessionFactory().acquireSession();
List results = (List)session.executeQuery("findAllDept", Dept.class);session.release();
return results;
}
To modify this to eagerly load each Deptartment's collection of Employees (empCollection field), change it to this:
public List findAllDept() {
Session session = getSessionFactory().acquireSession();
List results = (List)session.executeQuery("findAllDept", Dept.class);session.release();
// Eagerly load all Emp's associated with each Dept so they can be
// accessed by a remote client.
for (Dept dept : results) {
dept.getEmpCollection().size();
}
return results;
}
The code will eagerly load just the Employees for each Department. If you further want to load each Employee's address, it would look like this:
// Eagerly load all Emp's associated with each Dept so they can be
// accessed by a remote client. Also, for each Emp, eagerly load
// its associated Address
for (Dept dept : results) {
for (Emp emp: dept.getEmpCollection()) {
emp.getAddress();
}
}
EJB Issues
No Support for the Modeling of EJB 3.0 Beans
There is no support for the modeling of EJB 3.0 beans in this release.
EJB Data Control Does Not Support interMedia BLOB/CLOB
Types (4601958)
For 10.1.3, the JDeveloper EJB data control does not support interMedia BLOB/CLOB
types. Columns with these data types do not show up in the Data Control Palette,
even though they are in the base CMP/POJO.
Failure to Deploy EJB if Using SET Instead of COLLECTION
of EJB Relationship (4928365)
EJB deployment failure to OC4J when using java.util.Set for EJB relationship.
The workaround is to use java.util.Collection or java.util.List.
Cannot Run ADF Application Using EJB (No Source) Data Control
in Embedded Server (4880076)
If you use the EJB Data Control Wizard (new in 10.1.3) to create an ADF data
control from an imported EJB JAR file, you cannot run against the embedded OC4J
server. However, you can run the application using a remote server.
Web Services Issues
'No Serializer' Error When EJB Web
Service Deployed to Embedded OC4J Server (4012177)
On Windows, if you have a web service that has a long
name that exposes Java methods which use JavaBeans that also have long names,
paths to the tie files on embedded OC4J server may be too long to be recognized.
This results in the service reporting at runtime that no serializers can be
registered for the JavaBeans.
The workaround is:
Choose Tools | Embedded OC4J Server Preferences,
and ensure Global is selected.
Edit Deployment Directory to change to a directory
with a short path from a root directory, e.g. D:\JDevEmbeddedServer\application_deployments
'Invoke' Button Not Present
in EM for Testing EJB3.0 Web Service on External OC4J (4769395)
If you deploy an EJB3.0 web service to external OC4J,
and try to test it from Oracle Enterprise Manager, the Invoke button is not
always present. There is no workaround.
Invalid Web Service Endpoint
in Generated Proxy for Multi-Port WSDLs (4867854)
When you create a proxy to a web service with more than
one port, the proxy may be generated with an invalid endpoint for the web service.
The workaround is to examine the WSDL to find the correct endpoint URL, and
paste this into the generated proxy class.
Runtime Exception when More
Than One Web Service Exists in a Project (4861145)
If you create two or more web services in a project that
use the same mapping file, you will get a runtime exception.
The workaround is:
For bottom-up web service generation, specify a serviceName
argument value that does not already exist for the second web service.
For top-down web service generation, make sure the
web services are each in a different WAR for deployment so that the same deployment
descriptor is not used.
Cannot Execute EJB 3.0 WS on Embedded OC4J (4932519)
Web services created from EJB 3.0 cannot be run on the embedded OC4J server,
however they can be deployed to external OC4J.
ADF Business Components Issues
BC4J Failover Default is Now False (4393051)
The default for the BC4J failover mode has been switched to false in this release.
This change was made to enhance the performance of out-of-the-box BC4J applications
that may not require the quality of service that failover provides.
Existing applications that require failover may re-enable failover by editing
the ApplicationModule configurations of their applications and enabling failover
on the "Pooling and Scalability" tabpage.
ADF State Manager and BC4J Failover
ADF 10.1.3 introduces a new StateManager state repository to manage application
state. This obviates the need for ADF to write state like BC4J's passivation
id as a browser cookie upon each web request. However, this addition may require
an application developer to make certain provisions if they require the same
quality of service that was offered by the old implementation for BC4J applications.
It may be necessary to perform some configuration if the application requires
that state be persisted to disk; this may not be performed, by default, even
if jbo.dofailover=true.
To ensure that BC4J state is managed in the event of n-node failure the application
developer must ensure that the StateManager is configured to persist state to
disk. The default StateManager repository for a web based ADF application is
the HttpSession; so, if the container supports persistent HttpSession then the
application developer needs only to enable this feature.
If the container does not support HttpSession persistence or if HttpSession
persistence is not feasible then the application developer may choose to use
a different StateManager repository. ADF has also provided a JavaCache* StateManager
repository that supports persistent state management out of the box. The JavaCache
StateManager repository may be used by defining the following Java system property
on the command-line:
Note: The JavaCache option only applies to applications generated using databinding
(possible only with 10.1.2 and beyond). If this is an older application (ex:
9.0.x based) then this option is not available. However, as an additional measure
the old method of writing a browser cookie per application module is still available,
and can be turned on with the Application Module configuration setting, jbo.ampool.writecookietoclient=true.
This alternative has obvious detrimental side-effects (of increasing the risk
of hitting the browser cookie limit) and is intended only as a temporary measure.
Tips for Team Development Using ADF and ADF Business
Components
When working on ADF applications in teams, here are some tips to help
minimize the chances of getting merge conflicts when other team members
have committed changes to source control while you've been making
changes on the same project.
Exploit the New 10.1.3 feature to avoid using package XML files for ADF Business Components
On the Business Components | General panel of the IDE preferences, uncheck the property named Copy Package XML Files to Class Path.
This sets the default setting to be used for new ADF Business
Components project. By unchecking this, the ADF design time no
longer uses package XML files to track what components are in the
package, so the package XML files will not be a point of merge
conflicts between team members. For existing projects, you can also
edit this property to uncheck it on the at any time on the Business Components | Options panel of the project properties.
Use the System Navigator to Resolve Merge Conflicts on the Project File
When changes made by other team members cause merge conflicts in the
project file, which can occur when they add new ADF Business Components
to the project, the application navigator will temporarily not be able
to display the project contents. To resolve the merge conflict, show
the System Navigator using View | System Navigator
and use the "Resolve Conflicts" choice on the context menu of the
project. The format of the JPR file's "owner map" area has been
optimized to improve the likelihood of having the source control system
be able to automatically merge the contents, as well as simplifying
eventual manual merge resolution.
Close and Re-expand the Project After Resolving Merge Conflicts in ADF Business Components XML Files
After resolving any merge conflicts in ADF Business Components XML
metadata files, in order for the ADF Business Component metadata in
memory to be re-read afresh, it's a good idea to select the project
containing the ADF Business Component, then do File | Close from the
main menu, and finally re-expand the project in the Application
Navigator. This will insure the merged, up-to-date metadata is shown.
Code Migration Advice for Users Who Override getViewCriteriaWhereClause()
In ADF 10.1.3 a ViewObject can have multiple view criterias. As part of introducing
support for this feature, as well as for features related to finer programmatic
control over in-memory row filtering, we needed to introduce a new overloading
for ViewObjectImpl.getViewCriteriaWhereClause() that accepts a boolean
flag. The previous method that takes no arguments is no longer called. So,
if you have overridden getViewCriteriaWhereClause() in 10.1.2 or
earlier, follow these suggestions to migrate your code to 10.1.3:
Suppose you started off with:
public String getViewCriteriaClause()
{
// your-code here
}
If your VO only has at the most one VC and the VC is always used for database
query (and never for in-memory filtering), you can simply change your existing
overridden method to have a Boolean parameter so that it becomes an override for
the new method signature. However, if you wish to take advantage of the multiple
view criteria feature and/or view criteria support for in-memory filtering, then
you may want to enhance your existing override code to make use of the following
method in ViewObjectImpl:
public ViewCriteria[] getApplyViewCriterias(int criteriaMode)
Call it with oracle.jbo.ViewCriteria.CRITERIA_MODE_QUERY if you want
to get view criterias for a database query. Call it with ViewCriteria.CRITERIA_MODE_CACHE
flag to get view criterias for in-memory filtering. Note that for in-memory
filtering, the WHERE clause returned must use view object attribute names
and not DB column names. Conversely, of course, for the dB query WHERE clause,
it must use dB column names.
Changes in Behavior for oracle.jbo.domain.Raw Domain
To address Bug# 4932766 reporting a regression in 10.1.3 for finding entity objects
with a primary key of type oracle.jbo.domain.Raw, we were required to slightly
change the behavior of the Raw domain. The String constructor for the Raw domain
now expects the string to be the hexidecimal dump of the raw value. For example,
if you want a Raw whose byte array has length 3 and has chars 'A', 'B', 'C'
in it, you must call:
new Raw("414243"); // 0x41 is hex ascii code for 'A', etc.
If you have code that depends on the previous behavior of the Raw domain's string constructor, you can change code like:
new Raw("ABC")
to
new Raw("ABC".getBytes());
to preserve the previous semantics.
Imported ADF Business Components Appear in Wizards/Editors,
But No Longer Appear in Navigator
Based on the experience of numerous customers who have built
large, enterprise applications using the ADF Business
Components importing feature to share reusable libraries of
components, we no longer display the imported components in the
navigator of the importing project. The imported components show up as
they always have in the Available
components list in ADF Business Components wizards and editors, but no
longer appear in the System Navigator or the Application Navigator.
This has two key benefits:
It's more obvious which components are editable in the importing project (which imported components will not be)
The Application Navigator (and System Navigator) display is not cluttered with the components only being used by reference
The one minor drawback that this otherwise nice improvement implies is
that until we add a specific operation to "un-import" a package of
components, if you ever need to completely remove a reference to an
imported package of ADF BC components, you will need to remove it's
corresponding entry in the importing projects *.jpx file. You can follow these steps:
Insure that no existing components in your project depend on any
components in the package you are about to remove from being imported.
Using the JDeveloper Search | Find in Files... feature to search your ADF BC *.xml
component metadata files for the fully-qualified name of the package
you are about to remove is a good way to identify any candidate
components that might depend on components in that package.
Make sure the project that is importing the package you wish to remove is currently not open in JDeveloper
Find the YourProjectName.jpx file in the root of the project's source path (typically ./src)
Open the YourProjectName.jpx file in a text editor like Notepad or vi and remove the <Containee> element related to the imported package. It will have a nested <DesignTime> element with a property named _locationURL and look something like this:
Make sure to remove all of the text between and including the appropriate <Containee> ... and ... </Containee> tags.
Reopen the project in JDeveloper and the imported package's components will no longer appear in any of the wizard or editor Available lists.
The ADF design time only sees components in packages that are:
Included in the current project for editing, or
Imported read-only in the current project from a library.
The implication of adding a package of business components to your
JDeveloper project (by adding the packagename.xml file for the package
of components named packagename) is that you can edit any aspect if
needed using the BC4J wizards, and you see the source code.
The implication of importing a package of business components from
a library is that the components are available in the various ADF BC design
time wizards to be referred to by editable components in your current project,
but you cannot modify the imported components. In fact, the Java source code
need not be present in the library JAR file at all (just *.class and *Xml files).
You create a JAR file of ADF BC components using our
simple JAR file BC Deployment profile option. You can access that from
the right-mouse menu of an application module component by selecting
"Business Components Deployment...".
You import a package of ADF BC components by:
Creating a library for your JAR file on the Libraries tab of your
project properties. If you need access to the domains and configuration
of those components, make sure to include in the library definition
both the *CSMT.jar as well as the *CSCommon.jar files.
Including that library in your project's library list
File | Import... | Business Components
Use the file open dialog to navigate into your library's JAR
file and select the packagename.xml file for the package named
"packagename" of components from that library that you want to import.
You'll see if you select one of the imported components that you can
inspect its properties in the Business Components editors, but
everything is greyed out since imported components are not editable in
the importing project by design.
NOTE: If you are working in the importing project,
and have made updates in the imported project by producing a new JAR file, be
aware that those changes will not be "seen" by the importing project until you
close it and re-open it.
Retaining Currency for ADF BC Accessor Collections (4927737,
4927757)
For ADF BC accessor-based collections, to retain currency across requests, you
should mark the master view objects to retain currency on the view link accessors
by calling setViewLinkAccessorRetained(true) on the master view objects before
invoking the accessor collections.
The same is true in the case where the same accessor is used in multiple-web-pages,
if the currency is to be retained across the pages, then one should mark the
master view objects to retain currency on the view linked accessors by calling
setViewLinkAccessorRetained(true) on the master view objects before invoking
the accessor collections.
For example, to override the create method from ViewObjectImpl in DeptViewImpl:
And then on create, the focus remains on the created row or selected edit row.
ADF DataBinding Issues
DataBinding: References to Bindings in Non-Current
BindingContainer Require Changes After Migration
It is a best practice for each page or panel's binding container to define
the bindings for all data it needs to reference. This is the situation that
you get by default when building pages by dropping controls from the ADF Data
Control palette, for example. If you have developed your pages using this best
practice then no application changes are required upon migrating to 10.1.3.
However, if your application contains pages that refer to bindings from binding
containers other than the current page's binding container, please read on for
important information you need to be aware of when migrating existing applications
to 10.1.3.
For web applications, the ADF Model runtime framework automatically "prepares"
the correct binding container for the current page request during the "prepareModel"
phase of the lifecycle, and releases any state held by the bindings in that
current binding container at the end of the request. This improves scalability
by avoiding unnecessary session-level state. In 10.1.2, if the current page
attempted to access a binding from another binding container using an EL
expression like ${data.SomeNonCurrentBindingContainer.SomeBindingName}
-- then we previously attempted an on-demand prepareModel() for the single
iterator related to that binding in the context of the current request. In some
situations, this worked ok. Unfortunately, the behavior was inconsistent and
could produce unexpected side-effects that surprised many developers depending
on the kind of iterator the non-current binding was related to. To address this
inconsistency, and to promote the best practice described above, we now
avoid this on-demand, per-iterator preparation altogether. The net effect is
that by default, the current page can only reference bindings from its own binding
container.
You can search your application pages for occurrences of "${data."
to check whether your application contains any such references. If it does, you
can replace them systematically by:
Using the Structure Pane to create a new binding in the current page's Page
Definition which references the same iterator and attribute that the binding
in the other binding container was referencing.
Changing your current reference of ${data.SomeNonCurrentBindingContainer.SomeBindingName}
to ${bindings.NewBindingName}
If you reference bindings like ${data.SomeBindingContainer.SomeBindingName}
in "shared" JSP page fragments that you include into multiple pages, then you
can programmatically prepare the SomeBindingContainer during the current page
request by overriding the prepareModel() method of your existing
DataAction class and calling a helper method like prepareBindingContainer()
below after super.prepareModel() to refresh the necessary binding
container containing the binding you need to reference in the page:
public void prepareBindingContainer(DataActionContext ctx, String bcName)
{
ctx.getBindingContext().findBindingContainer(bcName)
.refresh(DCBindingContainer.PREPARE_MODEL);
}
Your overridden prepareModel() method would therefore look like
this:
// Programmatically prepare NameOfOtherPageUIModel
binding container
// in this request, too
public void prepareModel(DataActionContext context) {
super.prepareModel(context);
prepareBindingContainer(context,"NameOfOtherPageUIModel");
}
If you are adding this code to the DataPage for the first time in 10.1.3, the
class will be a subclass of the new PageController class
which has the same prepareModel() lifecycle method to override,
and the helper method would look like this:
public void refreshBindingContainer(LifecycleContext
ctx, String bcName) {
ctx.getBindingContext().findBindingContainer(bcName)
Refresh(DCBindingContainer.PREPARE_MODEL);
}
Currently the ADF Business Components data control is the only data control
to aggressively enforce this new behavior, but other data control implementations
will follow this policy in a future maintenance release so it's best to follow
the best practice advice effective immediately regardless of what kind of data
control you are using in your applications.
DataBinding: RefreshCondition in pageDefinition Evaluates
to True for Non-Existing EL Entries (4759317)
If the el-expression provided for the RefreshCondition property on an executable
in a pageDefinition file has a name that does not exist in the el space or evaluates
to null, then RefreshCondition is currently ignored and based on the Refresh
property of the executable, the executable is refreshed or not. This default
behavior may change in future to interpret such missing entries in the El-expression
as 'false'. In this release, applications should ensure that the entry provided
in RefreshCondition truly evaluates to a java boolean value.
DataBinding: Renaming Application Module Does Not Rename
Reference from DataBindings.cpx (3433164)
Renaming an Application Module causes the AM Java class and default configuration
to be renamed. However, the DataBindings.cpx file will still refer to the old
configuration, and the Default Run Target of the Model project will still refer
to the old name of the Java class. If you rename the application module or change
the package name, you need to use the property inspector to make the necessary
updates.
DataBinding: Migrating Search Forms With Bean Data Controls
in 10.1.2
In 10.1.2, even though the bean data control supports Find mode, the bean attributes
were not identified as queriable. When you migrate a search form to 10.1.3,
use the Property Inspector for the bean data control attributes to set IsQueriable
to true for those attributes of a search form that you want to participate in
the search. Note, in 10.1.3, the design time will define new bean attributes
as updateable.
DataBinding: Deprecated Properties Appear in EL Expression
Builder Dialog List
The Expression Builder dialog in JDeveloper helps you build EL expressions
by providing lists of objects, managed beans, and properties. When you use this
dialog to edit ADF databound expressions for properties of ADF bindings, the
dialog will display the ADF Bindings variables available for use with each binding
object in your page. Currently, the list contains some binding properties that
should not be used in 10.1.3. The list of deprecated properties which appears
in this dialog includes:
- actionEnabled found on Action binding
- allRowsInRange found on JUVariableIteratorBinding
- application found in JUFormBinding, JUIteratorBinding, JUVariableIteratorBinding
- applicationModule found on JUIteratorBinding and JUVariableIteratorBinding
- attributeDef found on Hierarchical (tree), Range bindings
- attributeDefs found on JUVariableIteratorBinding
- autoSyncEnabled found on Tree (HierNodeBinding) binding
- currentRow found on Tree (HierNodeBinding) binding
- displayListIterator found on Boolean, List bindings
- error found on Hierarchical (tree), Range bindings
- estimatedRowCount found on JUVariableIteratorBinding
- findMode found on JUVariableIteratorBinding
- formBinding found on JUVariableIteratorBinding and JUIteratorBinding
- hierTypeBinding found on Tree (HierNodeBinding) binding
- inputValue found on Hierarchical (tree), Range bindings
- label found on Hierarchical (tree), Range bindings
- listIterBinding found on Boolean, List bindings
- mandatory found on Hierarchical (tree), Range bindings
- orderedVOUsageList found on JUFormBinding
- operationEnabled found on Action binding
- operationSupported found on JUVariableIteratorBinding
- panel found on JUFormBinding
- path found on Action binding
- rangeSize found on Hierarchical (tree) binding, JUVariableIteratorBinding
- rangeStart found on Hierarchical (tree) binding, JUVariableIteratorBinding
- rangeSet found on Hierarchical (tree),
- singleAttrList found on Boolean binding
- sourceName found on JUVariableIteratorBinding
- tooltip found on Hierarchical (tree), Range bindings
- updateable found on Hierarchical (tree), Range bindings
- valueAt found on JUCtrlAttrsBinding
- viewObject found on JUVariableIteratorBinding
- VOName found on JUVariableIteratorBinding
Please avoid using the above properties on the indicated bindings, as they
will be removed in a future release.
JSF: Migrating Applications Created in Early Access 1
Preview Release
If you built applications with EA1 be aware we have renamed a method named
"invoke" to "execute" in the faces bindings. Default buttons
that might have dropped from the data control palette like a (First) button,
for example, will look like this in their EA1 application:
JSF: To Continue Using ADF Binding After Invalidating
HTTP Session, Use Redirect
The ADF BindingContext is by design only created once per request, regardless
of how many forwards are performed during the request. If you destroy the BindingContext
during the request by invalidating the HttpSession then you need to perform
an HTTP redirect in order for a new HTTP Session with a new ADF Binding Context
to be created successfully. Using JSF, you can perform this redirect declaratively
by marking the redirect property on a JSF navigation case.
JSF: Cryptic Faces Message When Scope of Bean not Requested
When Using ADFm (4865235)
If you receive the error message:
SEVERE: Managedbean main_bean could not be created The scope of the referenced object: '#{bindings}' is shorter than the referring object
keep in mind that when creating a programmatic method binding for an ADFm bound
command component, the selected managed bean must be on the request scope. During
code generation, the ADF binding container is injected into the managed bean
as a managed property. Since the binding container is on the request scope,
it cannot be referenced by the managed bean if the bean has a wider scope.
JSF: Date Searches on a JSF Page Search Form Must Use
Exact Dates (4866111)
By default, a JSF page search form will use the <af:selectInputDate>
component for dates. This component allows only exact dates, so use
of the > and < operators, which are valid for other components, will generate
a validation failure. An alternative, if you wish to use wildcards, is to use
an <AF:inputText> component and remove the <convertDateTime>
tag.
JSF: No Validation Error When newEmp Called With Duplicate
PK (4894440)
With EJB 3.0 you may not see duplicate PK validation if the action on persistEntity
is hard coded. Need to double click on the method to programmatically execute
the method where code is added to return null as outcome in case of errors which
takes user back to create emp page.
JSF: Page Definition File not Correct When Method Parameter
Form is Dropped (4927825)
An incorrect pagedef is generated when creating a JSF JSP page with an accessor
based VO method. This causes a runtime error when the page is run. The workaround
is to manually modify the generated pagedef file as follows: (Assuming that
the method name is "foo".)
Remove the extra <methodAction> element generated with an id of "foo1"
and replace all references to "foo1" in the generated JSP page to
"foo".
Fix the remaining <methodAction> element for "foo", by setting
its InstanceName attribute to "bindings.yourIterator.viewObject",
and the IsViewObjectMethod attribute to "false".
If the method contains parameter, locate the <attributeValues> element
generated and make sure that the value of the IterBinding attribute is "variables".
JSP: ADF Databinding Not Supported for JSP Segment Files
(4482836)
ADF Databinding is not supported for JSP segment files. Databound components
cannot be dropped onto JSP segment files.
JSP: Deleting a UI Control From a Struts ADF JSP Page
Does not Delete the Binding From the Page Definition (4865716)
Deleting a UI control in the Visual Editor or the Source view of a JSP page
in a Struts ADF application does not delete the corresponding binding in the
page definition file for the page. You can delete the binding from the page
definition file manually, either using the Structure window or the Source editor.
Toplink: 'findAll' Node Not Present
in Data Control Palette After TopLink Project Migrated (4861593)
When you migrate a Toplink workspace, and recreate the
data control from session.xml, the findAll node does not appear
in the data control palette. This is because only newly created projects have
these queries defined. The workaround is to add the findAll query to any descriptors
which require it.
EJB: Bean XML File not Crated
for Migrated Workspace (4561083)
When you migrate a workspace containing an EJB and create
a data control from it, the .xml file generated from the bean class is not created.
The workaround is to manually refresh the bean class, by choosing Refresh from
the context menu in the Structure window.
Bean: Operations Node Missing for Detail Accessor (4722815)
When generating Bean-based data controls, such as JavaBean and EJB data controls,
the framework is able to traverse JDK 1.5 generic collection type metadata,
of the form "Collection<SomeType>". When Collection fields,
methods or parameters are not type-specified in this way, you will need to tell
the framework what type of objects a Collection holds, if known. To do this,
select the Collection accessor in the Structure Pane, invoke the Property Inspector,
and enter the object type for that accessor in the BeanClass field.
To enable the Collection operations you would like to appear in the Operations
folder associated with this accessor in the data control palette, enter a value
like 'UpdateableCollection' or 'ReadOnlyCollection' in the CollectionBeanClass
field.
ADF Faces Issues
Migrating ADF Faces Applications Created in Early Access
1 Preview Release (4926577)
Because of library changes, migrated applications from
EA1 may not render or run correctly. To resolve this, go to the Project Properties
taglib section and remove and then read ADF Faces tag libraries.
Issue with Using <afc:cache>
as a Parent to <af:document> (4904771)
When you make the <afc:cache> tag a parent to
the <af:document> tag, the XML Source Editor may display the following
error:
Invalid parent element for element af:document
This error does not result in runtime issues. You can either ignore this error
or move the <afc:cache> tag inside the <af:document> tag. If you
choose the latter, then the cache stores the fragment content contained within
the <af:document> tag rather than the page content contained within the
<f:view> tag. This change does not affect the actual content stored in
the cache.
Using <afc:cache> for Included Fragments from Main
Application Page That Reposts (4954619)
If a main application page performs a re-POST--a request that is the result
of a POST back from the same page--and contains an included fragment that is
in its own subpage, do not use the <afc:cache> in the included fragment.
A button or tab that updates the main page is an example of re-POST. Using a
<afc:cache> tag with this type of fragment may result in unexpected page
navigation.
ADF Faces Table Doesn't Render on MAC with 1.5.0_05 (4961228)
On the Apple Macintosh platform, if you are using JDK 1.5, please use JDK version
1.5.0_06 or later. JDK 1.5 versions before 1.5.0_06 contain a bug that will
cause an ADF Faces table component to fail to render in the Visual Editor, and
could potentially cause other rendering problems as well.
ADF URL and Web Service Data Control Issues
Running the Web Service Data Control in Same Application
as Target Web Service on Embedded OC4J Instance
The WSDL files and endpoint information generated for the Web Service is for
deployment against standalone oc4j instance at standard port 8888. The data
control configures its connection to the Web Service at this port. Since the
embedded OC4J runs on port 8988 by default, when the data control executes the
Web Service endpoint becomes unreachable. You must use the "Edit Web Service
Connection " dialog to modify the endpoint port to the embedded OC4J port.
WSDL's Not Supported by Web Service Data Control (4524777)
Schemas in the WSDL which have complex types that are defined as ANY
data type or ones whose type is defined as a whole schema, are not supported.
Workaround for URL Datacontrol on Embedded OC4J Instance
(4561310)
The embedded oc4j instance must be terminated after copying jdev_home\j2ee\home\config\system-jazn-data.xml
to the embedded-oc4j\config before running the JSPagain, otherwise the newly
copied system-jazn-data.xml does not get picked up by the embedded-oc4j.
Workaround for URL Datacontrol on iAS Server (4572201)
A workaround is required for URL datacontrol
Copy the system-jazn-data.xml from the jdev_home\j2ee\home\config (the JDeveloper
where the URL datacontrol project was created) to the ias_home\j2ee\home\config.
If you don't want to overwrite this file cut/paste the URLConnection credentials
into this file.
Stop the iAS server, \ias_home\opmn\bin\opmnctl stopall, then restart with
opmnctl startall.
ADF Swing (JClient) Issues
ADF Swing WebStart Does not Work with EJB 3.0 (4755365)
ADF Swing client built against EJB 3.0 DataControl cannot be deployed using
WebStart. This is due to WebStart deployment descriptor limitation. In order
for ADF Swing client work with an EJB 3.0 DataControl, it is necessary to pass
-javaagent command line argument to the VM. However, the WebStart deployment
descriptor does not allow the -javaagent parameter to be specified. This limitation
does not affect EJB 2.1 Data Control.
JClient Security Still Requires AM Property Setting (4889913)
JClient applications should continue to use application module configuration
property jbo.security.enforce for enabling authentication and authorization.
The authorizationEnforce property in adf-config.xml new in 10.1.3 is not yet
supported for JClient.
Migrating an ADF Swing Application from 9.0.4 or Earlier
(4922256)
When you migrate a 9.0.4 or earlier ADF Swing (JClient) application to JDeveloper
10.1.3, you will not be able to reuse the migrated panels within new panels
and forms that you create in your 10.1.3 application. Additionally, it will
not be possible to extend the migrated panels by dragging and dropping from
the Data Control Palette. These limitations are due to the introduction of page
definition files to define bindings starting with JDeveloper 9.0.5. The best
way to extend migrated panels is to use the Component Palette and to edit the
Document/Model properties in the panel's source.
Miscellaneous Issues
Changes to XSQL Pages Design Time Support
This release contains some changes to the way JDeveloper automatically configures
your projects when working with Oracle XSQL pages:
By default, we now configure the XSQLConfig.xml
file in your project to use JDBC Datasources, taking advantage of a
built-in feature in the Oracle XSQL Pages engine that makes your
database connection information simpler, safer, and more
centralized to manage. This means your XSQL pages by default use the
datasources configured in your J2EE web application environment.
JDeveloper automatically configures these connections for you based on
the connections you've defined in the Connection Navigator.
Accordingly, the XSQL component palette adds the connection
attribute to your page as necessary using the JNDI name of the
datasource you've selected using a syntax like connection="jdbc/scottDS" instead of the connection="scott" that is required when using the named connections defined directly in the XSQLConfig.xml file.
Instructions are included inside comments in the XSQLConfig.xml file for changing
the <connection-manager>/<factory> back to the XSQL default of using
XSQLConfig.xml-based named connections if you want to continue using that mechanism.
Translated Files for ASK Messages
Missing in 10.1.3.0.0 (4919605)
The Ask component in 10.1.3.0.0 only supports the en_US
locale. The impact is that certain end user facing content will be in English
only. Other locales will be supported in subsequent releases.
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065, USA http://www.oracle.com