last updated: April 15, 2009
Known Issues for JDeveloper and ADF 11g (11.1.1.0.2)
This document lists known issues for this release. As new issues arise, they will be added to this document.
Migration to JDeveloper 11g is supported from JDeveloper 10.1.3.4 only. If you are using an earlier version of JDeveloper, Oracle recommends migrating to 10.1.3.4 before migrating to 11g (11.1.1.0.0, 11.1.1.0.1 or 11.1.1.0.2).
Once an ADF application has been migrated to 11g, it will no longer work in a 10.1.3 environment. For more information about migrating ADF applications to 11g, please refer to the SRDemo Migration Guide on OTN.
Upgrading existing Oracle WebLogic Server instances to the 11.1.1.0.2 ADF runtime
Note: You will find the Oracle WebLogic Server uninstaller either as $WLSHOME/wlserver_10.3/uninstall/uninstall.sh or %WLSHOME%\wlserver_10.3\uninstall\uninstall.cmd. On a headless server (like a Linux or UNIX-based system), you may need to set the DISPLAY variable to an X Server like VNC or Xming. (Assuming that $WLSHOME or %WLSHOME% is your home directory for the WebLogic Server 10.3 installation.)
ADF 11g applications require a Java EE 5 container. To date, only Oracle WebLogic Server 10g (10.3) is certified, and we plan to support JBoss and Tomcat as well. Note, OC4J 10.1.3 and/or OAS 10.1.3 is not fully Java EE 5 compliant, and ADF 11g applications will not work in that environment. However, a generic Java EE application can be migrated to JDeveloper 11g and deployed (outside of JDeveloper) to Oracle's 10.1.3 Application Server, provided you have not included anything that would preclude running on the 10.1.3 Application Server.
JDeveloper 11g now includes support for Oracle WebLogic Server as the integrated server, used when running and debugging web applications from within the JDeveloper design time. In this release, only Oracle WebLogic Server 10g (10.3) can be used for this purpose, and you must use the domain created during installation of JDeveloper (DefaultDomain).
We welcome and encourage your feedback. Your input helps us make the product better. Please use the JDeveloper community discussion forum on OTN for questions and answers, as well as to let us know what you think!
Please read the installation guide for details on system requirements and specific installation instructions for various platforms.
When launching the installer directly from a network location, you should use a mapped drive instead of a UNC path. If you use a UNC path, you will get a ClassNotFoundException (com.bea.cie.gpr.internal.model.DelegateHomeListHelper).
Performance may be degraded if you change directory to the network drive and invoke the installer using a relative path. For better performance, use a local directory as your current working directory and specify the full path to the installer. For best performance, copy the installer locally before invoking.
JDeveloper, ADF Runtime and WebLogic Server make use of 8.3 short filenames on Windows to handle cases where certain paths, such as the JDK and WebLogic domain location, contains spaces. If you wish to use spaces in those paths, please be sure you have NtfsDisable8dot3NameCreation set to the default value of 0 (not 1) before installation. You can re-enable 8.3 naming by using regedit to set HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem's NtfsDisable8dot3NameCreation to 1.
Some additional steps are required to install JDeveloper on Mac OS beyond what is documented in the installation guide . Please refer to the installation guide for additional details on installing JDeveloper for Mac OS X.
cd /SystemLibrary/Frameworks/JavaVM.framework/Versions/1.6.0/Home/
su root
mkdir jre
cd jre
mkdir lib
cd lib
ln -s ../../../Classes/classes.jar rt.jar
If you install into a directory with long file names, in which one of the folder names contains more than one '.' (such as c:\Oracle\JDeveloper\11.1.1), the resulting 8.3 filepath generated by NT's ~fsi construct is garbled. Since the cmd scripts in WLS rely on ~fsi to properly translate long names in to 8.3 format, this bug breaks a number of utilities, such as quickstart and configwiz.
Applications and projects opened in the original version are not opened in the version after migrating system files. The work around is to manually migrate the workspaces and projects by opening them in the new JDeveloper version. However, breakpoints and window positions are not migrated after manually migrating.
The JDeveloper migration utility cannot migrate custom 10.1.3 ADF Faces components to 11g. You must manually migrate all custom components to 11g.
When you migrate a project containing web services created in an earlier version of JDeveloper, the Projects page of the migration wizard asks whether you want to migrate the web.xml file to version 2.5 web.xml. You should deselect this field because JAX-RPC web services do not work with version 2.5 web.xml files. They work only with version 2.4 web.xml files.
After you have migrated a project containing a J2EE 1.4 web service to JDeveloper 11g , you will be able to continue working on that web service because the J2EE 1.4 web services wizards are available, although they are not exposed except in this circumstance. In addition, any further services created in the same project will also be J2EE 1.4 web services. Note that J2EE 1.4 services can be deployed only to an OC4J server (not to Oracle WebLogic Server) because they may contain properties that will only work in the context of an OC4J server.
J2EE 1.3 web services are not supported in JDeveloper 11g .
When you migrate JDeveloper 10.1.3 applications containing JPA persistence units to 11g, you need to take a few additional steps to migrate your database connections. These steps ensure that the database connections defined in the IDE are available to your JPA applications when they run in the ADRS integrated WebLogic application server bundled with JDeveloper 11g. When running in ADRS, JDeveloper uses these database connection definitions to automatically create corresponding elements required by your JPA persistence units.
There are two paths for migrating applications from JDeveloper 10.1.3 to 11g: you can migrate an entire 10.1.3 application by installing the 11g upgrade and working through the install wizard , or you can migrate a 10.1.3 application from within an existing JDeveloper 11g installation. Each path produces different results for the corresponding database connections created in the migrated application Application Resources folder. These differences have to do with the way in which database connections are stored. In JDeveloper 10.1.3, database connections were stored globally, in a connections.xml file. In 11g, the database connections are defined within each application.
If you are migrating an entire 10.1.3 installation prior to working in 11g, point to your 10.1.3 system area when you launch JDeveloper 11g for the first time. This migrates all of the applications and connections found in the 10.1.3 work area, and you will be all set to run applications containing JPA persistence units using the ADRS integrated WebLogic server bundled with JDeveloper 11g. If you are already running JDeveloper 11g and choose instead to open and migrate an existing 10.1.3 application by opening its .jws file, all necessary named database connections will be created, but their connection details will be missing.
For individual 10.1.3 applications migrated into an existing version of JDeveloper 11g, you will need to manually add those connection details.
To manually add your database connection details:
Once your application and its database connections (including all connection details) have been successfully migrated, you are ready to run your JPA application in the integrated ADRS WebLogic server. If you deploy to a remote server, you need to manually add a data source with the JDBC connection information in the server administrative console. Once your data source connection details are specified, the data source reference generated into the persistence unit during migration will resolve correctly to the data sources you have defined.
To manually set up your global database connection details for global deployment:
http://localhost:7001/console
in your browser address bar. Note that you may have a different port number depending on your configuration. The ADRS port is 7101.persistence-unit
of the persistence.xml file called jta-data-source
. Enter the value (jdbc/ConnectionIDS) defined in the persistence.xml file as the name of your JDBC data source in the server administrative console.When selecting Versioning -> Subversion -> Create Repository to create a file repository, the "Create Subversion Connection" panel pops up and asks for information. Simply ignore this panel by clicking the "Cancel" button and then ignore the following "No Subversion Repository Information Found" error message by clicking the "OK" button. The repository should still be created and can be accessed in normal ways (e.g. from the Versioning Navigator).
To increase the performance of compile and clean commands it is recommended that the JDeveloper Projects output path does not point to a location within the Subversion working copy.
If a folder is under version control ( eg Subversion) and user performs a Refactor -> Rename or Refactor->Move the operation will fail. The work around is to refactor the files within folder.
Port Binding Error in Integrated WLS - If a port binding error is encountered when starting the Integrated WLS domain it is likely because the port is already in use. The user will have to configure an unused port under Tools->Preferences->Run->Edit Server Instances->Server Instances->DefaultServer->Startup->Listen Port.
ADF applications with connections that require a password and are deployed to the same Weblogic Domain must provide unique connection names. Consider two ADF applications (Application1, Application2) that are deployed to a WLS Domain. If both applications have Connection1, the connection names could be called Application1_Connection1 and Application2_Connection1.
For information about configuring a Managed Server on Oracle WebLogic Server, see Configuring Managed Servers in the Creating WebLogic Domains Using the Configuration Wizard guide.
After you deploy a web application to standalone Oracle WLS, you must migrate your application's credential store and any security policies outside of JDeveloper. A script has been provided to assist with this process. The script merges the credentials of your application with the existing data store. Additionally, if your web application implements security, the script can merge application-level security policies with domain-level policies. Use of the script is necessary to complete deployment of a production application since JDeveloper does not deploy the database connection credentials and security policies. For the steps to perform the migration, see "Migrating the Security Repository to a Production Environment" in the "Developing Secure Applications" section of the JDeveloper online help. This topic describes how to use the script to migrate a credentials data store, a security data store, or both data stores.
For a simplified approach to migrate application credentials and policies for the two most common use cases, see the OTN "How To" article Simplified ADF 11g Application Credential and Policy Migration to Standalone WebLogic Servers.
When deploying non-ADF applications, you must first upgrade your Oracle WebLogic Server 10.3 to the latest patch release.
The debug action buttons, such as buttons for step over, step into, and more, always show on the main toolbar during a debugging session, but they will not show by default on the debugger log pages. To show the debug action buttons on the debugger log pages, turn on the option "Show Toolbar in Log Window While Debugging" on the Debugger Preferences page.
Currently objects will only be displayed in the debugger windows when used, if only initialized in the declaration will not show in Data nor Smart Data windows. This does not apply to native types.
You can only debug one Java EE application at a time. If you are debugging a Java EE application, and you debug a second Java EE application, the first application will be terminated and undeployed, and the server will be restarted to debug the second application.
Having the following environment variable set in the environment from which JDeveloper is launched interferes with attempts to start the WLS debugger under Integrated WLS:
set debugFlag=true
This flag is used when launching the WLS debugger from outside of JDev, as through a cmd shell. When present, it signals to the WLS domain start script to add an extra set of args to the java process. Unfortunately, these conflict with the ones we are already passing, causing this error:
Error occurred during initialization of VM agent library failed to init: jdwp
ERROR: Cannot load this JVM TI agent twice, check your Java command line for duplicate jdwp options.
To avoid the conflict, you will need to remove/unset the debugFlag environment variable in the environment from which JDeveloper is launched.
The policy enforcement in the WLS server does not happen in the following case:
To make the policy enforcement work:
<web:webservice-policy-ref
xmlns:web="http://xmlns.oracle.com/weblogic/webservice-policy-ref">
<web:port-policy>
<web:port-name>myPort</web:port-name>
<web:ws-policy>
<web:uri>policy:Wssp1.2-2007-Wss1.0-UsernameToken-Plain-X509-Basic256.xml</web:uri>
<web:direction>both</web:direction>
</web:Ws-policy>
</web:port-policy>
</web:webservice-policy-ref>
To attach more than one policy to the port, repeat the element with the required policy URI.
If there are methods annotated with WLS policies, then insert a xml block similar to the one below with the correct operation name and the policy details. The element must be inserted within the element.
<web:operation-policy>
<web:operation-name>myOperation</web:operation-name>
<web:Ws-policy>
<web:uri>policy:Wssp1.2-2007-Wss1.0-UsernameToken-Plain-X509-Basic256.xml</web:uri>
<web:direction>both</web:direction>
</web:Ws-policy>
</web:operation-policy>
The HTTP Analyzer will not capture traffic from a JAX-WS Java client that is being sent to localhost due to a bug in Java ( http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6737819 . Use one of the following ways to work around this:
((BindingProvider)port).getRequestProperties(BindingProvider.ENDPOINT_ADDRESS, "http://mymachine.../...");
where mymachine is the name of your local machine.
-J-Doracle.jdeveloper.webservices.localhost.default=localhost.localdomain
127.0.0.1 localhost
to be
127.0.0.1 localhost localhost.localdomain
127.0.0.1 localhost
127.0.0.1 localhost localhost.localdomain
Unless they are operating on the same schema avoid creating multiple top-down web services in the same project as each successive top-down service may over-write the ObjectFactory class created by the previous one if generated into the same package.
When creating a top-down JAX-WS EJB web service via the create wizard, and deciding to copy the wsdl locally (which is the default), make sure to change the wsdl location field to be within the project's source. It is defaulted to the Web Content area (ie public_html\WEB-INF\wsdl) and this will not work for an EJB web service as it must be in the project source area.
java.util.Map and java.util.Collection family types are not supported by the WLS JAX-RPC stack.
When calling conversational web services from HTTP Analyzer, the request message headers for the 'continue' methods need to be manually updated with the conversation id that is specific to that particular conversation. This value is available from the response SOAP message of the method that starts the conversation.
From the response message of the conversation start method, copy the xml tags similar to the one below:
<conv:ContinueHeader xmlns:conv="http://www.openuri.org/2002/04/soap/conversation/">
<conv:conversationID>uuid:701f9f3d434bfc98:-3f39a0ef:11c4b649fd4:-7fff</conv:conversationID>
</conv:ContinueHeader>
From the HTTP Content tab in HTTP Analyzer, insert the above tags within the header element of the SOAP request message, as below:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<!-- other header elements -->
<conv:ContinueHeader xmlns:conv="http://www.openuri.org/2002/04/soap/conversation/">
<conv:conversationID>uuid:701f9f3d434bfc98:-3f39a0ef:11c4b649fd4:-7fff</conv:conversationID>
</conv:ContinueHeader>
</env:Header>
<env:Body>
<!-- message data details -->
</env:Body>
</env:Envelope>
Property Inspector uses a common list editor to select multiple policies. This is different from the dialog that is available in the web service creation wizard and web service property editor. To attach multiple policies via the Property Inspector,
1. Go to the 'Web Service Extension' tab on the Property Inspector for web services and web methods.
2. Click on the button next to the 'Multiple Policies' field to invoke the list editor.
3. On the 'Edit Property' dialog, click on 'New'. This will show a new empty line in the 'List Items'.
4. Click on this empty line to view the policy URIs as a drop down list.
5. Select the required policy URI.
6. Click 'OK' to save and close the selection dialog.
Because of the OC4J proprietary nature of some of the properties set on web services that were created with previous JDeveloper releases (which supported OC4J), it is likely that there will be problems when attempting to deploy and run such services on WLS (including the integrated WLS that is bound with JDeveloper). Known problems include JAX_RPC services that have annotations, stateful services, DIME encoding, OWSM Policy (both 10.1.3 and 11 styles including WS-Security and WS-Reliability).
If you create any ADF components in an application the following entry automatically gets added to weblogic-application.xml:
<xml>
<parser-factory>
<saxparser-factory>
oracle.xml.jaxp.JXSAXParserFactory
</saxparser-factory>
<document-builder-factory>
oracle.xml.jaxp.JXDocumentBuilderFactory
</document-builder-factory>
<transformer-factory>
oracle.xml.jaxp.JXSAXTransformerFactory
</transformer-factory>
</parser-factory>
</xml>
This means that any code deployed in that application will use the oracle xml parser rather than the default weblogic one. This in some cases can result in a 20% performance improvement.
Unfortunately this change will cause JAX-WS service to fail to deploy with the following exception:
Target state: deploy failed on Server srg
[java] java.lang.NullPointerException
[Java] java.lang.NullPointerException
[Java] at weblogic.wsee.wsdl.WsdlTypes.collectNamespaces(WsdlTypes.java:213)
[Java] at weblogic.wsee.wsdl.WsdlTypes.collectNamespaces(WsdlTypes.java:229)
[Java] at weblogic.wsee.wsdl.WsdlTypes.collectNamespaces(WsdlTypes.java:229)
[Java] at weblogic.wsee.wsdl.WsdlTypes.parse(WsdlTypes.java:151)
[Java] at weblogic.wsee.wsdl.WsdlDefinitions.parseChild(WsdlDefinitions.java:520)
[Java] at weblogic.wsee.wsdl.WsdlExtensible.parse(WsdlExtensible.java:98)
Update: There is now a Weblogic patch for this issue. The patch ID is "RFRS" and the passcode "VGJ16G15". Note: This patch has already been applied to Weblogic server bundled with the JDeveloper 11.1.1.0.1 release.
A JAX-WS proxy will report that it is unable to read a wsdl when the proxy wizard made a local copy of the wsdl and is then deployed as part of a webapp. The workaround is to apply the patch T7R1 password S2LN8LWB to the weblogic server you are deploying to, or to run the server with the JRockitVM.
The BPEL server included in 10.1.3 SOA only knows how to use the '2003 draft version of the WS-Addressing specification. The JAX-WS async client will be default generate a client that by modifying the WS_ADDR_VER constants to support either the final '2005 or the member submission '2004 version of the specification. To support the '2003 version the user will need to make some minor modification to the code in order to invoke the process properly.
In the callback handler you need fix the code that requests the relatesToHeader as shown here:
// HeaderList ...
//Header relatesToheader = headerList.get(WS_ADDR_VER.relatesToTag, true);
//
String relatesToMessageId = ralatesToheader.getStringContent();
String relatesToMessageId = RelatesTo.getValue();
This uses the header which get automatically bound to a method parameter. Now the BPEL service explicitly defines both the ReplyTo and MessageID headers in the WSDL so the default proxy generator will map these to method parameters. Assuming that you accept this default you need to pass both the replyTo address and the message ID in as parameters to the method rather than as header as you will see in the generated code. The only exception for this is the WS-Addressing action header which if it is required should be set using the '2003 namespace. Here is an example that invokes a loan process that has the required edits.
americanLoan =
new AmericanLoan();
LoanService loanService = americanLoan.getLoanServicePort();
// prepare Message Id
AttributedURI messageId =
new AttributedURI();
messageId.setValue(
"uuid:" + UUID.randomUUID() );
// prepare ReplyTo
AttributedURI address =
new AttributedURI();
address.setValue(
"http://x.x.x.x:7101/Application23-Project1
-context-root/LoanServiceCallbackPort");
EndpointReferenceType replyTo =
new EndpointReferenceType();
replyTo.setAddress( address );
// prepare action header
WSBindingProvider wsbp = (WSBindingProvider)loanService;
wsbp.setOutboundHeaders(
new StringHeader(
new QName(
"http://schemas.xmlsoap.org/ws/2003/03/addressing", "Action"),
"http://services.otn.com/LoanService/initiateRequest"));
// Prepare payload
LoanApplicationType payload = ...
// Invoke service with replyTo and messageID parameter
loanService.initiate(lt, replyTo,
When using JAX-RPC web services deployed to weblogic using the generators in JDeveloper you may have trouble with method signatures that contain "bare" array types. For example:
public class Hello
{
public String[] list();
public String[] echo(String[] value);
public void process(int[] values);
}
These will either not deploy or when deployed will not work properly with errors complaining about mapping issues. There are a few workarounds for this problem:
Create a bean object that contains all the properties. When creating the web service make sure you select Document/Literal rather than Document/Wrapped to prevent double wrapping.
On the mapping options page when generating a Java web service from a WSDL make sure you uncheck the "Unwrap Wrapped parameters" box on the "Specify Default Mapping Options" page of the wizard.
The ant task will generate a working service from the bare list types but the schema for the WSDL will generate synthetic Java schema types which may not be what the user wants.
It is not possible to successfully invoke a JAX-RPC style conversational (stateful) web service deployed in weblogic server from a JAX-WS style proxy client. The design time JAX-WS proxy creation does not currently warn the user if the supplied WSDL document contains conversational behavior advertisement. Even though the tool leads to a successful generation of JAX-WS client artifacts, invoking the service from this client results in a SOAPFaultException. Only the conversation 'start' methods will get executed successfully. Invoking any other conversational methods after a conversation 'start' method will result in error.
The workaround is to use a JAX-RPC style proxy client to call a stateful service deployed in the weblogic server.
JSP compilation pertains to the whole project and not the selection.
When working with EJB Data Binding and EJB Data Controls, please make note of the refresh=ifNeeded condition in the page definition. In 10.1.3.x., refresh="ifNeeded" was a default value for method iterators. In 11g, the new default value is "deferred" or "not specified" in the page definition. For EJB Data Binding, the refresh="ifNeeded" condition is needed to maintain the concurrency for ADF Faces and JSP/JSF pages.
When developing ADF Faces with two or more JSP/JSF pages, users need to manually configure the page definition for the method iterator to say refresh="ifNeeded". This flag tells the ADF Model not to invoke the same query method twice.
The ADF Model will call an accessor method each time it is needed, to compare the cached result with the current one and to pick up changes. If the result is different, then it resets the method iterator's cache state. For EJB and EJB query methods, the result will differ every time the query method is invoked.
Consult the ADF Model documentation for the meaning of refresh="ifNeeded" and other possible values.
When importing a TopLink CMP 2 project using the "TopLInk CMP 2 Map from Orion" wizard, the user must specify the EJB 2 class files as required inputs. Failure to do so will result in compiler errors due to missing EJB-related classes. To resolve these errors the user must add the EJB 3.0 library to their project using the Project Properties dialog.
Struts and Model1 databinding will no longer support JSP 1.2. Clients wishing to stay with JSP 1.2 should instead use JDeveloper 10.1.3. JSP2+ is fully supported in this release.
There is a new restriction that we no longer support an application running ADF Struts and ADF Faces at the same time. If you wish to create an ADF Struts based project, you cannot include the "JSF 1.2" library definition in that project and if you wish to create an ADF Faces based project, you cannot include the Struts library in that project.
Development cycle: Repeatedly running or debugging an ADF application from JDeveloper may cause increasing memory usage by the integrated WebLogic server process (7393267). After repeated runs of the application the server process may fail with error "java.lang.OutOfMemoryError: PermGen space" (7445425). Both of these conditions can be resolved by stopping and restarting the integrated server process (menu option Run,>Terminate> DefaultServer followed by Run->Start Server Instance). In extreme cases it may be necessary to manually kill the server process if the menu option fails to stop it due to the memory problem.
For exploded archive deployments, in place updates to ADF task flow metadata files (like adfc-config.xml) may not be seen (7393651). This can be resolved by either redeploying the application or stopping and restarting the server. Merely stopping and restarting the application may not suffice.
Repeated start/stop or redeploy of an application causes memory to leak and the server has to be restarted to clean up the memory. New applications created in JDeveloper 11.1.1.0.1 will be configured with a Weblogic Application Lifecycle Listener to handle this scenario. For older applications migrated to 11.1.1.0.1, the listener will need to be manually added to the weblogic-application.xml of the application to solve this issue.
<listener>
<listener-class>oracle.adf.share.weblogic.listeners.ADFApplicationLifecycleListener</listener-class>
</listener>
In this release, ADFc save points created while a dialog window is shown are not correctly supported. If an implicit save point is created while a dialog window is shown, a severe warning will be written to the application log. For explicit save points, a runtime exception will be thrown. If an inline popup is shown when a save point is created, the inline popup will not get restored when the save point is restored.
In ADF Faces 11g, regions are reusable page flows. They have their own navigation rules, managed beans, and ADF Model layer page definitions. Each page within the region is a page fragment ( jsff
). Do not confuse the 11g af:region
component with either the 10.1.3 region component or its 11g version, the Trinidad region component. Both 10.1.3 and Trinidad regions are single page fragments that do not have multiple pages, navigation rules, or managed beans. The 10.1.3 region is similar to the 11g page templates and declarative components, and it will behave in 11g the same way it did in 10.1.3. The Trinidad region behaves as did the 10.1.3 region.
ADF Faces is currently supported in the following user agents (i.e. browsing platforms):
User Agent | Windows | Solaris | Mac OS X | Red Hat Linux |
---|---|---|---|---|
Internet Explorer | 7.0 | - | - | - |
Firefox 2 | 2.0.0.2+ | 2.0.0.2+ | 2.0.0.2+ | 2.0.0.2+ |
Firefox 3** | 3.0+ | 3.0+ | 3.0+ | 3.0+ |
Safari** | 3.1.2+ (desktop) | - | 3.1.2+ (desktop) | - |
** indicates that the browser is supported but not certified
Support for JAWS and Bi-Directional languages (such as Arabic or Hebrew) is only available in IE7.
You should disable or remove third party browser add-ons because they have the capability to negatively interfere with the execution of the browser and the ADF Faces client framework.
On Safari 3.1.2, af:richTextEditor component is not supported. Furthermore, many keyboard events do not fire, so users should use a mouse when using Safari 3.1.2.
To avoid conflicts between the ids of components in the same region, each jsff page fragment in a region should be wrapped with f:subview where the id of the f:subview is unique across the fragments in a region. This will ensure the uniqueness of each component in the region, regardless of page fragment.
Note that the JSF RI has changed. In 11.1.1.0.0 if you use an f:convertDateTime where the pattern attribute evaluates to null, an empty string is returned. In 10.1.3.x, if you use an f:convertDateTime where the pattern attribute evaluates to null, null is returned.
The reference implementation for JSF has changed, and the EL engine is now much stricter in terms of what values may be pushed into the expression. As a result of this users could now see converter exceptions that they didn't see in the past. The exceptions look like:
org.apache.myfaces.trinidadinternal.convert.ConvertException:
Could not convert ??? of type class ??? to class ???
These converter exceptions are most likely to be seen when using jbo domain types. Currently, our converters handle a number of the jbo domain types, but not all of them. If you are seeing type conversion errors on jbo domain types you can add a custom converter to fix the problem (note future releases will include this converter). This involves 3 steps:
<:converter id="oracle.genericDomain"/>
<Converter>
<display-name>Generic Domain Converter</display-name>
<converter-id>oracle.genericDomain</converter-id>
<converter-class>oracle.adfinternal.view.faces.convert.GenericDomainConverter</converter-class>
</converter>
package oracle.adfinternal.view.faces.convert;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.application.FacesMessage;
import javax.faces.convert.ConverterException;
import org.apache.myfaces.trinidad.component.UIXEditableValue;
import org.apache.myfaces.trinidad.util.MessageFactory;
import oracle.jbo.JboException;
import oracle.jbo.domain.TypeFactory;
/**
* Converter for most of the oracle.jbo.domain types.
* @author The Oracle ADF Faces Team
*/
public class GenericDomainConverter implements Converter
{
public Object getAsObject(FacesContext context, UIComponent component, String value)
{
if (context == null || component == null)
throw new NullPointerException();
if(value != null)
{
// the "value" is stored on the *value* property of the component.
// The Unified EL allows us to check the type
ValueExpression expression = component.getValueExpression("value");
if (expression != null)
{
Class<?> expectedType = expression.getType(context.getELContext());
if (expectedType != null)
{
// try to convert the *value* (Object) to the TYPE of the "value" property
// of the underlying JSF component
try
{
return TypeFactory.getInstance(expectedType, value);
}
catch (JboException e)
{
Throwable cause = e.getCause();
if (cause == null)
cause = e;
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
MessageFactory.getString(context, UIXEditableValue.CONVERSION_MESSAGE_ID),
cause.getLocalizedMessage());
throw new ConverterException(msg, e);
}
}
}
}
return null;
}
public String getAsString(FacesContext context, UIComponent component, Object value)
{
return value != null ? value.toString() : null;
}
}
The useWindow attribute is normally used to control whether dialogs launched by the dialog framework are displayed in secondary browser windows (useWindow="true") or inline in the same browser window (useWindow="false"). As of this release, the value of the useWindow attribute is ignored and is always treated as "true". As a result, dialogs which were formerly run inline are now automatically promoted out to separate windows.
This change in behavior was made in order to work around problems with the inline dialog return implementation. Currently this implementation leverages non-standard servlet behavior which fails on some servlet engines, including WebLogic. We are investigating solutions for restoring the inline dialog behavior in more standard/portable way.
In this release, the application user may experience incorrect behavior if they use Ctrl+N to open a new window from their application, press the refresh button on their browser toolbar (i.e. F5), or copy and paste a URL for an ADF Faces app from one window to another. We expect to support Ctrl+N in a future release.
SimpleDateFormat patterns don't allow embedding of some literal punctuation. This problem requires users to use a literal other than dash ('-') as the separator for date components when the Locale's language is Arabic i.e. "ar". See Sun bug which lists the issue and suggested workaround: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4823811
The af:dropTarget tag must have at minimum one af:dataFlavor child tag.
The mixing of Apache MyFaces Trinidad tr: tags with ADF Faces af:
tags on the same page is not supported. You can mix the Trinidad trh:
tags with ADF Faces AF:
tags. However, there can be some cross-browser layout issues encountered with using the Trinidad trh:
tags. As a best practice use the ADF Faces AF:
layout tags as your first choice unless the layout is only achievable using the Trinidad trh:
tags.
Deprecated Tag | New Syntax |
---|---|
<dvt:dualYBarGraph> | <dvt:barGraph subType="BAR_VERT_CLUST2Y"> |
<dvt:stackedBarGraph> | <dvt:barGraph subType="BAR_VERT_STACK"> |
<dvt:dualYLineGraph> | <dvt:lineGraph subType="LINE_VERT_ABS_2Y"> |
<dvt:dualYComboGraph> | <dvt:comboGraph subType="COMBINATION_VERT_ABS_2Y"> |
<dvt:horizontalStackedBarGraph> | <dvt:horizontalBarGraph subType="BAR_HORIZ_STACK"> |
<dvt:stockCandleGraph> | <dvt:stockGraph subType="STOCK_CANDLE"> |
When creating a new Geographic Map, use the following URLs:
In order to store edits the PivotTable needs to bound to a DataControl/Model that supports writeback operations. A Rowset based DataControl, like the BC4J based DataControl is transformed into a cube and due to the transformation cannot support writebacks.
This release does not currently support resource injection through the @Resource and @Resource's notation or @PostCostruct and @PreDestroy from injected resources. ADFFaces is dependent on a version of Faces that was not included with WLS. As such, the current JSF R.I. 1.2.7.1 shared library that is distributed with this release does not contain the WLS Resource injector which is responsible for such functionality.
For example, lets say you have the following entry in your web.xml file:
<env-entry>
<env-entry-name>welcomeMessage
</env-entry-name>
<env-entry-type>java.lang.String
</env-entry-type>
<env-entry-value>Hello there
</env-entry-value>
</env-entry>
This will expose the String entry into the J2EE environment with the name "welcomeMessage". Then let's say we define the following JSF managed bean (named "test") defined in the faces-config.xml:
TestRequestBean.java
public class TestRequestBean
{
@Resource(name=
"welcomeMessage")
private
String _welcomeMessage;
public
String getMessage()
{
return _welcomeMessage ;
}
}
When running in an environment with the properly configured resource injector, the value of _welcomeMessage would be assigned to "Hello there" which was taken from the entry in the web.xml. Without the resource injector, this value will be null when the bean is instantiated. Those needing resource injection are welcome to continue to use JSF 1.2.3 which is included with Weblogic, but you will not be able to ADFFaces Richclient or Trinidad because of some bugs with that distribution.
Keep in mind that the limitation for @PostConstruct and @PreDestroy annotations applies only to injected resources, JSF Managed beans and objects stored in one of the J2EE scopes will work just fine.
A search binding provides the model-driven behavior for a search form (i.e. <af:query> component) at runtime. It is related to a particular iterator and view criteria on that iterator, whose runtime defaults are specified by the Binds and Criteria properties of the search binding, respectively. This section describes the default behavior of the search binding which has changed since Technology Preview 4.
How a search form behaves the first time it's used in a page flow
A view criteria has a UI hint called "Query Automatically" that can be set on the "Control Hints" tab of the view criteria editor. This property defaults to false (i.e. unchecked). The first time a search form is used in a task flow, the "Query Automatically" hint of the view criteria related to a search binding affects the search binding's runtime behavior in the following way. If the search binding's related view criteria has its "Query Automatically" hint set to:
This feature is known as the search binding's initial AutoQuery-or-ClearRowSet behavior.
What you may need to know about the query automatically hint for the implicit view criteria
There is no declarative way in this release to set the "Query Automatically" hint on the implicit "All Queriable Attributes" view criteria. It can be configured delcaratively only on developer-created, named view criteria. However, you can use the setProperty()*API on the ViewCriteria interface to configure the hint at runtime on any view criteria, including the implicitly-defined one. Set the property whose name is given by the constant *ViewCriteriaHints.CRITERIA_AUTO_EXECUTE to the value Boolean.TRUE to achieve this*.*
How a search binding behaves when the end-user changes the view criteria using the saved search dropdown
The "Query Automatically" hint on the view criteria related to the search binding also affects the behavior when the end-user changes the current view criteria using the "Saved Search" dropdown list. When the new view criteria selected by the end user has:
The search binding's queryPerformed property evaluates to true if the search binding has automatically performed the query as described above, as well as when the end-user has performed the query by clicking the (Search) button. Pressing the (Reset) button in the search form resets the view criteria and sets the queryPerformed property back to false again.
The search binding offers two properties that allow you to customize its default behavior: TrackQueryPerformed and InitialQueryOverridden.
The TrackQueryPerformed property
A search binding's TackQueryPerformed property controls whether it manages its queryPerformedflag at runtime at the page flow level or at the level of the individual page/pageFragment on which the search form appears. The two valid values for the property are "pageFlow" and "page". The default is "pageFlow". These values cause the search binding to behave as follows:
You can set the search binding's TrackQueryPerformed property in the property inspector.
How TrackQueryPerformed affects search binding initial AutoQuery-or-ClearRowSet behavior
When TrackQueryPerformed property of a search binding is set to "pageFlow" then that search binding's initial AutoQuery-or-ClearRowSet behavior described above is performed once during the page flow. In contrast, when TrackQueryPerformed is set to "page" then the initial AutoQuery-or-ClearRowSet behavior is performed each time the end-user visits the page (or page fragment).
The InitialQueryOverridden property
A search binding's InitialQueryOverridden property controls whether it should suppress its initial AutoQuery-or-ClearRowSet behavior the first time the search binding is used in a page flow. If TrackQueryPerformed is true, then it effectively means that it suppressValid values include "true", "false", or a boolean-valued EL expression. The default value for the property is false.
When InitialQueryOverridden evaluates to "true" or boolean true, then the initial AutoQuery-or-ClearRowSet behavior is suppressed the first time the search binding is used in a page flow. If TrackQueryPerformed is set to "pageFlow", then effectively this means that it suppresses the only initial AutoQuery-or-ClearRowsSet behavior that would have occurred for this search binding.
In contrast, if search binding's TrackQueryPerformed property is set to "page" then only the initial AutoQuery-or-ClearRowSet behavior that would have occurred is suppressed. Subsequent initial AutoQuery-or-ClearRowSet behaviors that occur due to the user's navigating back to the same page (or page fragment) are not affected by the InitialQueryOverridden property.
What you may need to know about disabling the initial AutoQuery-or-ClearRowSet behavior
If you want to avoid the search binding's performing any inital AutoQuery-or-ClearRowSet behavior, then leave the TrackQueryPerformed set to its default of "pageFlow" and set InitialQueryOverridden to "true".
What you may need to know about referencing the queryPerformed property in an iterator's RefreshCondition
Oracle recommends not configuring the RefreshCondition property of an iterator to reference the queryPerformed property of a search binding. Doing so will inadvertently prevent new rows from being creating in that iterator's rowset until the search binding's query has been performed.
In an application with datacontrols and a JSPX page which contains a number of DVT components, you may find upon restart that the datacontrol's window is displayed open but empty. Selecting refresh adds the datacontrols back to the panel again.
JDeveloper 11g 11.1.1.0.0 release is a JDeveloper/ADF only release. In other words, the SOA and WebCenter related features that have been available in the Technical Preview releases were not ready for production at this time. Consequently, since the following new ADF BC 11g features depend on the SOA infrastructure that is not present in this release, regretfully these features have been removed in this JDeveloper 11g 11.1.1.0.0 release:
The SOA and WebCenter features (along with the aforementioned ADF BC features on which they depend) are expected to appear in a subsequent JDeveloper/ADF/FusionMiddleWare release.
If you have built an application using the Technology Preview 4 release which makes use of the service-related features mentioned above, you will need to use the Technology Preview 4 release to remove those features before migrating the application to JDeveloper 11g 11.1.1.0.0 production release. Specifically this means you will need to use the JDeveloper 11g Technology Preview 4 release to:
As mentioned above, these features are expected to return in a subsequent release.
ADFBC-based applications using Struts 1.1 that were created with versions 9.0.2 through 9.0.5 of JDeveloper used a custom action mapping base class that was registered in the web.xml file using a servlet init parameter
<init-param>
<param-name>mapping</param-name>
<param-value>oracle.jbo.html.struts11.BC4JActionMapping</param-value>
</init-param>
JDeveloper 11g uses Struts 1.2.9 which no longer supports this approach for defining a custom action mapping class.
When you migrate your ADFBC/Struts applications that were created originally using JDeveloper 9.0.2 through 9.0.5, you will need to manually configure the struts-config.xml file of your application to reflect this custom action mapping class using the new Struts 1.2 approach which uses the type attribute on the <action-mappings> element in the struts-config.xml file.
So, you will need to update your struts-config.xml file's <action-mappings> element to look like this:
<action-mappings type=
"oracle.jbo.html.struts11.BC4JActionMapping">
<action .../>
<action .../>
</action-mappings>
oracle.jbo.NotConnectedException: JBO-25200: Application module is not connected to a database
If you run into the exception above using shared application module, a workaround is to configure shared application module pool to not remove instances of shared application module as follows:
Weblogic requires user passwords to be at least 8 characters. If you are migrating application with user credentials in jazn-data.xml ensure that all user credentials are at least 8 characters long.
Security properties "jbo.security.enforce", "jbo.security.loginmodule" and "jbo.security.config" in application module configuration are deprecated. Applications should use Configure ADF Security wizard to configure security.
Entity attributes
Starting in release 9.0.5, we provided the ability to add a declarative security constraint to an entity attribute which granted read-only, update-while-new, or update access. In release 11.1.1, we redesigned the feature in order to lay the groundwork for data security support in a future release. Due to architectural differences between the old and new implementation, you will need to re-implement your entity security policies in 11.1.1. Instructions to do this can be found in section 28.4.3.1 Defining a Permission on ADF Business Component Entity Objects of the Fusion Developer's Guide For ADF.
Iterator, value and method bindings
In a 10.1.3.2 application configured for ADF authorization, we automatically performed declarative authorization checks on iterator bindings, value bindings, and method bindings. In release 11.1.1, we have turned off enforcement of binding level security, which alleviates the burden on the application developer to create grants for every binding, and also avoids the runtime performance impact of performing a security check before each binding is accessed. When migrating your application to 11.1.1, you have two options:
"Java Web Start" with BC4J as the model layer needs a "login dialog" to be generated for JClient application to prompt for the Database credentials. The Login Dialog needs to be generated using the Form wizard. WebStart is supported without "login dialog" for bean datacontrol.
ADF Security in this release of JDeveloper 11g has limited support with ADF Swing and customers who require ADF Security to work completely in ADF Swing, should wait for the next release of JDeveloper 11g.
Deployment Options | ADF Security | Work around to be followed |
---|---|---|
ADF Swing application run from JDeveloper | Works, no work around needed | N.A. |
ADF Swing app deployed in jar files run from command line | Works with workaround | The following JVM properties need to specified when launching the swing application oracle.home - This is the directory where the Jdeveloper 11 is installed. oracle.security.jps.config - This is the full path to your application jps-config file. You will typically find this under <application_dir>\src\META-INF folder. jps.authz - Default authorization to read the credential store wallet to retrieve the password. If your Swing application is deployed as "application.jar", then On Windows, these properties would be specified on the java command line as Java-jar application.jar -Doracle.home=c:\jdev11g\jdeveloper -Doracle.security.jps.config=c:\jdev11g\JClientApp\src\META-INF\jps-config.xml -Djps.authz=DEBUG_NULL where, c:\jdev11g\jdeveloper is the dir where jdeveloper is installed. and C:\jdev11g\JClientApp is your application directory On Linux / Unix, the command line would look something like Java-jar application.jar -Doracle.home=/home/jdev11g/jdeveloper -Doracle.security.jps.config=/home/jdev11g/JclientApp/src/META-INF/jps-config.xml -Djps.authz=DEBUG_NULL where, /home/jdev11g/jdeveloper is the dir where jdeveloper is installed. And /home/jdev11g/JClientApp is your application directory |
ADF Swing app deployed using WebStart | Does not work | NA |
When using complex datatype, it might hit "oracle.jbo.NoDefException: JBO-25058" error. Use the following to workaround this problem:
Add ObjectType=true in the accessorIterator tag of corresponding pagedef file.
e.g.
<accessorIterator MasterBinding="Bc4jclientView" RangeSize="25"
......
id="EmployeeaddressIterator" ObjectType="true"/>
When you nest tr:column tags to create column groups, the header facets do not render for the column groups.
To save space on mobile devices, the renderer intentionally prevents the display of tab bars on both the top and the bottom of the tr:panelTabbed component. Valid values for the attribute positions are top and bottom. If both of these values are specified, then the renderer displays the tabs only on the top.
Setting the disabled attribute for an item within <tr:processChoiceBar> prevents it from displaying on Blackberry devices.
The tr:train component appears as x of y instead of listing each item. This is a display-only component in ADF Mobile; users cannot navigate through the application by clicking the x of y component. To enable navigation, you must add a separate link or button.
If any ADF Faces related library is added to an ADF Mobile project, then ADF Faces related JavaScript and CSS files will be downloaded to a mobile browser running an ADF Mobile Application. Extra files are downloaded even if the ADF Mobile application pages do not contain any ADF Faces components. This will significantly impact page navigation performance for an ADF Mobile application. Please ensure that any project containing ADF Mobile pages and page flows do not include any ADF Faces related libraries. Only "Mobile" technology scope should be selected during the ADF Mobile view project creation.
In the JSF Page creation wizard, developer has the option of selecting a page template as a starting point for the page. If a template is selected, ADF Faces Rich Client and related component libraries will get added to the ADF Mobile project, which will pull in extra JavaScripts and CSS files that are not needed for ADF Mobile. Please ensure "Do not use a template" is selected in the "Use Page Template:" drop down list box when creating a page intended for mobile device browsers. ADF Mobile currently does not support the template functionality.
Deployment fails if an ADF application contains the JAX-WS service and the web service data control for it in the same application i.e same deployment ear. The JAX-WS service fails to deploy if the Oracle XDK parser is configured in the application's "weblogic-application.xml". The JAX-WS must be deployed as a separate app.
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.
Web Service data control security cannot be configured for web services created in JDeveloper 11.1.1.0.0, that have WLS web services security policies attached. The data control security configuration will work for 10.1.3 style web services deployed on Application Server 10.1.3.
Digital signatures issued by the web service data control created in JDeveloper 11.1.1.0.0 may not interop with 10.1.3 style web services deployed on Application Server 10.1.3
Customers who intend to build web service data controls to secure web services deployed on Weblogic server, should wait for the next release of JDeveloper, which will support attaching client side web service policies to the data control. In JDeveloper 11.1.1.0.0, one can create a java bean data control over a web service proxy to invoke a secure web service deployed on Weblogic server.
The policy file shipped with Oracle WebLogic Server included in this release might not work if a security manager is enabled. For "How To" and other documents on Oracle Platform Security Services see http://www.oracle.com/middleware/technologies/oracle-platform-security-services.html
This error message is harmless and there is no loss of functionality.
When locally run you can create a directory path in the system folder that exceeds the 255 character limit of Windows XP. This is mainly the result of 3 files:
WEB_INF_customer_registration_task_flow_customer_registration_task_flow_createPaymentOption.xml
WEB_INF_customer_registration_task_flow_customer_registration_task_flow_userRegistrationCreate.xml
WEB_INF_employee_registration_task_flow_employee_registration_task_flow_userRegistrationCreate.xml
located at:
<BEA_Home>
jdeveloper\system\system11.1.1.0.31.51.50\o.j2ee\drs\StoreFrontModul
e\StoreFrontModule-StoreFrontUI-webapp\WEB-INF\classes\oracle\fodemo\storefron
t\pageDefs
This results in not being able to delete the system folder. To workaround this, from Windows Explorer drag and drop one of the inline folders such as classes to desktop or another directory then it can be deleted. Then delete the system folder after that.
Expressions containing "data." may not work properly in page defs of fragments that are in taskflows that are reused in regions with isolated transactions. As a workaround, in the case where "data.<pagedef>." refers to the same pagedef that the expression is used in, it can be replaced with "bindings."
By default when you create an Oracle XSQL Page in JDeveloper 11g, the XSQLConfig.xml file is setup to use the oracle.xml.xsql.XSQLOracleDatasourceConnectionManager connection manager. This allows you to use JDBC datasource names instead of name connections defined in the XSQLConfig.xml file itself. In this release, assuming you have created an application resources connection named scott, the JDeveloper design time configures your XSQL page to use a datasource named "jdbc/scottDS". You will need to manually change this to be "java:comp/env/jdbc/scottDS" for it to work correctly (Bug 7423625)
An accessible alternative to Flash Graph/Gauge is to use an ADF Faces Table or a DVT PivotTable.