Monday, June 22, 2015

JDeveloper SOA 11.1.1.7 Extension Versions

Below is a list of SOA 11.1.1.7 versions and their respective JDeveloper SOA extension version.

SOA VersionSOA Extension
11.1.1.711.1.1.7.0.00.08
11.1.1.7.311.1.1.7.0.00.97
11.1.1.7.411.1.1.7.0.00.97
11.1.1.7.511.1.1.7.0.01.61
11.1.1.7.711.1.1.7.0.02.03

Friday, May 1, 2015

Get Selected Row of ADF Tree

I needed to get some information contained in the selected row of an ADF Tree component.

/* START PRESERVE DEFAULT ADF SELECT BEHAVIOR 
 * Courtesy of Frank Nimphius - https://blogs.oracle.com/jdevotnharvest/entry/how_to_read_data_from */

FacesContext fctx = FacesContext.getCurrentInstance();
Application application = fctx.getApplication();
ELContext elCtx = fctx.getELContext();
ExpressionFactory exprFactory = application.getExpressionFactory();

MethodExpression me = null;
me = exprFactory.createMethodExpression(elCtx, adfSelectionListener, Object.class, new Class[] {SelectionEvent.class}); 
me.invoke(elCtx, new Object[] { selectionEvent });  
/* END PRESERVE DEFAULT ADF SELECT BEHAVIOR */

RichTree tree = (RichTree)selectionEvent.getSource();
TreeModel model = (TreeModel)tree.getValue();

// get selected nodes
RowKeySet rowKeySet = selectionEvent.getAddedSet();
Iterator rksIterator = rowKeySet.iterator();

while (rksIterator.hasNext()) {
   List key = (List)rksIterator.next();
   JUCtrlHierBinding treeBinding = null;
   CollectionModel collectionModel = (CollectionModel)tree.getValue();
   treeBinding = (JUCtrlHierBinding)collectionModel.getWrappedData();
   JUCtrlHierNodeBinding nodeBinding = null;
   nodeBinding = treeBinding.findNodeByKeyPath(key);
   Row row = nodeBinding.getRow();
   // Get the LexisAccountNumber and enable the delete image link
   String value = row.getAttribute("someAttribute").toString();
}

Wednesday, April 29, 2015

Invoke ADF Data Control Operation via Bindings Layer

Assumptions:

  • You have created a data control.
  • You have created a methodAction binding for the respective operation on a page.
package com.bjwallen.examples;

import oracle.binding.AttributeBinding; 
import oracle.binding.BindingContainer;
import oracle.binding.OperationBinding;
import oracle.adf.model.BindingContext;

public class BindingsExample{

  public BindingsExample(){
    super();
  }

  public void invokeOperation() {
    // get a handle on the bindingContainerBindingContainer
    bindingContainer = BindingContext.getCurrent().getCurrentBindingsEntry();
    
    // get a handle on the operation you want to invoke
    OperationBinding operationBinding = bindingContainer.getOperationBinding("yourOperation");
    
    // get a handle on an attribute that is bound to some component on a page
    AttributeBinding yourAttr = (AttributeBinding)bindingContainer.getControlBinding("yourComponentBinding");
    
    // put the value of the attribute in an operationBinding map
    operationBinding.getParamsMap().put("yourKey", yourAttr.getInputValue().toString();
    
    // invoke your operation
    operationBinding.execute();
    
    // check for any exceptions
    if (!operationBinding.getErrors().isEmpty()) {
      // handle exceptions accordingly
    }
  }
}


If you're dealing with complex types in the WSDL, you can update the request using the DCBindingIterator.

// cast your bindingContainer to a DCBindingContainer
DCBindingContainer dcBindingContainer = (DCBindingContainer)bindingContainer;

// get the data control iterator
DCIteratorBinding dcIteratorBinding = dcBindingContainer.findIteratorBinding("yourIterator");

// update the row with the value of an attribute bound to a page
Row row = dcIteratorBinding.getCurrentRow();
String value = yourAttr.getInputValue().toString();
row.setAttribute("DateTime", value);



References:
http://biemond.blogspot.com/2009/03/some-handy-code-for-backing-beans-adf.html
http://steve-hawes.blogspot.com/2011/11/invoking-web-service-from-adf-managed.html

Thursday, February 26, 2015

JDeveloper Cannot Establish Connection or Local Host Not Known When Connecting to Application Server

I updated to OS X Yosemite recently. After which, I experienced some issues with JDeveloper when trying to create a connection to an Application Server. I observed the following exceptions:

Testing JSR-160 Runtime ... failed.
Cannot establish connection.
Testing JSR-160 DomainRuntime ... skipped.
Testing JSR-88 ... skipped.
Testing JSR-88-LOCAL ... skipped.
Testing JNDI ... skipped.
Testing JSR-160 Edit ... skipped.
Testing HTTP ... success.
Testing Server MBeans Model ... skipped.
Testing HTTP Authentication ... success.

and

Testing JSR-160 Runtime ... failed.
Local host not known?!
Testing JSR-160 DomainRuntime ... skipped.
Testing JSR-88 ... skipped.
Testing JSR-88-LOCAL ... skipped.
Testing JNDI ... skipped.
Testing JSR-160 Edit ... skipped.
Testing HTTP ... success.
Testing Server MBeans Model ... skipped.
Testing HTTP Authentication ... success.

I went into OS X System Preferences and set my Computer Name to something other than MacBook Pro. I also clicked the Edit button there and set my Local Hostname: to the same value.

Also, check your /etc/hosts file for the proper alias, e.g. hostname.local

I had no more issue with JDeveloper connecting to an Application Server.

Tuesday, February 10, 2015

RCU-6016:The specified prefix already exists

I was running RCU via command line as part of a silent installation, and the script threw an exception while doing it's thing. I reran RCU via command line to drop the repository; however, it too threw an exception. So, I connected to the DB and removed the schemas manually. When RCU was executed again to create the schemas, another exception was thrown:

RCU-6016:The specified prefix already exists.
RCU-6091:Component name/schema prefix validation failed.

I reconnected to the database and manually created the schemas that RCU creates automatically. I was then able to successfully run RCU to drop and recreate the schemas.

As a side note, some RCU components create additional schemas that are not advertised. Case in point, the IAU component creates the following schemas:

${prefix}_IAU
${prefix}_IAU_APPEND
${prefix}_IAU_VIEWER



Friday, February 6, 2015

Linux sed Replace with Environment Variable Containing Path

I had a use case to construct a bash script to search a configuration file and replace a string with a path. This path was stored as an environment variable.

PATH=/some/path
export PATH

My original sed command looked like this:

sed -i "s/findThis/$PATH/g" someFile.cfg

Execution of the script kept throwing the following exception:

sed: -e expression #1, char 33: unknown option to `s'

After some trial and error, I discovered that the issue was related to the file separators (/) in the value of PATH. Instead of using a '/' as the separator for sed, use a pipe '|'.

sed -i "s|findThis|$PATH|g" someFile.cfg

Monday, January 26, 2015

Property “Name” of Server with original name “_sample” is invalid. The property value is duplicated.

I was writing some scripts using WebLogic Scripting Tool (WLST) to automagically create a domain, and I experienced this exception in the dumpStack():

Property "Name" of Server with original name "_sample" is invalid. The property value is duplicated.

You may experience this error when you attempt to create a managed server that already exists, especially if you have read an existing template.

In my case, I was building an Oracle Access Manager (OAM) domain and referenced the oracle.oam_ds_11.1.2.0.0_template.jar template. This template defines a managed server, "oam_server1". In my logic, I was trying to create a managed server with the same name, thus the exception was being thrown.


As a workaround, you can do the following:

  • In your script logic, reference the pre-existing managed server and manipulate it,
  • Name your new managed server something else, or
  • Remove the reference to whatever domain template you may be using.