Developer Tools
JDeveloper
Release Notes
Version 9.0.5.2
May 2004
Oracle JDeveloper 10g is an Integrated Development Environment (IDE) for building applications and Web services using the latest industry standards for Java, XML, and SQL. Oracle JDeveloper supports the complete development life cycle with integrated features for modeling, coding, debugging, testing, profiling, tuning, and deploying applications.
A visual and declarative approach and the innovative Oracle Application Development Framework (Oracle ADF) work together to simplify application development and reduce mundane coding tasks, offering developers unparalleled productivity and their choice of technology stack.
Oracle JDeveloper offers an Extension SDK that lets you add capabilities and customize your development environment. To learn more about Oracle JDeveloper, and to catch up on the latest news, visit JDevelopers home page on the Oracle Technology Network (OTN), at http://otn.oracle.com/products/jdev. Also available on this site is the Oracle JDeveloper 10g Release Notes Addendum , which contains additional information not available at the time of this document's publication.
Upon running JDeveloper for the first time a migration dialog will be presented to the user asking if they would like to migrate user settings from a previous install. Since the JDeveloper main window has not yet been shown, this dialog will be parented to the user's desktop. As a result, there will not be an item in the Windows taskbar and the dialog itself may become obscured by the windows of other running applications. If obscured by the windows of other running applications, it may appear to the user that JDeveloper is hung. In such cases, JDeveloper is not hung, it is simply waiting for the user to reply to the migration dialog. The user may minimize the other applications in order to uncover the JDeveloper dialog or use ALT + TAB to iterate through running applications to find the JDeveloper dialog (as represented by the standard Java coffee cup icon).
Struts applications created in Oracle JDeveloper 10g Preview and earlier releases may no longer compile correctly after migration to JDeveloper 10g.
If you have a Struts application that no longer compiles correctly after migration to JDeveloper 10g, the migration process may have incorrectly removed the
struts.jar file from your
WEB-INF/lib directory.
Workaround:
struts.jar file from the
JDeveloper_installation_directory/jakarta-struts/lib
directory into your project's directory.
Note: Oracle JDeveloper 10g is integrated with Struts release 1.1.
Struts applications created in Oracle9i JDeveloper or other tools may not compile correctly after being migrated to Oracle JDeveloper 10g production release. This may happen even if the applications were previously successfully migrated to Oracle JDeveloper 10g preview release.
If you have a Struts application that no longer compiles correctly after migration to JDeveloper 10g, the migration process may have incorrectly removed the struts.jar file from your WEB-INF/lib directory.
To correct Struts compilation errors after migration:
If you are updating Struts-based web applications that use Oracle ADF from the Oracle JDeveloper 10g Preview, you need to be aware of several changes to the API.
This section describes Oracle ADF classes and class methods that have been removed or replaced in the controller layer.
The class
oracle.adf.controller.struts.actions.JspLifecycle has been replaced by
oracle.adf.controller.struts.actions.StrutsJspLifecycle.
The following methods are no longer part of the Lifecycle interface:
buildControlActionBindingsList()has been replaced by
buildEventList(LifecycleContext lcContext) This method builds the list of events with any associated action bindings from the request parameters.
processForwardConfig()
getParameters()
initializeRequestParameters()
convertForwards()
The
addControlActionBinding() method has an additional argument, an event name with the type
java.lang.String.
The
getControlActionBindings() method has been replaced by getEvents() This method builds the list of events with any associated action bindings from the request parameters.
The following methods are no longer part of the LifecycleContext class:
getDataAction()
setDataAction()
getRequestParameters()
setRequestParameters()
The
execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.ServletRequest, javax.servlet.ServletResponse) method is now a final method.
executeImpl(oracle.adf.controller.struts.actions.DataActionContext) has been removed. To customize DataAction behavior, extend the lifecycle functionality.
The following methods are no longer part of the DataAction class:
getParameters(oracle.adf.controller.struts.actions.DataActionContext) You can obtain request parameters from the HttpServletRequest by using the following code:
HttpServletRequest request = actionContext.getHttpServletRequest();
return request.getParameterMap();
initializeRequestParameters(oracle.adf.controller.struts.actions.DataActionContext)
Several of the methods in the the
oracle.adf.controller.Lifecycle interface and the
oracle.adf.controller.lifecycle.LifecycleContext and
oracle.adf.controller.struts.actions.DataAction classes now throw different exception types. For example, the method
DataAction.hasErrors(oracle.adf.controller.struts.actions.DataActionContext) used to throw a ServletException and an IOException. Now this method does not throw any exceptions.
Other methods have gained or lost exceptions. You can easily resolve these incompatibilities by:
Several of the methods in the the
oracle.adf.controller.Lifecycle interface and the
oracle.adf.controller.lifecycle.LifecycleContext and
oracle.adf.controller.struts.actions.DataAction classes now have different return types. For example,
LifecycleContext.getControlActionBindings() now returns a List instead of an ArrayList. You can also resolve these incompatibilities by fixing your migrated code based on the compilation errors you get.
The new ADF iterator bindings in JDeveloper 10g cause the iterator to which they are bound to advance to the first row in the rowset. This is the optimal behavior for the UI rendering of those rows, and the behavior is required for ADF iterator bindings to work correctly with standard JSP tag libraries like JSTL.
However, this new behavior can cause trouble for existing application logic when you migrate a BC4J application to JDeveloper 10g and begin to add new ADF iterator bindings to your application. Consider the following hypothetical application module method representing some user-written business logic.
public boolean employeeExists(Number empno) {
EmpViewImpl eview = getEmpView();
eview.setWhereClause("empno = :1");
eview.setWhereClauseParam(0,empno);
eview.executeQuery();
/*
* MIGRATION CAVEAT
* ~~~~~~~~~~~~~~~~
* When no ADF iterator bindings are bound to the "EmpView"
* view object instance -- more precisely, to the default iterator
* of its default rowset -- then immediately after executeQuery()
* the iterator will be at the slot before the first row. Assuming
* this query retrives a single row, then the eview.hasNext() will
* be true, since we haven't yet advanced to the first row.
*
* When an ADF iterator binding is bound to "EmpView" then after
* the executeQuery() the iterator will advance to sit on the first
* row of the result -- in this case, the only row in the result --
* and the eview.hasNext() will return false.
*/
if (eview.hasNext()) {
return true;
}
else {
return false;
}
}
The issue can also surface in middle-tier business logic which is written to loop over rowset results and perform some operation on each row. Examples include calculating the sum of some numeric attribute in each row, but not limited to this. For example, you might have code like:
public Number shoppingCartTotal() {
ShoppingCartImpl cart = getShoppingCart();
cart.reset();
double total = 0;
/*
* MIGRATION CAVEAT
* ~~~~~~~~~~~~~~~~
* When no ADF iterator bindings are bound to the "ShoppingCart"
* view object instance, then immediately after the reset() call above
* the iterator will be at the slot before the first row. The loop
* below will operate over all N rows in the rowset coded like this.
*
* When an ADF iterator binding is bound to "ShoppingCart" then after
* the reset() call, the iterator will advance to sit on the first
* row of the result. If the loop code is not changed, then it will
* operate on the 2nd through the Nth rows, missing the first row.
*/
while (cart.hasNext()) {
ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cart.next();
total += curCartItem.getExtendedTotal().doubleValue();
}
return total;
}
There are two basic solutions to the issue:
first() API and test whether it is null or not.
createRowSetIterator() API to create a secondary iterator for use in middle-tier programmatic business logic instead. Remember to call
closeRowSetIterator() on the iterator when you are finished with the loop if you do not want the iterator to remain around and active.
Use these best-practices for new code that you write as well. Following the two pieces of advice above, the two examples illustrated above would be rewritten like:
public boolean employeeExists(Number empno) {
EmpViewImpl eview = getEmpView();
eview.setWhereClause("empno = :1");
eview.setWhereClauseParam(0,empno);
eview.executeQuery();
/*
* Using first() instead of hasNext() to test for existence of
* at least one row in the result since default iterator might be
* bound to an ADF iterator binding being used in the view layer
*/
if (eview.first() != null) { /* Using first() instead of hasNext() */
return true;
}
else {
return false;
}
}
and
public double shoppingCartTotal() {
ShoppingCartImpl cart = getShoppingCart();
/*
* Using secondary iterator since default iterator
* might be bound to an ADF iterator binding being used
* in the view layer
*/
RowSetIterator cartIter = cart.createRowSetIterator(null);
double total = 0;
while (cartIter.hasNext()) {
ShoppingCartRowImpl curCartItem = (ShoppingCartRowImpl)cartIter.next();
total += curCartItem.getExtendedTotal().doubleValue();
}
cartIter.closeRowSetIterator();
return total;
}
When you drag a method binding from the Data Control Palette to a UIX page in the UIX Visual Editor, a submit button is created. The buttons you created this way in Oracle JDeveloper 10g Preview do not work in the current release.
Workaround:
Due to changes in the Toplink data control implementation, you cannot use TopLink data bindings created in JDeveloper 10g Preview in JDeveloper 10g. You need to delete and recreate any data bindings that access Toplink data controls. Migration of your current project(s) is not possible due to the major restructuring done to the Toplink Data Control.
The text property was used in JDeveloper 10g Preview to provide Expression Language (EL) support for accessing the button title. Because this property does not support resource bundles, it was removed. If you used EL to access this property, remove any references and replace them with the actual button text or use a ResourceBundle.
JDeveloper 10g Preview did not support iterator hierarchies. In a databinding scenario, if a master-detail relationship is encountered, the detail iterator needs to depend on the master iterator. The preview release did not define these relationships properly. In order to create the proper XML entries for your bindings, you need to delete and recreate any iterator bindings that rely on master-detail relationships.
The
Binds property of the method iterators used a syntax in JDeveloper 10g Preview that included the UIModel name. These references need to be updated to remove the UIModel name.
For example, change the following iterator definition:
<DCIterator
id="listBooksIter"
SubType="DCMethodIterator"
Binds="page1UIModel.listBooks.result"
DataControl="MyLibraryDataControl"
BeanClass="model.Book" >
</DCIterator>
to:
<DCIterator
id="listBooksIter"
SubType="DCMethodIterator"
Binds="listBooks.result"
DataControl="MyLibraryDataControl"
BeanClass="model.Book" >
</DCIterator>
If you migrate a 9.0.X UIX/BC4J/JSP complete application project to JDeveloper 10g and then run the application, the UIX resources and styles are not seen at runtime. This is because the migration process only removes objects and files that are related to prior versions of the product; it does not add the new installables.
Workaround:
When migrating a BC4J JSP Web application making use of Chart DataWebBean, a null pointer exception is thrown if the legend marker is on. This happens when the chart image is rendered.
Workaround:
c.getChart().setLegendDisplay(false);
The
bc4jui.jar contains only Swing classes and has been renamed as
adfjclient.jar. When migrating a JClient project into JDeveloper 10g from a previous release, you must update the project to include
adfjclient.jar.
When migrating a project from JDeveloper 9.0.4 or earlier to JDeveloper 10g, you will be able to work with control bindings by selecting the control's Model/Document property in the Property Inspector. However, you must not use the new ADF-style bindings (that you create using the Data Control Palette) in the panels and forms that you previously created. Mixing the new bindings with old bindings on the same panels and forms will not work. You can, however, create new panels and forms using the Data Control Palette and add them to your existing application. These new panels and forms can use the new ADF-style bindings.
When you use the Property Inspector to display the model binding editor for a control that you want to customize, JDeveloper will display the binding editor appropriate to the style of the binding (either for JDeveloper 9i, and earlier, style bindings or for the new ADF-style bindings in JDeveloper 10g). The displayed binding editor will generate the binding code appropriate to the binding style used by the form or panel. Note that the usage of the Structure window's UI Model tab to edit control bindings is reserved for ADF-style bindings only. JDeveloper 10g does not support creating new panels and forms with the old-style bindings. You must import a project created in JDeveloper 9i, or earlier, into JDeveloper 10g in order to continue to work with the old-style bindings.
bc4jui.jargadfjclient.jaradfjclient.jarbc4jui.jarIf you open a JDeveloper 9.0.3 project and attempt to regenerate a PL/SQL web service in that project, it will be left in an uncompilable state afterwards.
Workaround:
When you regenerate a web service that has been migrated from a previous version of JDeveloper, you may find that the regenerated interface is missing from the deployment profile which will cause the deployed service to be inaccessible.
Workaround:
If you migrate user settings from JDeveloper 10g Preview, the location of the WS-I test tools will appear to be correct, however you have to enter the location again to populate a hidden field which is necessary for the analyzer code to function correctly.
Go to *Tools | Preferences* and choose WS-I Testing Tools. Re-enter the home location for the testing tools by browsing to the folder or by typing in the location.
Oracle JDeveloper 10g Production is distributed with the Oracle JDBC drivers from Oracle 10g Application Server. These drivers support the following database versions:
The OCI driver requires the Oracle Client version to match the JDBC driver version. An Oracle Client version to match the JDBC drivers distributed with JDeveloper won't be available until Oracle 10g Application Server is available, so the OCI driver distributed with JDeveloper will not work in the Production release. Use of the Thin driver in Oracle JDeveloper 10g Production is recommended. However, if the use of the OCI driver is required, it is possible to install a different version of the JDBC drivers in JDeveloper (see the JDeveloper Help for details).
If you get a java.lang.OutOfMemoryError, you have two options:
Java -Doracle.j2ee.dont.use.memory.archive=true -jar oc4j.jar
Java -mx512M -jar oc4j.jar
Only one of the two parameters ... or ... should be defined.
This is caused by an error in Tomcat's tag pooling mechanism. Because Tomcat does not release tags after pooling, subsequent uses of the same tag with incompatible attributes defined will cause this error.
To avoid the error, you must disable tag pooling in Tomcat:
<init-param> <param-name>enablePooling</param-name> <param-value>true</param-value> </init-param>
Creating a JSP application for a BC4J session facade results is an ejb-ref entry in the web.xml of the that project. If you change the interface type of that facade, from local to remote or vice versa, then you must update the ejb-ref entry in web.xml. For example if you change the bean type from remote to local then you must replace the <ejb-ref> section in web.xml with the appropriate <ejb-local-ref> tags.
When working with a project that has only the ADF UIX technology scope assigned, in the "New Gallery" dialog the proper list of deployment profiles does not display with the filter set to "Project Technologies". Switching the filter to "All Technologies" will display the full list of deployment profiles.
In addition to the provided documentation for deploying UIX applications to WebLogic, the following additional details may be helpful:
You can deploy container-managed persistence (CMP) entity beans from JDeveloper 9.0.5 to OC4J 10g (10.0.3) Preview or OC4J 10g (10.0.3) Preview 2, by configuring your application to use the OC4J Native persistence provider:
orion-ejb-jar.xml deployment profile and choose
Properties.
native_cmp from the
Persistence Manager dropdown menu.
native_cmp.
Start OC4J with the invocation:
java -Ddefault.cmp.pm=native_cmp -jar oc4j.jar
Please check Migration Issues for ADF specific migration information.
An application that has been migrated to JDeveloper 10g from an earlier version of JDeveloper cannot use batch mode. Batch mode is only available for applications created using JDeveloper 10g using the ADF Binding Layer.
When running in "batch mode", client-side code making use of a custom ADF View Object interface must do so by first returning the view object (cast to this custom interface) from a application module custom method. Otherwise, a ClassCastException can be thrown.
The JDeveloper project option "Scan Source Paths to Determine Project Contents" does not work reliably for ADF Business Components. For this release, we recommend not using this project option if your project contains any ADF business components.
This release of the Struts diagramming can only support a single Struts Diagram per workspace project. Multiple Struts configuration files should be split off into individual projects. A detailed document describing how to handle multiple configuration Struts applications can be found on the OTN JDeveloper How-To page: ( http://otn.oracle.com/products/jdev/howtos/index.html)
Tiles based applications can be used with Struts in JDeveloper 10g, however, it is not possible to use the page flow diagrammer view with such applications. Direct editing of the Struts Configuration file, the Struts Console editor, and the use of the Structure pane and property inspector are still all available to developers of Tiles based applications.
When Struts is used in an application JDeveloper expects that the Struts servlet-name is set to "action" in the web.xml file. e.g.
<servlet>
<servlet-name>
action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Applications can use custom servlet classes that extend ActionServlet, but should retain "action" as the name of the servlet.
When an Action is defined as the default start action of a Struts Page flow (using the context menu in the page flow diagram), the project properties are updated to make the designated action the default run target. Additionally, if the starting action is a Forward Action the web.xml <welcome-files> collection is updated with a new <welcome-file> entry for the designated page. In some cases you may want to amend this entry in web.xml to use a page which redirects to a Struts action rather than the underlying ActionForward's page. Additionally, if the default start action is set several times in a project, multiple entries may be added to the welcome file list.
When the component you insert into a Struts-based web page requires a Form element, such as an input field, JDeveloper will prompt you to insert the component inside a Form that it creates for you. The Form element is used at runtime to submit the values with the Request object and contains placeholder text to specify the target Struts action:
<html:form action="/Handle_This_Form.do">
You must edit the action attribute to specify the name of the action that your page flow uses to handle the form input. For example, change /Handle_This_form.do to /MyActionName.do when the name of the action is MyActionName.
When working in the struts page flow modeler if the text label of a forward is positioned so that it overlaps a data page/action, it can be difficult to drag methods from the data control palette on to the data page/action. Moving the forward label off of the data page/action will allow successful drag and drop of methods on to the data page/action.
To avoid performance problems in fetching data or retrofitting client side cache with a modified rangeSize, it's advised to set the same rangeSize for all usages of a RowSetIterator associated to iterator bindings in multiple binding containers of the same application/application flow.
Scalar attributes returned by Bean accessors are marked as 'readonly' in ADF databinding. Support for updating these values is not implemented in this release.
Using the <adf:render> or <adf:inputrender> tags will throw an oracle.jbo.NoDefException when you attempt to render a bean that contains no scalar attributes.
The oracle.jbo.domain.Array data type can be rendered using custom Input/Value renderer in JSPs and JUArrayComboBox in JClient. In future releases these Array objects may be dereferenced and treated as a collection type so that its node can be expanded and the Array content (if nonscalar) is accessible on the DataBinding Palette for drop.
There is no way to set the type (or bean class) of a collection return type of a custom application module method. In other models you can edit the xml file and set the bean class of a collection. However, there is no way to do this for the BC4J model. You can work around this by providing a dynamic widget that doesn't require the metadata at design time.
If a viewlinked master/detail is dropped on a page and then Master ViewObject's RSIName is modified to be non-null, then the detail is not actively coordinated with the master as the dropped detail is bound to a default RowSetIterator on the master ViewObject (and not the named RSI). The workaround is to not edit/modify the RSIName for the master ViewObject's iteratorBinding. Leave it as null.
If you are not using a page flow controller and have a databound JSP page which needs to expose upload to database functionality through a file upload control, you will need to carry out some manual steps to configure the project. Note, if you are using the Struts page flow controller in you project, these steps will not be required.
When you work with more than one business service in your client project, the Id for each DataControl in the .cpx file must be unique. When you use the Data Control Palette to design your document, the data control references are added to the .cpx file with unique Ids for you. To avoid creating a runtime error, do not edit the Id property of the DataControl (in the Property Inspector) in the .cpx file to use the same name.
In Oracle JDeveloper 9.0.5 no Intermedia controls are available in the Data Control Palette for ADF JClient. This means that developers will not be able to create new applications using JClient Intermedia controls. However, the required Intermedia libraries are still shipped with JDeveloper 9.0.5 for backward compatibility reasons. JClient applications of previous Oracle JDeveloper releases that use Intermedia continue working when upgraded to ADF JClient.
JClient clients ignore any tooltip text that has been entered for an underlying entity object attribute or view object attribute. To workaround this issue you can set the tooltip text in your client code. This example shows how to set the tooltip text for the Deptno attribute:
mDeptno.setToolTipText(panelBinding.findCtrlValueBinding("Deptno").getTooltip());
When you use the Data Control Palette to drop a JTable control into a JClient panel or form, the table will initially display all attributes (columns) of the selected collection. To modify the table's list of display attributes, you can use the Table Binding Editor, however, the changes will not be reflected immediately in the Visual Editor. In order to synchronize the Visual Editor with the table's binding information (saved in the form or panel's
UIModel.xml file), you can either recompile the class file, or you can merely resize the table in the Visual Editor.
In previous releases, it was possible to reenter the Business Components Data Model Definition Wizard in order modify an existing client data model (to select a Business Components application module). That right-click option is no longer present on the JClient
.cpx file. To modify the
.cpx file settings, select the file in the Application Navigator and display the Property Inspector. All changes to the
.cpx file can be made through the Property Inspector.
The display width and display height set for the Business Components attributes in the Entity Object Editor or View Object Editor will not be used to render the control in the Java Visual Editor.
After you insert a control from the Data Control Palette that you bind to a collection (such as a table, tree, list, or graph) into the JClient panel or form, the control will have a size of 0 width and 0 height. The 0,0 size initially makes it impossible to resize the control in the Visual Editor. To display the control so it can be resize, select the control in the Structure window and edit the size properties in the Property Inspector.
When using JClient text fields to display the attribute values of an object, such as those defined by an Address object, the fields will not display the attribute values (they will display instead some static text). If you bind a text field to an object attribute, you can ensure the value is correctly displayed in the JClient panel by forcing the query to reexecute on the iterator binding of the bound object. To force
executeQuery() on the object's iterator binding, add this method call after
jbInit() is done in the panel, where "Street" is replaced by the name of your object attribute binding:
panelBinding.findControlBinding("Street").getIteratorBinding().executeQuery();
It is only necessary to call
executeQuery() on one of the object domain attributes (like Street) to force the iterator binding to refetch all attribute values of the same object.
Existing ADF JClient panels can be reused in other JClient panels:
1. Click onto the Custom... icon in the Component Palette for Swing.
2. In the Class Browser select the JPanel to add.
3. Add the existing JClient Panel to another JClient panel.
The following code lines help avoid the
oracle.jbo.JboException:35001 being raised when adding multiple instance of an existing JClient panel to another JClient panel or when launching multiple instances of a panel from the same binding context.
This example assumes that the JClient panel that gets added or launched multiple times is named
EmpPanel.java. The target JClientPanel - hosting multiple instances of
EmpPanel.java - is assumed to be named
MainPanel.java.
You first need to create a new
BindingContainer instance by adding a new
BindingContainerReference in the
bindingContext name and then bind the second panel instance of
EmpPanel to the second
bindingContainer.
In
MainPanel.java:
private JUPanelBinding panelBinding = new JUPanelBinding("MainPanelUIModel");
private EmpPanel empPanel1 = new EmpPanel();
private EmpPanel empPanel2 = new EmpPanel();
...
empPanel1.setBindingContext(panelBinding.getBindingContext());
empPanel1.createNewInstance(panelBinding,"EmpView2",empPanel2);
empPanel2.setBindingContext(panelBinding.getBindingContext());
// EmpView1 is the View Object referenced by EmpPanel.java
String VoDefStr = panelBinding.getApplicationModule().findViewObject("EmpView1").getDefFullName();
panelBinding.getApplicationModule().createViewObject("EmpView2",VoDefStr);
DCIteratorBinding iter = empPanel2.getPanelBinding().findControlBinding("EmpView1").getIteratorBinding();
iter.bindRowSetIterator(iter.getDataControl().getApplicationModule().findViewObject("EmpView2"), true);
...
In the
EmpPanel.java file create the following method:
public void createNewInstance(JUPanelBinding pb,String sViewName, EmpPanel _ep)
{
String secondPanelName = sViewName;
pb.getBindingContext().put(secondPanelName,new DCBindingContainerReference
(pb.getBindingContext(),secondPanelName,this.getPanelBinding().getDef().getFullName()));
_ep.getPanelBinding().setName(secondPanelName);
}
This creates a new binding container reference with the name provided as the
sViewName argument. A new instance is also created for the view object that is referenced by
EmpPanel.
Please check Migration Issues for JClient specific migration information.
To use JDeveloper with future releases of OracleAS TopLink, you must add all the dependencies for the specific TopLink release to your project classpath.
Use this procedure to import your OracleAS TopLink Mapping Workbench project (
.mwp) into Oracle JDeveloper 10g. Before completing this procedure, you should create a backup copy of your original Mapping Workbench project.
To Import a Mapping Workbench Project:
\mw\table directory of the Mapping Workbench project).
|
Note : Ensure that each JDeveloper table name, column name, and foreign key constraint is identical to the corresponding table name, field name, and reference name in the Mapping Workbench. If the names are not identical, JDeveloper may not correctly import the mapping information. |
toplink_mappings.mwp file and make the following changes:
<name>
element
toplink_mappings.
<name>
element
<database-table> element lists each database table in a
<name> element. This
<name> may include a catalog, schema, and table name. You must change each table to include only a schema and table name.
<project�name>
/descriptor/
<descriptor name>
.xml file and make the following changes:
<name> that you changed in the
toplink_mappings.mwp file, you must make the identical name change in the following elements in each descriptor's
<project�name>
/descriptor/
<descriptor name>
.xml file:
<field-table>
<primary-table>
<associated-table>
<reference-table>
<reference-name>
<relation-table>
<sequencing-policy-table>
<source-table>
<target-table>
<project�name>
/META-INF/ejb-jar.xml and
/src files.
You cannot modify the primary key attribute of an object in a Unit of Work. This is an unsupported operation and doing so will result in unexpected behavior (exceptions and/or database corruption). To replace one instance of an object with unique constraints with another, use the Unit of Work
setShouldPerformDeletesFirst method. Refer to the
OracleAS TopLink Application Developer's Guide for more information.
<persistence-manager name="toplink"/> <entity-deployment name="Address" data-source="jdbc/TopLinkDS" table="TLTUTORIAL.EJB_ADDRESS" PM-name="toplink">
Clicking on a CMP EJB will add PM-name="toplink" attribute entries for the <entity-deployment> tag for that CMP EJB. This is due to the fact that clicking on the TopLink mapping tab for a CMP EJB sets the persistence manager as TopLink. Make sure you have PM-name="toplink" attribute entries set for each EJB CMP in the orion-ejb-jar.xml.
You may also follow the process listed below to create PM-name="toplink" attribute entries.
Users will get an
oracle.toplink.workbench.external.meta.ExternalClassNotFoundException error if they try to import new classes (.java) into a project with the TopLink technology selected, and subsequently attempt to map these classes by selecting the "add descriptor" button under the TopLink node in the Structure pane. In order to eliminate this error, users should compile the classes once before mapping them the first time.
Please check Migration Issues for Toplink specific migration information.
JDeveloper cannot rely upon there being a live network connection available on start-up, and as the relevant schemas are all on the W3C site, which JDeveloper can't copy into its local install for legal reasons, JDeveloper does not pre-register any xml schemas for the WSDL file type. Therefore code insight is not available for WSDL documents in JDeveloper's XML Editor.
It is possible that after you regenerate a PL/SQL web service you will get compilation errors caused by some files being removed from the project during regeneration. To correct this, you need to add the files back to the project by hand.
In the navigator, select the web service node and click on the Add to Applications button (with a + sign). In the dialog, navigate to the \src\ <package> directory. Select all the .sqlj files and click Open. Now you should be able to compile the project without any errors.
If you use an accessibility reader such as JAWS, you need take care using the Find Web Services wizard. On the tModel page of the wizard you need to wait until a row has properly loaded before you can be sure that the 'Is WSDL' column is returning a valid value. You can do this by moving to the Description column first. While the row is being loaded, the Description column returns "Loading". Once the row is loaded, the Description column returns a description of the web service. Now you can go to the 'Is WSDL' column and read the value.
In step 1 of the PL/SQL Web Services wizard, there is a combo box which allows you to choose the project into which the service will be generated. Once you move onto step 3 of the wizard you will see that the web service endpoint has been automatically generated using the context root of the chosen project.
However, if you decide to go back to step 1 and choose a different project, then moves forward to step 3 again, you will notice that the automatic regeneration of the web service endpoint has failed and the endpoint still reflects the context of the originally chosen project.
You will need to manually update the endpoint in the wizard to reflect the correct context root for the project before generating the web service, otherwise the endpoint in the generated WSDL document will be incorrect and any stub generated to access the web service will point at the wrong endpoint. Alternatively, you may re-edit the web service after generation to reflect the correct endpoint on regeneration.
In a PL/SQL web service that uses
XMLTYPE as a parameter or an attribute of an object type, you must use the schema qualified name of
SYS.XMLTYPE.
If you install JDeveloper in a path where any of the folders have a space in the name and then generate a web service which you run on the embedded OC4J server or on an external instance of the OC4J server, you will find that a stub to the service will fail when the web service is called.
The workaround is to install JDeveloper in a path without a space in any folder name.
The WSDL validation on the Select Web Service Description page of the Create Web Service Stub/Skeleton wizard does not recognize the XML Schema type
base64 from the http://schema.xmlsoap.org/soap/encoding/ schema. As a result, you will not be able to generate services from any WSDL files which reference this type.
When you have a SOAP web service created using JDeveloper that uses a scope of "session", it does not start a new session when accessed by a different client.
If you are generating a PL/SQL web service for a database package that contains hyphens in its name, the SQLJ files generated by JPublisher will be incorrect as hyphen (-) is not a valid character in a Java identifier.
The workaround is to edit the SQLJ file generated by JDeveloper, and surround the occurrence of the package name with quotes (""), then rebuild.
The location of the WS-I log file, which you set in Tools | Preferences | WS-I Testing Tools, must be on the same system drive as in JDeveloper, otherwise the log file is not written. For example, if JDeveloper is installed on drive D:, the location of the WS-I log file must also be on drive D:.
Please check Migration Issues for Web Services specific migration information.
Under certain conditions all of the .uit templates in a project may not appear on the context menu for insertion into a UIX page. Performing a Save All operation will force all the templates in the project to be available.
When setting the source attribute for an UIX image component, if you choose an image that is outside of your html_root directory and located on a different drive than JDeveloper is installed, the optional copying of the file into the html_root fails. Workaround is to manually move/copy the image file in the file system.
UIX Preview does not support showing live data for pages bound using ADF Data Controls in this release.
Please check Migration Issues for UIX specific migration information.
The XML Schema Editor has the following limitations in this release:
AnnotationsYou can easily view the annotation of any item in the XML Schema Diagram by holding the mouse pointer over the item and viewing its tooltip. In addition, you can edit the annotation by right clicking on an item and selecting "Edit Annotation..." The annotation that is viewed and edited in these cases is the first "documentation" element. Currently, if you want to add additional documentation elements, or appInfo elements, the XML Code Editor must be used to enter these items.
AttributesThe type of most items, such as complex types and elements, can be easily viewed and set in the XML Schema Diagram. However, attribute types may only be viewed and set in the Property Inspector at this time.
FacetsThe XML Schema Editor allows you to create simple types and add facets to them. However, the facets are not validated against the base type. For example, it is possible to add a "maxDigits" facet to a simple type based on the XML Schema "string" type, even though this does not have any meaning.
Identity ConstraintsAt this time, there is no support in the XML Schema Diagram for key, keyref, and unique elements. You can still work with these items in the Structure Pane, Property Inspector, Component Palette, and XML Code Editor.
RedefineA this time, there is no support in the XML Schema Diagram for the redefine element. You can still work with this item in the Structure Pane, Property Inspector, Component Palette, and XML Code Editor.
Substitution GroupsSubstitution groups are not currently displayed in the diagram, but the substitutionGroup attribute can be set using the Property Inspector.
Printing and SavingAt this time, the XML Schema Diagram cannot be saved to an image file or printed.
If you have class or interface that is modeled on a diagram, and you use Erase from Disk to remove the class or interface from the navigator, you may find that it still appears on the diagram. This occurs when you have created the class or interface and saved it, then closed JDeveloper. Then after restarting JDeveloper, you have erased the class or interface from the navigator.
The workaround is to manually delete the modeled class or interface from the diagram.
When you have an EJB that is modeled on a diagram and you select Erase from Disk from the modeled EJB's context menu, the EJB is still shown in the navigator. To remove it, select the EJB and choose File | Remove from package. When you have an EJB that is modeled on a diagram, and you Erase from Disk the EJB in the navigator, the modeled EJB is still displayed. To remove it, select it and choose Erase from Disk from the context menu.
The workaround is to close the diagram before erasing the EJB, and erase the EJB from the navigator.
Some diagram operations can result in shapes being positioned outside of the existing diagram pages, with no new diagram pages added on which to display them. To display the diagram correctly, save and close the diagram, then reopen it to display the diagram correctly.
When you have an element with a constraint attached to it modeled on a diagram, and you delete the element but not the constraint, you will not be able to expand the Constraint node on the Add to Diagram dialog.
Using Tools | Refactor to rename a Java class on a diagram to the package name, e.g. changing mypackage1.JavaClass1 to mypackage1, causes an error to be displayed when you try to model another class on the diagram. To avoid this, do not change the name of a modeled class to be the same as the package name.
When there is a drive letter in the repository field of a CVs connection's root value, you must not use the drive letter followed by two forward slashes, e.g.
d//cvshome. Instead the repository should be qualified by either an initial forward slash, e.g.
/d//cvshome, or you should use a colon after the drive letter, e.g.
d:\cvshome.
If you lock a file on a WebDAV connection to an Oracle9iAS server, that file cannot be unlocked using JDeveloper.
When you create a Struts Page Flow diagram and data pages, the file
standard.jar is created and added to the project. Before you import the project into CVs using Import Module, you must edit the
cvswrappers file in the CVSROOT module to ensure that the CVs repository handles all
.jar files as binary rather than text. To do this:
*Jar -k 'b' *Jar -m COPY
On Linux, Solaris, and HP-UX, before you make use of JAAS authorization for ADF entity objects, you should ensure that the user running JDeveloper has write permissions on the file jazn-data.xml.
The Chart DataWebBean class is not found when running JDeveloper on a Sun machine running Solaris 8. This may happen if XServer is not started on the Solaris server machine and if the DISPLAY environment variable is not set properly for remote workstations.
Workaround:
1. Verify that the Xterm process is running on the Sun server machine. Run the following command:
ps -ef | grep Xsun
If this command returns a result, then the Xterm process is functioning. If there are no results, start Xterm on the server.
2. At a remote GUI workstation, open a session as the root owner and enter the following command:
xhost +
3. Open another session on the same workstation and telnet to the UNIX server that will run the OC4J application. Start the OC4J container.
If you reboot either the Sun server or GUI workstation, you must repeat this process.
Use double-quotes around such options. For example:
/java/jdk1.4.2_03/bin/java -ojvm -Xcodecoach -Xcc:new -Xcc:level:4
-Xcc:disable:ALL -Xcc:enable:ALL
"-Xcc:excl:com;java;javax;sun;sunw;org;oracle" -classpath
/home/fred/JDev9.0.5/jdev/mywork/Workspace1/Project2/classes:
/home/fred/JDev9.0.5/jdev/lib/jdev-rt.jar mypackage2.Application1
OJVM is a Hotspot-compatible JVM that is required by JDeveloper's Profiler and CodeCoach features. It also enables advanced debugging features.
Install OJVM in your application's J2SE from the Linux shell while logged as root:
cd <jdev_install>/ojvm_linux_x86
sh installOJVM <j2se_ location>
<jdev_install><j2se_ location>To confirm that OJVM has been properly installed, invoke the command:
<j2se_ location>/bin/java -ojvm -version
If you are using Linux and you create elements on a diagram by dragging and dropping from the palette, they are created with the default name. The workaround is to create diagram elements by clicking the icon on the palette and then clicking on the diagram, rather than dragging and dropping them.
When creating a java class (e.g. JavaClass1) an error dialog displaying 'An error occurred, so processing could not continue.' is displayed and you can see that component displayed on the diagram. Once you click on the OK button in the error dialog the component disappears from the diagram (a blank diagram is displayed) but the Java src file (JavaClass1.java) created is still shown in the application navigator. When you open it this file it is empty. When you encounter this situation you must retry. The diagram will then have the class component (JavaClass1), and the Java src file (JavaClass1.java) will be updated accordingly.
You may encounter the following error when making/running JSPs even if the reported taglib handler class is in the classpath:
Error(1): java.lang.ClassNotFoundException: Error(1): Unable to load taghandler class:
This may be the side-effect against some jars in WEB-INF/lib that contain the unused tlds, whose implementation libraries are not in this project's classpath. In this case, you can use one of the following:
If you use JDeveloper in a multibyte environment, the embedded browser may display all multibyte characters as squares. If this happens, use the following option to prevent the problem:
AddVMOption -Dice.pilots.html4.ignoreNonGenericFonts=true
Currently, JSP/HTML Editor detects file's encoding from META tag in HEAD tag like <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis"/>.
JSP/HTML Editor expects such META tag within the first 2000 bytes of its file. If your JSP/HTML file is garbled in JSP/HTML Editor, please check whether the correct META tag exists within the first 2000 bytes.
When you press Enter on a node in either the Application or System Navigator, you open the Visual Editor for that file. To switch to the different editors available for a document; for example, to display the file in the Code Editor instead of the Visual Editor, you can use the Alt+Page Up and Alt+Page Down accelerators. All editors also support the Windows | Go to | Right Editor and Windows | Go to | Left Editor menu commands.
To switch between tabs on the Structure window, press Tab to move the focus from the Structure tree to the tab header, and then press Alt + Right Arrow or Alt + Left Arrow. Note that JAWS does not say that the tab header has focus.
Although AccessibleHyperText is not fully supported, you can still use JAWS to navigate the ICE Browser and read JDeveloper online help; JAWS will read the content as a text area. When the Help window has focus, use the Up Arrow and Down Arrow keys to read "line by line". Use Insert Up Arrow and Insert Down Arrow keys to read continually up and down.
The Oracle ICE Browser accessibility support also brings actionable items (like links) in focus as they are read by the screen reader; press the Enter key to activate the focused item. You may also use the Tab key to traverse the actionable items in an HTML document.
In Netscape 4.79 the Next, Previous, NextSet, PreviousSet, Commit and Rollback buttons are always enabled.
You may have problems compiling if a plus sign (+)appears in any of your file paths.
Importing from a database and generation to a database are not certified against non-Oracle databases.
The property inspector will show no properties if an xml document is invalid and the user changes selection in the structure pane. To work around this problem make sure the document is both well formed and grammatically valid before attempting to edit in the property inspector.
It is possible to do JavaServer Faces (JSF) development in JDeveloper 10g. However since JSF is not yet bundled in JDeveloper 10g, instructions for setting up JDeveloper to work with JSF 1.0 along with examples are provided on OTN at the location:
http://otn.oracle.com/products/jdev/jsf.html
|
Oracle Corporation
|
Worldwide Inquiries:
|
Copyright © 2004, Oracle Corporation. All Rights Reserved. |