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:
- In your application, choose View > Database Navigator.
- In the Database Navigator, select your database connection, which was migrated
with your application. Right-click the database connection and choose Properties.
- Add your user name and password to the connection dialog. These details
were not migrated with your application.
- Click OK.
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:
- Go to the WebLogic Server administrative console. To get to the console,
type
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.
- In the administrative console, go to Domain Structure > JDBC > Data
Sources.
- When you migrated, an element was created in the
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.
- Complete the form and click Finish.
IDE and Java SE Development
Creating Subversion repository (7458398)
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).
Subversion working copy (7554319)
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.
Issues with folders under version control (7585971)
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.
Deployment Issues
Known issues
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. For information on the latest required
patch, see the Application Server certification information on OTN: http://www.oracle.com/technology/products/jdev/htdocs/11/
Debugging Issues
Debug action buttons
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.
Debugger window (7341813)
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.
Debugging Java EE applications
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.
Use of the 'debugFlag' with Integrated WLS and WebLogic server
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.
- If the variable is defined locally to a command shell, unset the variable
before launching JDeveloper.
- If the variable is defined globally, as through the System panel of the
Control Panel on Windows, remove the variable and open a new command shell
to launch JDeveloper.
Web Services Development
Where WSDL is present policy not enforced (7718341)
The policy enforcement in the WLS server does not happen in the
following case:
- The deployed JAX-WS style service has a WSDL that the service is pointing
to (usually with the 'wsdlLocation' parameter of the @WebService annotation)
and
- The WSDL has no policy advertisements in it and
- The service implementation class has @Policies or @Policy annotations to
attach policies.
To make the policy enforcement work:
- In the 'Web Content' of the project, create a xml file with name 'weblogic-webservices-policy.xml'.
- Enter the policy URI details as given in the following example code:
<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>
- Build the project and deploy to the server.
HTTP Analyzer will not capture traffic from a JAX-WS Java
client that is being sent to localhost (7310483)
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.sun.com/bugdatabase/view_bug.do?bug_id=6737819
). Use one of the following ways to work around this:
- Change the default localhost by using the following parameter to the JDeveloper command to set a system property
- If you are running JDeveloper on Linux you need to make no more changes.
- If you are running JDeveloper on Windows, edit the c:\windows\system32\drivers\etc\hosts file and change the line
to be
- If you are running JDeveloper on Mac OS X, edit the /etc/hosts file as root to include the name of the local machine. That is, change the line
to be
Avoid creating multiple top down web services in the same
project/package (7165531)
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.
Creation of top-down JAX-WS EJB web services - manually
edit wsdl location if copying locally (7191149)
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.
Avoid using java.util.Map and java.util.Collection family
types (7313063, 7248344)
java.util.Map and java.util.Collection family types are not supported by the WLS JAX-RPC stack.
Manually edit the header details if invoking WLS stateful
(conversational) web services from HTTP Analyzer (7388843)
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>
How to select multiple WLS policies from the Property Inspector
(6979786)
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.
Services migrated from a previous JDeveloper release are
not guaranteed to deploy and run in WLS
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).
Oracle XDK specified in weblogic-application.xml will
cause JAX-WS to fail to deploy (7424247, 7436727)
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". This can be applied
using the BEA Smart Update tool: http://edocs.bea.com/common/smartupdate/guide/start.html.
Note: This patch has already been applied to Weblogic server bundled with the
JDeveloper 11.1.1.0.1 release.
JAX-WS proxy cannot read WSDL (7438109)
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 JAX-WS async client for a 10.1.3 BPEL process will
not run by default (7315840)
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:
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();
AttributedURI messageId = new AttributedURI();
messageId.setValue( "uuid:" + UUID.randomUUID() );
AttributedURI address = new AttributedURI();
address.setValue("http:);
EndpointReferenceType replyTo = new EndpointReferenceType();
replyTo.setAddress( address );
WSBindingProvider wsbp = (WSBindingProvider)loanService;
wsbp.setOutboundHeaders(
new StringHeader(
new QName( "http:, "Action" ),
"http: ));
LoanApplicationType payload = ...
loanService.initiate(lt, replyTo, messageId);
Cannot deploy and run JAX-RPC with bare array types as
method parameters (7493019)
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:
- Only do wrapped parameters, when starting from a java class
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.
- Make sure you don't allow properties to be unwrapped when doing "top
down"
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.
- Use the weblogic jwsc ant task
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.
JAX RPC stateful service: JAX WS client is throwing exception
(7533170)
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.
Web / Ajax Development
JSP compilation pertains to the whole project and not the selection.
EJB, JPA, and Java EE Development
Working With EJB Data Binding
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.
Importing TopLink CMP 2 projects (7384903)
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.
General ADF Issues
Struts issues
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.
ADF application redeployment: memory leak and cache refresh
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 causes memory leak (7393267)
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>
ADF Controller Issues
ADFc save points and dialogs
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.
10.1.3 regions vs. 11g regions
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 and Data Visualizations
Supported platforms
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.
Component IDs and regions
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.
Migration from 10.1.3.x
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.
Type conversion exceptions
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 (see
https://glassfish.dev.java.net/issues/show_bug.cgi?id=652).
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:
- Add a converter tag to your component, for example.
<:converter id="oracle.genericDomain"/>
- Register the converter in your faces-config.xml file.
<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>
- Add the following converter to your application:
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;
}
}
useWindow attribute
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.
Ctrl+N support
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.
af:convertDateTime affected by Sun bug 4823811
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.sun.com/bugdatabase/view_bug.do?bug_id=4823811
Drag and drop
The af:dropTarget tag must have at minimum one af:dataFlavor child tag.
Using Apache MyFaces Trinidad components
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.
ADF DVT graph and gauge
- Firefox does not print Flash content, which is the default imageFormat for
DVT Graph and Gauge. Applications should set the imageFormat to PNG for use
in printable pages when the browser is Firefox. Flash content, including ADF
DVT Graphs and Gauges, prints fine when the browser is IE.
- Pie graphs with long labels have issues with label wrapping and truncating
in Flash image format.
- Gauge does not load if the gaugeLegendArea and thresholdSet/threshold child
tags are used together. The workaround is to specify a numberType in the tickLabel
child tag.
- There are known issues using Flash graphs in BiDi locales. The workaround
is to use PNG graph image format.
- Users of the ADF DVT simple Graph tags listed in the table below are advised
to use the following new syntax going forward:
-
| 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">
|
ADF DVT Geographic Map
When creating a new Geographic Map, use the following URLs:
ADF DVT Pivot Table
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.
ADF DVT Gantt Chart
- The number format in the Gantt properties is not locale specific, this would
impact Japanese locale.
- The date format in the Gantt properties is not locale specific, this would
impact Japanese locale.
- There are known issues with 'Time Unit' functionality in the Project Gantt
and the Resource Utilization Gantt.
- In Project Gantt there are following known issues:
- If the user tries to move a task with an inside label bar by grabbing
on the label, an error occurs.
- The right mouse popup does not work, and the labels to not appear when
the label placement is inside a task.
- The hour glass remains visible after the tasks are collapsed.
J2EE Resource Injection
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:
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.
ADF Model Databinding
Changes to search form binding default behavior since Technology
Preview 4
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:
- "Query Automatically" = true
- Then the search binding automatically executes the iterator when the search binding is initialized in a task flow.
- "Query Automatically" = false
- Then the search binding clears the rowset related to its iterator
to show an initially empty search result to the end user (avoiding any
"eager" database query and allowing the end-user to provide search form
input to drive the query when they eventually press the (Search) button.
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:
- "Query Automatically" = true
- Then the search binding automatically executes the iterator after applying the new view criteria.
- "Query Automatically" = false
- Then the search binding applies the new view criteria only, leaving any search results intact.
Detecting whether the search binding's query has been performed
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.
Customizing the default search binding behavior
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:
- If TrackQueryPerformed = "pageFlow", then the queryPerformedflag is initialized once per page flow and tracked at the page flow level. This means that the end-user can navigate away from the page on which the search binding's search form appears, and when the navigate back to that page (or page fragment) during the "life" of the same page flow the value of the queryPerformed flag will still be what it was when the end user left the page.
- If TrackQueryPerformed = "page", then the queryPerformedflag is initialized each time the user navigates to the page (or page fragment), both when they first navigate to it during a page flow as well as when they navigate back to it from some other page during that page flow. This means that each time the end-user visits the page the queryPerformed flag is initialized.
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.
Datacontrol panel empty on startup if JSPX page is open
(7585628)
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.
ADF Business Components
New service-related features removed in this release, expected
to return in a maintenance release
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:
- Service Interface - declaratively enable full-featured web services
based on the AM's top-level view object instances and custom methods,
- Business Events - define events on an entity object and configure when they are raised for delivery to a SOA message bus
- SDO Class Generation- generate data transfer objects for view object rows that comply with the Service Data Objects specification (used as an implementation detail of the Service Interface feature above.)
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.
Required pre-migration steps for Technology Preview 4 applications
using ADFBC service-related features
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:
- Remove the Service Interface from any Application Modules for which you have enabled it
- Disable the SDO class generation for any view objects that have been enabled for SDO class generation (note that this generation may have been implicitly turned on for you by the Service Interface wizard for view objects you elected to expose via the service interface)
- Remove any ADF BC Service Interface deployment profiles
- Remove any entity object business event definitions.
As mentioned above, these features are expected to return in a subsequent release.
Manual changes required for Struts 1.1 applications using
ADFBC created originally using JDeveloper 9.0.2 -> 9.0.5
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>
NotConnectedException thrown when using shared application
module (7444195)
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:
- Open Application Module | Configuration.
- Select Shared configuration and click on the Edit button.
- Select Properties tab and enter values for the two properties.
- jbo.ampool.timetolive: -1 (never expire)
- jbo.ampool.maxinactiveage: 432000000 (5 days or any very high value)
ADF Security
Password length requirement In WLS
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 in application module configuration
are deprecated
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.
Migration considerations for ADF security authorization
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:
- Set the JVM flag "-Doracle.adf.security.metadata=false" to put ADFm security into a 10.1.3-compatibility-mode in which binding security checks are still performed automatically.
- Re-implement your UI-layer security restrictions using EL expressions within each JSPX page. Details on our enhanced security EL offering in this release can be found in section 28.6.1 How to Evaluate Policies Using Expression Language (EL) of the Fusion Developer's Guide For ADF.
ADF Swing
ADF Swing WebStart support
"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 layer security
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 |
Using complex DataType with Swing
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"/>
ADF Mobile
ADF mobile does not support headers in group columns
When you nest tr:column tags to create column groups, the header facets do not render for the column groups.
On mobile devices, tab bars do not display on the
top and bottom of the tr:panelTabbed component
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.
Disabled items within tr:processChoiceBar do not display
on BlackBerry devices
Setting the disabled attribute for an item within <tr:processChoiceBar>
prevents it from displaying on Blackberry devices.
ADF mobile renders the tr:train component as a static
object
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.
Addition of ADF Faces libraries will result in extra
JavaScript and CSS file downloads for ADF Mobile applications
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.
Selecting a template during JSF page creation will unnecessarily
pull in ADF Faces libraries (7514287)
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.
ADF Web Service Data Control Issues
Deployment failure when JAX-WS service and web service
data control are in the same application (7445159)
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.
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.
Web service data control security limitations
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.
Oracle Platform Security Services
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/technology/products/id_mgmt/opss/index.html
Translation and Globalization Issues
XPathException" is shown in message window in Japanese
locale (7448598)
This error message is harmless and there is no loss of functionality.
Documentation and Tutorials
Fusion Order Demo (FOD)
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\StoreFrontModule\StoreFrontModule-StoreFrontUI-webapp\WEB-INF\classes\oracle\fodemo\storefront\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.
Miscellaneous Issues
Using "data." in expression language
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."
Oracle XSQL pages
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)
Accessible alternative to Flash Graph/Gauge
An accessible alternative to Flash Graph/Gauge is to use an ADF Faces Table
or a DVT PivotTable.
|
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065, USA
http://www.oracle.com
|
Worldwide Inquiries:
1-800-ORACLE1
Fax 650.506.7200
|
Copyright © 2009, Oracle. All Rights Reserved.
|