AMIS Technology Blog http://technology.amis.nl Friends of Oracle and Java Mon, 20 Oct 2014 11:11:30 +0000 en-US hourly 1 http://wordpress.org/?v=4.0 Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/ http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/#comments Mon, 20 Oct 2014 11:07:33 +0000 http://technology.amis.nl/?p=32706 The Oracle Service Bus is often used for service virtualization. Endpoints are exposed on the Service Bus which proxy other services. Using such an abstraction layer can provide benefits such as (among many other things) monitoring/logging, dealing with different versions of services, throttling/error handling and result caching. In this blog I will provide a small [...]

The post Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints appeared first on AMIS Technology Blog.

]]>
The Oracle Service Bus is often used for service virtualization. Endpoints are exposed on the Service Bus which proxy other services. Using such an abstraction layer can provide benefits such as (among many other things) monitoring/logging, dealing with different versions of services, throttling/error handling and result caching. In this blog I will provide a small (Java) script, which works for SOA Suite 11g and 12c, which determines exposed endpoints on the Service Bus.Exposed SOAP HTTP endpoints

How to determine endpoints?

In order to determine endpoints on the Service Bus, The Service Bus MBeans can be accessed. These MBeans can obtained from within a local context inside the Service Bus or remotely via JMX (when configured, see http://stackoverflow.com/questions/1013916/how-to-enable-jmx-on-weblogic-10-x). In this example I’ll use a remote connection to a Weblogic Server instance which runs on the same machine (JDeveloper IntegratedWeblogicServer). To browse MBeans, you can use jvisualvm (http://docs.oracle.com/javase/7/docs/technotes/guides/visualvm/) which is distributed as part of the Oracle JDK. JVisualVM has a plugin to browse MBeans.

Screenshot from 2014-10-20 10:04:14

Screenshot from 2014-10-20 10:06:01

When connected, the Service Bus MBeans are located under com.oracle.osb. The proxy services which define the exposed endpoints, can be recognized by the Proxy$ prefix. In order to determine the actual endpoint, you can look at the ResourceConfigurationMBean of the proxy service. Under configuration, transport-configuration you can find a property called url. The script also filters HTTP SOAP services since the url field is also used for other transports. A replace of // with / is done on the combination server:host/url since the url can start with a /. This causes no difference in functioning but provides better readable output. If you want WSDL’s, you can add ‘?wsdl’ to the obtained endpoint.

The script requires some libraries. For 11g, you can look at http://techrambler99.blogspot.nl/2013/11/oracle-service-bus-using-management.html. On that blog, more specific API calls are done which have more dependencies. This example requires less. For 12c, it was enough to add the Weblogic 12.1 remote client library in the project properties.

Screenshot from 2014-10-20 11:30:33

The script does not determine the hostname/port of the server the Service Bus is currently running on. This could lead to misinterpretation when for example a load-balancer or another proxy component (such as OHS) is used.

The script


package nl.amis.smeetsm.sb;

import java.io.IOException;

import java.net.MalformedURLException;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Set;

import javax.management.MBeanServer;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean;

public class SBEndpointList {

private static MBeanServerConnection connection;
private static String HOST = "localhost";
private static Integer PORT = 7101;
private static String USERNAME = "weblogic";
private static String PASSWORD = "Welcome01";

public SBEndpointList() throws IOException, MalformedURLException, NamingException {
this.connection = this.getMBeanServerConnection();
}

private ObjectName[] getObjectNames(ObjectName base, String child) throws Exception {
return (ObjectName[]) connection.getAttribute(base, child);
}

public ArrayList<String> getEndpoints() throws Exception {
ArrayList<String> result = new ArrayList<String>();

Set<ObjectName> osbconfigs =
connection.queryNames(new ObjectName("com.oracle.osb:Type=ResourceConfigurationMBean,*"), null);

for (ObjectName config : osbconfigs) {
if (config.getKeyProperty("Name").startsWith("ProxyService$")) {
//System.out.println(config);
CompositeDataSupport cds = (CompositeDataSupport) connection.getAttribute(config, "Configuration");
String servicetype = (String) cds.get("service-type");
if (servicetype.equals("SOAP")) {
CompositeDataSupport pstt = (CompositeDataSupport) cds.get("transport-configuration");
String url = (String) pstt.get("url");
String tt = (String) pstt.get("transport-type");
if (tt.equals("http")) {
result.add("http://SERVER:PORT" +("/" + url).replace("//" ,"/") );
}
}
}
}
return result;
}
private JMXConnector initRemoteConnection(String hostname, int port, String username,
String password) throws IOException, MalformedURLException {
JMXServiceURL serviceURL =
new JMXServiceURL("t3", hostname, port, "/jndi/" + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME);
Hashtable<String, String> h = new Hashtable<String, String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");
return JMXConnectorFactory.connect(serviceURL, h);
}

private MBeanServerConnection getMBeanServerConnection() throws IOException, MalformedURLException,
NamingException {
try {
InitialContext ctx = new InitialContext();
MBeanServer server = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
return server;
} catch (Exception e) {
JMXConnector jmxcon = initRemoteConnection(HOST, PORT, USERNAME, PASSWORD);
return jmxcon.getMBeanServerConnection();
}
}

public static void main(String[] args) throws IOException, MalformedURLException, Exception {
SBEndpointList me = new SBEndpointList();

ArrayList<String> result = me.getEndpoints();
System.out.println("Endpoints:");
for (String endpoint : result) {
System.out.println(endpoint);
}

}
}

 

 

The post Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/feed/ 0
SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/ http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/#comments Fri, 17 Oct 2014 20:51:10 +0000 http://technology.amis.nl/?p=32702 A Human Task in SOA Suite can be configured to automatically escalate when the task is not taken care of for a certain period of time. This escalation implies that the task is assigned to the person (or persons) one level higher up the organizational hierarchy than the people who had gotten the task assigned [...]

The post SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy appeared first on AMIS Technology Blog.

]]>
A Human Task in SOA Suite can be configured to automatically escalate when the task is not taken care of for a certain period of time. This escalation implies that the task is assigned to the person (or persons) one level higher up the organizational hierarchy than the people who had gotten the task assigned originally.

In this article I will show very briefly a setup for the task definition and and the user & groups in the embedded LDAP directory in WebLogic that together make this escalation work.

The task is defined with the following Assignment for a one participant of type “single participant”  in a single stage:image

So the task is set (radio button) to be be auto-assigned to a single user according to the Least Busy assignment pattern. The Group to which the task is assigned is selected from the identity store (which is just the embedded LDAP directory in WebLogic).

On the Deadlines tab of the task editor, we have specified that the assignees better be quick: after two minutes, the task will be escalated to the next level up the hierarchical food chain:

image

If we had 40 levels of hierarchy, that is how for the task could get escalated. We run out of hierarchy after about three levels – because that is the way how things are defined in the LDAP.

Through the WebLogic Admin console, I created several users (Dick, Tom, Harry, Matthew and Mark), groups (Account Manager, Sales Manager and CEO) and group memberships (Tom, Dick and Harry => Account Manager, Matthew to => Sales Manager and Mark => CEO). Using the JXplorer tool and the perfect instructions in this article: Creating an hierarchical user structure in embedded LDAP of weblogic , I ensured that Tom, Dick and Harry are peers that report to Matthew who reports to Mark:

image

The exact value for the manager attribute is:

uid=Matthew,ou=people,ou=myrealm,dc=soa_domain

in the case of Tom, Dick and Harry.

Deploy and Run

If the SOA composite that contains the task is deployed and its exposed service is invoked. the task gets instantiated – assigned to the role of Account Manager. If we do not touch it, it will be escalated: after two minutes to the manager(s) of the Account Managers and two minutes later to the manager of that/those manager(s) – Mark, the CEO. This is what the flow trace tells us after five minutes:

image

 

Right after calling the service, you could login to the BPM worklist application, as Tom. You should see the newly created task – available for Tom to work on. Logout and login as Dick. This user too should see the task, because of his membership of the Account Manager group to which the task was assigned. The same applies to Harry.

If Dick claims the task or even executes it, it is no longer available to Tom and Harry: only one of them has to complete the task. After initially claiming the task, Dick can also release the task if for some reason he cannot complete it after all. The task the reappears in the todo lists for all three account managers.

If no one touches the task for 2 minutes, an automatic escalation takes place. Login to the BPM worklist application as Matthew before the 2 minutes are up, and there should not be any tasks visible. However, when an AssessProposal task was unattended for 2 minutes, the manager of the original assignees – Matthew, who is the manager of Tom, Dick and Harry – gets the now escalated task assigned. And if he does not react within 2 minutes, the task is moved up the hierarchy once more, to Mark whom Matthew reports to.

Note: It seems that the setting of the radio button to be auto-assigned to a single user [according to the Least Busy assignment pattern]is crucial (without I did not get the escalation). I have not tried but suppose the users with the initial role (Account Manager) would have several managers among themselves, would then escalation take place to all of these managers? And would the next round of escalation involve multiple people as well – the managers of these first time managers?

Note: this article complements chapter 17 of the Oracle SOA Suite 12c Handbook.

The post SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/feed/ 0
SOA Suite 12c: Actionable Emails with Human Task service http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/ http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/#comments Fri, 17 Oct 2014 10:34:26 +0000 http://technology.amis.nl/?p=32681 It is my assumption that inbound and outbound emailing has been configured – for example for a GMail account – as described in these two articles: GMail for inbound mail in SOA Suite 12c and GMail for outbound mail in SOA Suite 12c and that test mails can be sent and received. The steps are: [...]

The post SOA Suite 12c: Actionable Emails with Human Task service appeared first on AMIS Technology Blog.

]]>
It is my assumption that inbound and outbound emailing has been configured – for example for a GMail account – as described in these two articles: GMail for inbound mail in SOA Suite 12c and GMail for outbound mail in SOA Suite 12c and that test mails can be sent and received.

The steps are:

  • configure an email driver for SOA Suite for outbound and inbound emails
  • configure an email address (one of the inbound email accounts set up on the email driver configuration) for actionable emails
  • create a Human Task definition for a task that is configured as actionable; assign this task to a user who has an email configured in the LDAP directory
  • deploy the Human Task as part of a SOA Composite; invoke the composite to have the task assigned to the user
  • the user should receive a notification mail message regarding the task assignment with the option to act on the task by clicking a link in the email; clicking such a link will trigger a response email to the actionable email account with appropriate meta-data for the SOA Suite to interpret the response; the user can even add attachments and comments to this task response mail.

We assume the first setp has been taken care of. Once the email driver for the managed server running SOA Suite has been configured for outbound and inbound email interaction, there is really not a lot to do.

Open the menu SOA Administration | Workflow Properties:

image

 

Ensure that the actionable email address is set:

image

This setting has to consequences (I believe): one is to configure the links for each of the task outcomes that will be included in the actionable emails sent to the users who have been assigned the task and the second one is to correctly poll this inbound email account for incoming emails that are in fact actions on a task.

Unfortunately, after making a change on this page, the managed server has to be restarted.

Configure a user with an email address in our LDAP

Once restarted, let’s make sure that we have at least one user in the embedded LDAP directory in our WebLogic domain with an email address configured.

Open the WebLogic Server Admin Console.  Click on Security Realms in the Domain Structure navigator. Click on the realm myrealm. Click on the tab Users and Groups:

image

Click on user weblogic.

Click on the tab Attributes

Locate atribute mail. Click on the value, define a valid email address and press enter.

image

When weblogic next would login to the BPM Worklist application, he would find a default notification channel configured based upon this email address:

image

Create a Human Task definition that is actionable (and assigned to a user with an email address configured)

We will not discuss all details around creating a SOA composite application, a HumanTask and a BPEL process from which to invoke the Human Task. These can be found in various other resources.

However, make sure that:

  • the task is assigned to user weblogic (or a group that weblogic is part of; or some other user with a configured email address)
  • the task is configured as actionable – and notifications are sent upon task assignment (the default setting)

The SOA Composite looks like this:

image

The task is assigned to user weblogic:

SNAGHTML8f0521

And it is actionable:

image

Additionally, notifications are sent for task assignment:

image

 

Deploy and Run

When the SOA composite is deployed and a test call is made, a new instance is created:

image

This instance is still running, waiting as it is for the task to be completed:

image

The task instance to act upon is visible to weblogic in the BPM Worklist application:

image

And if he fails to check over there, the Human Task has still reached out to him, via the actionable email:

image

The email does not contain a lot of useful details. It does have links for the two supported outcomes.

image

When we click the Approve link, the reply email is prepared:

image

it also allows weblogic to enter a comment. When we press Send, the mail is sent to the actionable email address that was configured for the Human Task engine.

image

When we check on the instance in the EM FMW Control – after we allow for the polling interval to pass:

image

The BPEL process audit trace provides insight in what happened in some more detail.

image

It is clear that mail was received and processed.

From the EM FMW Control’s overview page for the Human Workflow Engine that is opened using the SOA Infrastructure context menu Service Engines | Human Workflow

image

We can see an overview from all recent outbound and inbound email messages. Here we find the actionable email response that was received and we can inspect its contents:

image

Of course these emails can also be received on a mobile device – and the action can be taken on that device as well. While I as walking through our local DIY store, I received this mail on my iPhone:

image

After some time, I decided to act, by clicking the link to Approve:

image

I did not enter any comments or add any attachments. I merely pressed Send.

It turned out I had waited for too long and the task had already expired – or been handled by someone else; I received the following email from the Human Task service:

image

The post SOA Suite 12c: Actionable Emails with Human Task service appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/feed/ 0
Insight in the Roadmap for Oracle Cloud Platform Services http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/ http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/#comments Thu, 16 Oct 2014 06:39:13 +0000 http://technology.amis.nl/?p=32633 In my earlier blog posting  I listed the different Oracle Cloud Services.  Due to the massive introduction of all cloud based solutions it is difficult to have an overview of all cloud based solutions and their roadmap for launching. I have drafted an overview of these items on the image below and listed the products [...]

The post Insight in the Roadmap for Oracle Cloud Platform Services appeared first on AMIS Technology Blog.

]]>
In my earlier blog posting  I listed the different Oracle Cloud Services.  Due to the massive introduction of all cloud based solutions it is difficult to have an overview of all cloud based solutions and their roadmap for launching. I have drafted an overview of these items on the image below and listed the products and links to more information.

PAAS oracle roadmap cloud

Oracle Cloud platform as a Service roadmap

 

Direct access to Oracle Cloud Services

Below you will find a list of the different Oracle IAAS and PAAS options.

Infrastructure as a Service (IAAS)

Platform as a Service (PAAS)

The post Insight in the Roadmap for Oracle Cloud Platform Services appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/feed/ 0
JavaOne 2014: Roadmaps for the near future of Java http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/ http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/#comments Fri, 10 Oct 2014 17:52:36 +0000 http://technology.amis.nl/?p=32622 JavaOne 2014 is first of all a community gathering – with over 500 sessions that discuss Java related topics in tantalizing details. A meeting of minds, of kindred spirits etc. It is also the place where the roadmap for the near future of the various constituents of the Java platform is unfolded. The slides in [...]

The post JavaOne 2014: Roadmaps for the near future of Java appeared first on AMIS Technology Blog.

]]>
JavaOne 2014 is first of all a community gathering – with over 500 sessions that discuss Java related topics in tantalizing details. A meeting of minds, of kindred spirits etc. It is also the place where the roadmap for the near future of the various constituents of the Java platform is unfolded. The slides in this article are taken from the Java Keynote on Sunday 28th September 2014.

Java SE:

image

Java SE Embedded/Java ME Embedded:

image

Java EE 8 :

image

image

image

The post JavaOne 2014: Roadmaps for the near future of Java appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/feed/ 0
SOA Suite 12c: Getting started with the Spring Component http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/ http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/#comments Fri, 10 Oct 2014 15:16:32 +0000 http://technology.amis.nl/?p=32599 The Oracle SOA Suite Spring component has been present since SOA Suite 11.1.1.3 (11gR1 PS2). This component allows easy integration of Java code with other SOA Suite components such as (among others) BPEL, BPM and Business Rules. In SOA Suite 12c (12.1.3.0) this component is still present. In This blog post I will provide a [...]

The post SOA Suite 12c: Getting started with the Spring Component appeared first on AMIS Technology Blog.

]]>
The Oracle SOA Suite Spring component has been present since SOA Suite 11.1.1.3 (11gR1 PS2). This component allows easy integration of Java code with other SOA Suite components such as (among others) BPEL, BPM and Business Rules. In SOA Suite 12c (12.1.3.0) this component is still present. In This blog post I will provide a short example on how it can be used and how the first problem I encountered with this component can be avoided.

Oracle Spring

Implementation

First create a SOA Application and an empty project. Next create a Java class with a public method and extract an interface with the public method. You can also supply JARs in the SCA-INF/lib folder of the project with the class/interface.

Extract interface from Java class

The result in this example. The Java class extends the interface.


package nl.amis.smeetsm.springapp;
import org.eclipse.persistence.Version;
public class EclipselinkUtils implements IEclipselinkUtils {
public String getVersion() {
return Version.getVersion().toString();
}
}


package nl.amis.smeetsm.springapp;
public interface IEclipselinkUtils {
String getVersion();
}

Next drag the Spring component from the component palette to the composite editor.

Add Spring Component

Give your new component an understandable name. Open the component. Paste the following (specific to this example);


<sca:service name="EclipselinkUtilsService" target="impl" type="nl.amis.smeetsm.springapp.IEclipselinkUtils">
<interface.java interface="nl.amis.smeetsm.springapp.IEclipselinkUtils"/>
</sca:service>
<bean name="impl" class="nl.amis.smeetsm.springapp.EclipselinkUtils"/>

On the following page; http://www.oracle.com/technetwork/articles/soa/jellema-events-soasuite-1902429.html at ‘Implementing the Spring Bean’ you can find more explanation on how to provide services and references in a Spring Component.

Next in the composite editor, drag the service interface to the services lane and indicate you want a webservice.

Drag and drop

Compile and deploy.

To my own surprise (this was a simple example), the deployment failed.


<Line 43, Column 57>: XML-24509: (Error) Duplicated definition for: 'identifiedType'
<Line 60, Column 28>: XML-24509: (Error) Duplicated definition for: 'beans'
<Line 157, Column 34>: XML-24509: (Error) Duplicated definition for: 'description'
<Line 169, Column 29>: XML-24509: (Error) Duplicated definition for: 'import'
<Line 191, Column 28>: XML-24509: (Error) Duplicated definition for: 'alias'
<Line 220, Column 33>: XML-24509: (Error) Duplicated definition for: 'beanElements'
<Line 235, Column 44>: XML-24509: (Error) Duplicated definition for: 'beanAttributes'
<Line 510, Column 43>: XML-24509: (Error) Duplicated definition for: 'meta'
<Line 518, Column 35>: XML-24509: (Error) Duplicated definition for: 'metaType'
<Line 535, Column 27>: XML-24509: (Error) Duplicated definition for: 'bean'
<Line 555, Column 38>: XML-24509: (Error) Duplicated definition for: 'constructor-arg'
<Line 623, Column 51>: XML-24509: (Error) Duplicated definition for: 'property'
<Line 634, Column 32>: XML-24509: (Error) Duplicated definition for: 'qualifier'
<Line 650, Column 48>: XML-24509: (Error) Duplicated definition for: 'attribute'
<Line 660, Column 36>: XML-24509: (Error) Duplicated definition for: 'lookup-method'
<Line 696, Column 38>: XML-24509: (Error) Duplicated definition for: 'replaced-method'
<Line 733, Column 31>: XML-24509: (Error) Duplicated definition for: 'arg-type'
<Line 760, Column 26>: XML-24509: (Error) Duplicated definition for: 'ref'
<Line 798, Column 28>: XML-24509: (Error) Duplicated definition for: 'idref'
<Line 832, Column 28>: XML-24509: (Error) Duplicated definition for: 'value'
<Line 860, Column 27>: XML-24509: (Error) Duplicated definition for: 'null'
<Line 874, Column 39>: XML-24509: (Error) Duplicated definition for: 'collectionElements'
<Line 892, Column 27>: XML-24509: (Error) Duplicated definition for: 'list'
<Line 915, Column 26>: XML-24509: (Error) Duplicated definition for: 'set'
<Line 936, Column 26>: XML-24509: (Error) Duplicated definition for: 'map'
<Line 957, Column 45>: XML-24509: (Error) Duplicated definition for: 'entry'
<Line 966, Column 28>: XML-24509: (Error) Duplicated definition for: 'props'
<Line 988, Column 26>: XML-24509: (Error) Duplicated definition for: 'key'
<Line 999, Column 27>: XML-24509: (Error) Duplicated definition for: 'prop'
<Line 1018, Column 39>: XML-24509: (Error) Duplicated definition for: 'propertyType'
<Line 1061, Column 41>: XML-24509: (Error) Duplicated definition for: 'collectionType'
<Line 1073, Column 40>: XML-24509: (Error) Duplicated definition for: 'listOrSetType'
<Line 1082, Column 34>: XML-24509: (Error) Duplicated definition for: 'mapType'
<Line 1104, Column 36>: XML-24509: (Error) Duplicated definition for: 'entryType'
<Line 1143, Column 36>: XML-24509: (Error) Duplicated definition for: 'propsType'
<Line 1156, Column 45>: XML-24509: (Error) Duplicated definition for: 'defaultable-boolean'
<Line 17, Column 33>: XML-24509: (Error) Duplicated definition for: 'annotation'
<Line 36, Column 45>: XML-24509: (Error) Duplicated definition for: 'typedParameterType'
<Line 40, Column 38>: XML-24509: (Error) Duplicated definition for: 'exportsType'
<Line 63, Column 45>: XML-24509: (Error) Duplicated definition for: 'registersScopeType'
<Oct 8, 2014 7:01:13 PM CEST> <Error> <ServletContext-/soa-infra> <BEA-000000> <Error during deployment
oracle.fabric.common.FabricException: Deployment Failed: Error occurred during deployment of component: EclipselinkUtilsSpring to service engine: implementation.spring, for composite: StringProject: SCA Engine deployment failure.: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from URL [oramds:/deployed-composites/default/StringProject_rev1.0/Spring/EclipselinkUtilsSpring.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 1523; <Line 6, Column 1523>: XML-24500: (Error) Can not build schema 'http://www.springframework.org/schema/util' located at 'http://www.springframework.org/schema/util/spring-util.xsd'
at oracle.integration.platform.blocks.deploy.StandaloneCompositeDeploymentCoordinatorImpl.coordinateCompositeDeployment(StandaloneCompositeDeploymentCoordinatorImpl.java:109)
at oracle.integration.platform.blocks.deploy.StandaloneCompositeDeploymentCoordinatorImpl.coordinateCompositeDeployment(StandaloneCompositeDeploymentCoordinatorImpl.java:70)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deployNewComposite(BaseDeployProcessor.java:514)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deploySARs(BaseDeployProcessor.java:305)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deploySARs(BaseDeployProcessor.java:157)
Truncated. see log file for complete stacktrace

To work around this you need to replace the line in the Spring XML file:


xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd">

with the much shorter line


xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd">

Something with the XML parser supplied with Weblogic server 12.1.3 apparently… (see http://stackoverflow.com/questions/5005901/duplicated-definition-for-identifiedtype)

Confirm it works

After deployment you can test the service to confirm it works.

Conclusion

The Spring component allows for easy integration with other SOA components. In release 12c, the error in 11g when a Java class is not compiled yet (see http://javaoraclesoa.blogspot.nl/2012/03/file-processing-using-spring-component.html) does not occur anymore, which is nice. However we get a different error in return. Luckily it is easily solved and we can enjoy this nice feature.

I’ve not yet found a way to give preference to a local class over the application server classes. I could alter the classpath of the entire server or soainfra but that could have other less pleasant side-effects. Maybe I´ll figure this one out in a later blogpost.

The post SOA Suite 12c: Getting started with the Spring Component appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/feed/ 0
Transformatie – Business done differently http://technology.amis.nl/2014/10/10/transformatie/ http://technology.amis.nl/2014/10/10/transformatie/#comments Fri, 10 Oct 2014 14:23:34 +0000 http://technology.amis.nl/?p=32587 AMIS is uit ruim 10.000 Oracle Specialized Partners verkozen tot Oracle EMEA Middleware partner van het jaar. Een geweldige bekroning van vele jaren hard werk. Gestart met een idee en via een veelheid aan activiteiten, tot optimale wasdom gekomen als Oracle specialist. Vergelijk het met de transformatie van eitje via rups naar vlinder. Iedereen herkent [...]

The post Transformatie – Business done differently appeared first on AMIS Technology Blog.

]]>
AMIS is uit ruim 10.000 Oracle Specialized Partners verkozen tot Oracle EMEA Middleware partner van het jaar. Een geweldige bekroning van vele jaren hard werk. Gestart met een idee en via een veelheid aan activiteiten, tot optimale wasdom gekomen als Oracle specialist.

Vergelijk het met de transformatie van eitje via rups naar vlinder. Iedereen herkent deze transformatie waarbij het geplante ‘idee’, via een energieverslindende veelvraat tot iets moois leidt. De belangrijkste les hiervan is dat je er niet bent met slechts een idee. Het begint pas met het in gang zetten van dat idee. Die beweging vreet energie. Energie, die ook volop beschikbaar is, omdat we een doel voor ogen hebben. We weten dus waar we het voor doen. En uiteindelijk groeit er een mooie gracieuze vlinder!

De transformatie van AMIS

Bij AMIS is het niet anders gegaan. AMIS is ontstaan door een idee van studenten die een gat in de markt zagen: software voor organisaties die onderhoud aan vliegtuigen uitvoeren. Aircraft Maintenance Information Systems (AMIS) werd geboren. De met Oracle technologie gebouwde applicatie werd ontwikkeld voor een launching customer. Dat is waar het vervolgens ook eindigde. Het gat in de markt bleek ergens anders te liggen. De kennis van toepassing van Oracle technologie bleek meer waarde te hebben dan de gebouwde software. En zo ontstond AMIS als IT-bedrijf.

De essentie

Zo stormachtig als IT zich ontwikkelde en steeds aanweziger werd in de wereld om ons heen, zo stormachtig groeide AMIS. Naast de Oracle kern werd er gestart met kantoorautomatisering: hardware zoals servers en netwerken, implementatie van standaard software, testen, enz. De rups leek er nooit genoeg van te kunnen krijgen. Zoals bij elk IT-bedrijf waren er projecten met wisselend succes. Om te overleven op lange(re) termijn was het daarom noodzakelijk om een goede zelfanalyse te uit te voeren. Dit leidde terug tot de kern: wij zijn specialisten in Oracle technologie. AMIS verliet zijn cocon en groeide uit tot een prachtige vlinder, bekroond met een geweldige award, die nooit eerder een Nederlandse Oracle partner ten deel viel.

Ware transformatie

“Know yourself, accept and love yourself for who you are, be confident, feel safe, be the change.” Dat is voor mij de basis van ware transformatie. Ken je kracht, en creëer van daaruit iets moois. Niet voor jezelf, maar met en voor anderen. De kennis die we als know-how bedrijf vergaren delen we graag met anderen, met collega’s, met klanten en met de hele Oracle community. We werken samen en versterken elkaar. En dat in de overtuiging dat iets nieuws maken veel meer waarde levert dan vervanging of meer van hetzelfde. We zijn niet bang om ingehaald te worden, omdat we zelf altijd op zoek zijn naar de grenzen van ons kunnen en elkaar uitdagen om samen de volgende stap of sprong te wagen. Be confident, feel safe. Robert Ingersoll lanceerde het concept ‘We rise by lifting others’. En dat is precies wat we willen en ook echt doen. Doing business differently. AMIS straalt door anderen te laten delen in onze kennis. Sinds jaar en dag is ons motto: voordoen, samen doen, zelf doen. Dat motiveert ons om altijd een stap voor te zijn, te helpen en daarna weer ruimte te maken voor een volgende stap vooruit.

Continue transformatie: je bereikt je doel en wilt weer verder

Voor AMIS is deze award een geweldige extra stimulans om door te gaan en de lat weer hoger te leggen. Onze relaties nemen we graag mee in dit proces. Ik zie transformatie als een voortdurend proces, eens begonnen, steeds gevoed, altijd uitdagend en met heel veel voldoening. In het begin kostte dit veel energie, nu geeft het veel energie. Het verhaal van de rups en de vlinder. Hoe mooi is dat?

The post Transformatie – Business done differently appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/transformatie/feed/ 0
Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/ http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/#comments Wed, 08 Oct 2014 05:20:26 +0000 http://technology.amis.nl/?p=32579 This article does not necessarily discuss the big themes and major stories of Oracle OpenWorld 2014. It does mention a number of facts that I discovered, overheard, observed or otherwise found out about during last week’s conference. They are not necessarily from formal Oracle sources, they have have been part of conversations on the demo [...]

The post Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) appeared first on AMIS Technology Blog.

]]>
This article does not necessarily discuss the big themes and major stories of Oracle OpenWorld 2014. It does mention a number of facts that I discovered, overheard, observed or otherwise found out about during last week’s conference. They are not necessarily from formal Oracle sources, they have have been part of conversations on the demo grounds or sessions for which no slide evidence exists. Do not base major decisions on these notes – but perhaps look out for more evidence and/or quiz your local Oracle representative.

The acronyms of last week are probably API, REST, JSON and JS – in addition of course to IaaS, PaaS and SaaS. NoSQL (Larry said it himself, it is Not Only SQL!) made some appearances of course. An important technology – Server Side JavaScript and Node.JS (a JavaScript application server). When it comes to authentication, OAuth 2.0 was the talk of the town.

Live SQL is a soon to be released feature on OTN where database developers will be able to live run SQL statements. SQL Code samples that before would have required a local database to run can now easily be tested. Blog articles can refer to LiveSQL to have their sample code tried out. Oracle Documentation is said to refer to LiveSQL for its SQL statements to have them live executable.

image

image

Oracle Rest Data Services (formerly known as Oracle APEX Listener) provides several key capabilities for the Oracle Database. REST Data Services accepts RESTful Web Service call URIs and directs them to the appropriate SQL statement or PL/SQL block. REST Data Services marshals data returned from SQL statements into JSON or .csv format. Oracle REST Data Services is a Jave EE-based provides flexibility by supporting deployments using Oracle Web Logic Server (WLS), Oracle Glassfish Server and Apache Tomcat. (see: http://www.oracle.com/technetwork/developer-tools/rest-data-services/overview/index.html)

image

Oracle SODA: Simple Oracle Data API – an API from Java, C and C# and perhaps others to more easily work with JSON documents in the Oracle Database. Working through (JSON aware) SODA promises to be much more convenient than for example having to go through the JDBC API in order to retrieve [data from]or manipulate JSON documents. The SODA API is organized like REST services – with Collection Management, CRUD operations, Query by Example on JSON documents.  (thank you Marco Gralike for this information)sodaOracleDB

APEX 5.0 will soon have a formal Beta program. The production release may take until deep into Spring 2015.

Oracle Enterprise Manager now also for managing MySQL: http://www.oracle.com/us/corporate/press/2301492 …

WebLogic 12.1.3 has been certified against JDK 8 – it is has been declared fit for use with Java VM 8.

The Oracle Cloud Marketplace is going to be tremendously important for partners such as AMIS to publish and sell extensions, integrations and add-ons to Oracle SaaS products as well as PaaS Services. Unfortunately, the marketplace is still in its infancy, as became clear on the demo grounds. We can publish and show case our products – to generate leads. However, there is not yet a mechanism to sell or monetize (subscription based) through this marketplace. The one key feature I would really expect and desire a marketplace to have.

image

The one cloud service I do not believe Oracle wants us to buy:

image

Stream Explorer is one of quite a few tools show cased by Oracle targeted at the Line of Business User (the non-technical IT consumer). This tool provides a visual, declarative, browser based wrapper around Oracle Event Processor and Oracle BAM. With Stream Explorer (whispered to be available within a few months) it is every easy to create explorations and dashboard on live [streams of]data – reporting in real time on patterns, correlations, aggregations and deviations.

image

Another Line of Business User tool is the Visual Analyzer in the BI Cloud. This cloud service allows anyone to upload data from for example Excel sheets and quickly create dashboards and reports on top of those. Currently you can upload up to 15 GB of data and once the BI Cloud fully integrates with the Database Cloud Service you can go way beyond that number. After the initial upload – which will create tables ‘under water’ – you can continue with additional uploads that will append data to these tables. Thus you can step by step create a Data Warehouse in the cloud.
Embedded image permalink

The Oracle SOA Suite Cloud Service will provide the full (or almost full) functionality of the SOA Suite (including Service Bus) as part of the Oracle PaaS platform.

image

Before this service is launched, we will first see the ICS (Integration Cloud Service) – to be launched in the next six months or so. This service is targeted at not-very-technical-users, to allow them to create fairly straightforward integrations between SaaS products.

imageimage

After creating the mapping (visually, declaratively using the Oracle Recommends TM mechanism for suggesting mappings) between the messages, the integration can be activated and invoked from the upstream system. The service offers facilities for monitoring and tracing the interactions. This image shows a failed interaction, for which some form of recovery should be performed.

image

Cloud Adapters have been and will be released for integration between SOA Suite on premise and various SaaS applications. Additionally, a Cloud Adapters SDK has been released to create additional custom adapters, not just for Cloud integration with SaaS products but also for on premise integrations. The Cloud Adapters SDK could easily have been called the [general purpose]adapters SDK. Oracle uses the Adapters SDK itself for creating the new SaaS adapters (for SalesForce, Eloqua, RightNow and others).

Oracle is working on two products in the area of API management and governance, in addition to the 12c version of the Oracle Enterprise Repository (which seems slated for Summer 2015). The next few months should see the release of API Catalog – a fairly light weight browser based tool that presents APIs (services) to potential consumers of these services. In the API Catalog UI, developers can find meta data about the services and their usage. API Catalog uses harvesting to discover services from various directions including – but not limited to – Service Bus and SOA Suite. API Catalog is targeted at the design time. At run time, the API Manager also presents information about APIs in a browser based UI. This API Manager sits on top of Service Bus and – as its name suggests – is more than just a reporter on the APIs that are available. The API Manager is also used for collecting and analyzing metrics on the usage of the API.

SOA Suite will have end-to-end REST support: in 12.2.1, Service Bus pipelines can operate directly on JSON variables – using JavaScript for JSON manipulation directly, without requiring JSON to XML conversion. In BPEL, a similar option will be available with variables of JSON type and an activity that manipulates JSON (and can if necessary for invoke actions to XML based partner links) convert between JSON and XML. Note that the Mobile Cloud Service – based on Service Bus technology – uses JSON and JavaScript as primary format and data shaping language in its v1 release.

ADF 12.2.1 (Summer 2015) will also have more REST support: the ability to publish an ADF BC Application Module as REST service.

The @adf_emg XML Data Control 1.0.0 available through JDeveloper Help -> Check for Updates.

Some recent ADF DVT features – released in ADF 12.1.3 and MAF 2.0 – were demonstrated

 

imageand some new ones as well (probably for 12.2.1?): The very cool Thematic Map Mashups:

image

And the N-box (already available in MAF) (here shown poorly visible as a mashup wit thematic map).

image

 

The new company wide user experience based on the Alta theme is documented and available for our own usage at: bit.ly/oraclealta .

image

And a picture of the Oracle UX lab at HQ in Redwood Shores – with UX VP Jeremy Ashley proudly keeping watch:

Embedded image permalink

The Oracle Developer Cloud will be extended with Coding in the Cloud: in browser editors for various types of code. JavaScript applications are explicitly targeted- with support inside the Developer Cloud for tools such as Bower, Gulp, Yeoman, Grunt and npm – on par with similar tooling in the Java EE domain. The code editors will be library aware – with syntax highlighting and code completion.

image

 

The Oracle Application Builder Cloud Service – not in the near future – is to be an in browser, visual, declarative drag and drop development environment for rich client applications. It seems to be something like the webapp alternative to MAX (the Mobile Application Accelerator for MAF apps)

image

The demo grounds had a pod for Oracle Forms. Really. Here is the proof:

image

 

I liked the animations where the cloud services are presented as the elements in the periodic table:

image

and solutions are created like molecules:

image

Is a yellow elephant in the sky similar to the pink elephant in the room?

imageimage

And the finally, the statue of the triple-limbed Oracle salesman who can shake your hands and shake you out simultaneously, just off Moscone North (and of course a spare foot for to put in your door):

image

The post Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/feed/ 0
Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/ http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/#comments Tue, 07 Oct 2014 10:18:14 +0000 http://technology.amis.nl/?p=32518 The central theme of Oracle Open World 2014 has certainly been the Cloud. Downtown San Francisco was laced with banners about Oracle and Cloud. The difference compared to last year is that now there is a huge amount of real cloud products available (or soon to be launched). Where the Oracle cloud offering till this [...]

The post Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings appeared first on AMIS Technology Blog.

]]>
The central theme of Oracle Open World 2014 has certainly been the Cloud. Downtown San Francisco was laced with banners about Oracle and Cloud. The difference compared to last year is that now there is a huge amount of real cloud products available (or soon to be launched). Where the Oracle cloud offering till this summer was limited to Database and Java (WebLogic) and some applications the current stack ranges from infrastructure till a range of SAAS offerings. The amount of cloud related announcements was really huge and somewhat overwhelming. Get things in perspectives I have drafted below a list of the concrete cloud offerings with a short description. If you want to try this in practice you are welcome to visit https://cloud.oracle.com/home (choose the platform tab to see what’s currently available).

The major theme of all Oracle cloud based solutions is REST support for all commands. So you can use either Cloud Control / Enterprise Manager to manage your cloud infrastructure or you can directly tap into the specific systems and manage them yourself. In this way you can customize the management of your infrastructure for specific services without having to use the Cloud Control.

Overview of all cloud offerings Oracle has introduced last week at Oracle Open World 2014

Oracle Managed Cloud Services (OMCS) (IAAS)

This is the basis of the complete cloud services. The aclip_image002ctual infrastructure behind the cloud offerings in the form of networking, virtual servers and security. The beg announcement on this field it Oracle’s full support for Open Stack infrastructure (http://www.oracle.com/us/corporate/press/2321794). This is based upon the OpenStack Icehouse release and enables you to use OpenStack for provisioning all of your Oracle Software Defined Networking. And also enables a self-service console for Oracle Linux and Oracle VM.

Within the Oracle Cloud Managed Services you can use the Oracle Virtual Compute Appliance to offer the basics of services within your virtual network. This is the cloud version of the On Premise Compute Appliance.

When building new infrastructure in the Oracle IAAS Cloud you can choose the location of the datacenter you want to use. This is important if you want to run your applications in a datacenter close to your major customers (US, Ireland, Australia). The underlying technology building the cloud services will make sure the components of your cloud infrastructure will be stored as closely as possible within the datacenter to ensure minimum of networking latency. Via the security keys you install on your own services you able to create a secure connection to you IAAS infrastructure or even make it a part of your local network.

Oracle Platform as Service in the Cloud (PAAS)
2014-10-07 06_37_07-Leverage Infrastructure _ Oracle Cloud

On top of the IAAS solution Oracle is currently offering a large range of Platforms As A Service (PAAS)form the cloud. This is an addition on the already available Java Cloud and Database Cloud.

 

Database Cloud (DBAAS)

The database cloud now offers the ability to seamlessly upgrade and maintain Oracle Database software as a Service. In the managed model you are able toclip_image004 create and upgrade your Oracle Database on the Datacenters of Oracle. And with the introduction of Oracle 12.1.0.2 you are also able to offer the Database In Memory option from the cloud database. The database cloud offers root access to administrators and delivers direct access to the data source in the way you are used to when using a local database (port 1521). Via the Oracle Cloud Managed Services you are also able to define a database connection via port 80 or 443 to prevent networking issues while connecting to a data source outside your company’s internal datacenter.

Next to the self-managed database you can choose for a managed Cloud Database. When you are opting for the Managed Cloud Database Service Oracle offers 5 sizes in database cloud, 5 different service levels and 4 security levels.

On the Database Cloud Service you can choose for a block storage backup or to use the Cloud Backup Service from Oracle via RMAN. At this time the Database Cloud offers versions 11c release 2 and 12c release 1.

 

Java Cloud

The Java Cloud offering, also called WebLogic Cloud, is a full version of WebLogic Server as a cloud instance. Including the usage of Coherence as a data grid within the WebLogic Server to share data and transactions between several applications without using the round-trip to the database. At this time Oracle is offering WebLogic 11c and 12c as a cloud service. Within the cloud dashboard you are able to create and scale your Java cloud service as you like (scale up and scale out).

Security cloud Services

Oracle has made security a high priority within the cloud services offering. This is essential for the complete cloud offering. The the security cloud service offers firewall, intrusion detection and anti-virus to protect the system from treats from outside the infrastructure and prevent systems being attacked by systems within the cloud infrastructure. This offering enables you to configure your cloud system to be compliant with a lot of regulatory frameworks (http://www.oracle.com/us/media1/service-cloud-security-overview-2030360.pdf)

Developer Cloud

New announcement is the developer cloud is a new offering consisting of tools for software repository, wiki, issue / task tracking and build engine. The developer cloud will be released in the upcoming moth. A trial version is already available. According to my information the Developer Cloud is free together with the Java Cloud.  With thclip_image006e developer cloud you are able to create a GIT repository (or multiple) and invite your team to participate. You can connect your own IDE (Eclipse, JDeveloper etc.) to this repository and work just as you were used to work. The developer cloud offers an issue tracking system based upon the schema of Bugzilla with an integrated interface and REST interfaces to create and tasks from your own IDE. The build engine in the developer cloud is based upon Mave3 and Hudson. And finally you can use a wiki in the developer cloud to enrich your documentation. The developer cloud is aimed on working in agile projects and supports easy and fast review, collaboration and quick integration. The developer cloud offers to create and use templates. This enables you to create a template of a specific type of project and use this as a basis for following similar project while copying a pre format setup of the source repository, build engine and wiki.

 

Integration Cloud (SOA / Service Bus )

This service enables the SOA and OSB users to leverage the advantages of integration with Service Bus and SOA and the scalability and availability of cloud systems. This product is announced on Open World and it looks like it is being launched introduced in the upcoming months. Before this service is launched, we will first see the ICS (Integration Cloud Service) – to be launched in the next six months or so. This service is targeted at not-very-technical-users, to allow them to create fairly straightforward integrations between SaaS products. A very interesting part of this is the Cloud Adapter SDK. Integration Cloud Services (ICS) offers a lot of new SaaS adapters to integrate with SaaS applications like SalesForce for example. The cloud adapters are built in the Cloud Adapter SDK and written in Java. So you are able to create your own adapter an share this adapter with your users. http://www.oracle.com/technetwork/middleware/adapters/documentation/index.html

Process cloud

Another new service is the Process Cloud. This is the cloud implementation of BPM with the goal of offering a simplified and comprehensive way of modeling and executing your processes. The goal is to migrate the BPM creation activities from the developer to the business analyst. The process cloud is being launched soon. Examples are available here : https://cloud.oracle.com/process

Analytics Cloud / BI Cloud

This is the Business Intelligence offering as a cloud service. This service is being made available as a separate offering and as an BI Engine on other Oracle applications like Oracle Eauola and Oracle RightNow. (https://cloud.oracle.com/business_intelligence).

Mobile Cloud and Mobile Application Accelerator (MAX)

Oracle Mobile cloud is an extensive way to make your own services available as a mobile backend. The mobile could offers services to create data providers within for your mobile developer without bothering them with the complexity of your enterprise backend. Including shielding the security of your connection from your mobile developers. The mobile cloud offers several features for reporting and analytics such as usage statistics and engagement. This service will probably be launched in a few months (https://cloud.oracle.com/mobile) . A second interesting announcement was the introduction of MAX ( Mobile Application Accelerator). The Oracle Mobile Application Accelerator feature allows users with no coding experience to rapidly and intuitively produce mobile applications. This feature is only announced and it is not clear when it will be available for usage.

 

Big Data Cloud

The Big Data Cloud offers you the ability to store and analyze your big data as a service. This Big Data cloud is based on Hadoop. The cloud service offers fully serviced and elastic capabilities. The advantage of this platform is that it is able to store petabytes of data and enables you to connect to your local and on premise systems.

 

Oracle Documents Cloud

The next-gen cloud-based file sharing and collaboration solution. Built for the enterprise with robust security, application integration and support for on-premise ECM integration.

Software as a Service SAAS

And finally Oracle applications: Social, Finance, HCM, Logistics, Marketing..etc. These are all available as cloud service. This makes Oracle form this standpoint the biggest SAAS provider at this moment (according to Larry Ellison).

 

This article is based upon the findings during my visit to Open World 2014. I cannot assure the list is complete and I will add more information or correct as new offerings are introduced. And please share your feedback below.

The post Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/feed/ 2
Automatic error handling in AngularJS http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/ http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/#comments Mon, 06 Oct 2014 10:00:13 +0000 http://technology.amis.nl/?p=32453 In demos and tutorials we only care about the happy-flow of our applications. That is ok, because we only run that code in our own little predictable environment and leaving everything else out makes any framework look nice and easy. Often in blog posts “error handling and such is left as an exercise to the reader” [...]

The post Automatic error handling in AngularJS appeared first on AMIS Technology Blog.

]]>
In demos and tutorials we only care about the happy-flow of our applications. That is ok, because we only run that code in our own little predictable environment and leaving everything else out makes any framework look nice and easy. Often in blog posts “error handling and such is left as an exercise to the reader” (which of course is an exercise nobody needs). A problem with good error handling code is that it clutters your “happy-flow code”, which then becomes harder to read, and is quite a lot of work to get right. Wouldn’t it be great if we could just write our happy code and get user friendly error messages for free? Is it possible to have some kind of automatic error handling in AngularJS?

The AngularJS project I worked on recently already had a component in place to show good-looking error messages to the user, all in accordance with their corporate identity and UX/UI design (comparable to toastr). That component didn’t do very much without having actual error messages to show, but being a lazy developer (who isn’t?) I did not like the prospect of having to go through all our code and add handling code all over the place. So I started looking for a super easy, automatic, generic, pragmatic, intelligent, lazy solution.

$exceptionHandler

A seemingly obvious thing to do is to replace the built-in $exceptionHandler service to catch any uncaught Error, extract the message and send that to the error messages component. I was happy with that solution for about 2 seconds, until I realised it had two obvious flaws:

  1. The error messages it produced were “not really user friendly”
  2. A lot of errors never get to the $exceptionHandler!

Flaw 1: Error messages should ideally provide three pieces of information to the user: what went wrong, what was the application trying to do at that time and what can the user do to fix it (if possible)? For example, the message: “An unknown error occurred at the server” doesn’t say much. It would be better to say: “Unable to get the list of documents. An unknown error occurred at the server. Please try again in a few minutes“. With the $exceptionHandler we get a message that says “what went wrong”, but all context is missing (actually, we get a stack-trace, but that is not something an ordinary user is interested in)

Flaw 2: Most of the more interesting operations in data-intensive web applications are asynchronous, including all HTTP calls to the server. In AngularJS asynchronous operations work with promises. With promises errors are not thrown and caught. You need to attach callback functions that handle errors (for more information on this mechanism read this).

OK, so that didn’t work out. Let’s take a step back and first implement good error messages manually. Look at the companion page for demos of all scenarios.

The hard way

In our case the manual error handling has to be done in the controller, because we don’t want the services to have any knowledge of the error-messages component (especially in case of built-in or third-party services). So what does that look like? Say, we have the following happy-flow code:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService) {

    $scope.loadAdditionalData = function () {
      someService.loadIt().then(function (data) {
        $scope.data = data;
      });
    };

  });

(ExampleController without error handling)

We want to:

  1. Catch exceptions
  2. Catch asynchronous errors
  3. Provide a user-friendly error message to the user including meaningful context.

We get something like this:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService, showErrorMessage) {

    $scope.loadAdditionalData = function () {

      var context = 'load additional data';

      try {

        someService.loadIt()
          .then(function (data) {
            $scope.data = data;
          })
          .catch(function (err) {
            // Catch promise rejections (e.g. problems with HTTP call)
            showErrorMessage(err, context);
          });

      catch (err) {
      	// Problems in our loadIt() synchronous code.
      	showErrorMessage(err, context);
      }
    };

  });

(ExampleController with error handling)

As you can see, we now have more error handling code than “happy code”, but we do have all bases covered (assuming we have a slightly intelligent showErrorMessage service that extracts error messages from Errors and uses the context for better messages, etc). So how do we go from here? We could put the error handling code in our service to unclutter the controller, but that just moves the problem to a different place, it doesn’t solve anything. Besides, some services are built-in or third-party, we cannot change those. So we have to do something else. Let’s start by putting the boilerplate in a separate service.

Step 1: Remove boilerplate

The first step is to take all this boilerplate code, put it in a service and handle all error cases automatically with one call. So we need a service (errorHandler) that can do the following:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService, errorHandler) {

    $scope.loadAdditionalData = function () {

      // The method [errorhandler.call(method, self, context, args...)] handles all error cases
      // and returns whatever the method returns.
      errorHandler.call(someService.loadIt, someService, 'load additional data')
        .then(function (data) {
          $scope.data = data;
        });

    };

  });

(ExampleController with less boilerplate)

This removes a lot of boilerplate. It doesn’t do much for readability and we still need to provide the context (‘load additional data’) everywhere we use any service, but it is a start. Look at the companion page for a working demo.

Step 2: Decorate your services

The next step is to completely remove all boilerplate and return to our “happy code” (the first code fragment). How do we do that? AngularJS provides a way to decorate services with your own code (using: $provide.decorator()). We can use that to automatically wrap all function-calls in an errorHandler.call call. Our complete example code now looks like this (including the someService):

angular.module('ExampleModule', ['OurErrorHandlerModule'])

  // Our [someService] does a simple HTTP call
  .factory('someService', function ($http) {
    
    // The code is simple, but a lot can go wrong here...
    function loadIt() {
      return $http.get('somefile.json')
        .then(function (result) {
          return result.data;
        });
    }

    // We can provide the context inside the service if it is our own service, it serves as documentation as well,
    // you can also provide the context seperately in a .run(...) block. This is the only extra thing we have to do
    // for our services.
    loadIt.description = 'load additional data';

    // The actual service:
    return {
      loadIt: loadIt
    }
  })

  // Decorate the service. Because we can do this outside of the service, we can also use this for built-in or third-party services.
  .config(function (errorHandlerProvider, $provide) {
    errorHandlerProvider.decorate($provide, ['someService']);
  })

  // ExampleController is simple again... but this time with complete error handling.
  .controller('ExampleController', function ($scope, someService) {

    $scope.loadAdditionalData = function () {
      someService.loadIt()
        .then(function (data) {
          $scope.data = data;
        });
    };

  });

(Example code using the complete errorHandler service)

The source code of this errorHandler service is available in this GitHub repository. As you see, the only step we need to take for complete error handling is the .config(…) block above. If you want to provide extra context for the user, you can simply provide a description on your functions and voila, you’re done. For a demo and more information you can look at the sourcecode and the demo page.

PS: Zones

In the future https://github.com/btford/zone.js/ might just provide a better way (or at least way cooler) to get a context for your messages (already available in Dart: https://www.dartlang.org/articles/zones/).

The post Automatic error handling in AngularJS appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/feed/ 0
Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/ http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/#comments Sun, 05 Oct 2014 11:57:40 +0000 http://technology.amis.nl/?p=32481 Oracle OpenWorld 2014 is over. Just under a week, full to the brim with information, events, people, energy, plans, hopes and expectations. I have learned many, many things. Small things, important facts, huge insights and many great people. In this article, I will attempt to sum up the largest themes of the conference as I [...]

The post Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions appeared first on AMIS Technology Blog.

]]>
image

Oracle OpenWorld 2014 is over. Just under a week, full to the brim with information, events, people, energy, plans, hopes and expectations. I have learned many, many things. Small things, important facts, huge insights and many great people. In this article, I will attempt to sum up the largest themes of the conference as I have interpreted them. In subsequent publications, I will focus on some of them as well as discuss less grand but equally interesting findings.

Note: my insights are derived from keynote sessions, press releases, general sessiteons and other conference sessions, discussions in the hall way etc. However, they are my personal interpretation and a safe harbor statement should be in order: don’t take my word for anything – use my comments as a lead to start doing your own explorations.

What I have learned at Oracle OpenWorld 2014

Oracle is working very hard to roll out an extensive set of PaaS services. This concerted effort takes precedence over virtually anything else. New functionality in any platform product is developed first for the cloud and only then for on-premises application. Only few of these services are fully available today – per direct, to anyone, according to well defined conditions. However, many will be made available in the near future – say the next six months.

image

The availability of Oracle’s PaaS services will have the potential of bringing the Oracle Platform within reach (again) of smaller and midsize organizations that currently cannot afford the on-prem licenses. Without substantial investment or long term commitment, it should be possible for the Oracle platform to be flexibly entered, and left as well.

The fact that Oracle’s SaaS products – a very substantial catalog these days with over 20k customers, thanks to a large degree to many recent acquisitions – run on Oracle’s PaaS services and are explicitly designed to be customized, extended and integrated with using these PaaS technologies creates a lot of opportunities for partners (such as AMIS). For example through the Oracle Cloud Marketplace, partners can offer reusable extensions and integrations that are deployed and run on the Oracle PaaS environment, integrating with the customer’s SaaS instance. Note: 19 out of the 20 largest SaaS products run on the Oracle platform, Workdays being the exception.

The Marketing Cloud is serious business at Oracle, claiming to be the largest player in this space. The new Data as a Service fits into this area (a new service that makes marketing data available from countless sources, based on the BlueKai acquisition), as does the announcement of the integration of Box.com in the marketing cloud: Box’s content collaboration platform, which allows marketers to make assets available to designers and other stakeholders, will seamlessly mingle with Oracle’s Marketing Cloud. The integration will allow Marketing Cloud customers to develop content with tools such as Microsoft Office products and PDFs, and then instantly convert them into HTML5. Additionally, the integration will enable folders in Box to automatically sync with Marketing Cloud’s content store, making them available for campaign usage on Oracle’s cross-channel marketing platform.

Longer term, Oracle strives for Private and Public Cloud parity: the same facilities and functionality is offered in the cloud and on prem. The same technology stack is used for implementing and administering the cloud and on prem environments. The same components can be deployed on the PaaS services as on the on prem platform. Eventually, we will be able to move deployed applications from on premises to cloud and vice versa. Beyond that, complete environments – first shutdown and later on even running, live environments – can be moved between the local private cloud and the remote cloud environment.

image

This is potentially an important edge Oracle’s PaaS cloud will have over competitors: it offers the same platform on premises as in the cloud and allows therefore hybrid topologies with mix and mash between environments. Even when on prem is desirable, yet a new environment cannot be provisioned very rapidly, a project may start out in the cloud, then seamlessly move to on prem when the provisioning is complete.

Some of the more recently acquired  SaaS offerings from Oracle will soon be migrated to ADF: Right Now (ServiceCloud), Taleo and CPQ (Configure, Price , Quota – aka Big Machines). This is an important boost for ADF and its continued importance to Oracle as its enterprise development framework.

Oracle Social Network

One of the first cloud services ever offered by Oracle was the Oracle Social Network. This Facebook-like facility- targeted at the enterprise environment – has been available with all SaaS offerings from Oracle. It offers the option to co-workers to engage in ‘social conversations’ – threads around common activities, cases or objectives. A conversation can include business objects – such as orders, customers, projects or general ledger entries – and documents (integration with the Document Cloud Service). The conversation can be accessed from the context of the business object – and vice versa. One organization that is using this Social Network avidly is Oracle itself.

In the very near future, Oracle is opening up this Social Network: partners creating extensions to SaaS applications and (probably) anyone creating and deploying applications on the Oracle PaaS can integrate with the Social Network and can expose their own business objects as objects in conversations. If I understand correctly, it will be possible to sign up for the Social Network for customers who to not work with any of the SaaS offerings from Oracle.

OpenStack

Oracle is – still somewhat tentatively perhaps – embracing OpenStack. Both with Oracle Linux and Oracle Solaris it offers a full distribution of OpenStack. For example: the combination of OpenStack and Oracle Solaris has been engineered for private cloud deployments, providing a secure, reliable, and scalable platform for agile application provisioning and self-service virtual environments. The Oracle OpenStack for Oracle Linux distribution allows users to control Oracle Linux and Oracle VM through OpenStack in production environments (Oracle OpenStack for Oracle Linux is available as part of Oracle Linux Premier Support and Oracle VM Premier Support offerings at no additional cost; Oracle OpenStack for Oracle Linux is available as a free download from the Oracle Public Yum Server and Unbreakable Linux Network (ULN). An Oracle VM VirtualBox image of the product is also available on Oracle Technology Network, providing an easy way to get started with OpenStack.).

Canonical – the company behind Ubuntu – will support Ubuntu as a guest OS on Oracle Linux OpenStack, and Oracle will support Oracle Linux as a guest OS on Ubuntu OpenStack. Canonical will test Oracle Linux as a guest OS in its OpenStack Interoperability Lab (OIL) program.

Oracle Virtual Networking now also supports OpenStack. The Oracle Virtual Networking OpenStack Neutron plug-in, announced at Oracle OpenWorld, is based on the OpenStack Icehouse release and enables all of Oracle’s software-defined networking (SDN) and network fabric capabilities to be created, provisioned and managed by the OpenStack framework.

Software in Silicon

Oracle has embarked on “Software in Silicon” – a program to achieve 5-10 times performance improvement for core database operations by baking some database specific operations into the CPU itself. For example: the Oracle NUMBER type is a software implementation on top of every platform specific’s native types. When NUMBER is embedded in the processor, enormous performance gains can be achieved. Additionally, the lowest level filtering operations can be performed “in silicon” (similar at a very different level to the smart scan running on the storage cells in Exadata). At that same level, in line level decompression allows much more data to be placed in memory and still be accessible at very high speed levels. More database specific implementation aspects can be brought into silicon – starting with Sparc M7 processor (is due to launch sometime next year) and potentially offered to/by other vendors (such as Intel) as well.

image

Big Data

Even though Big Data (and even more so last year’s big thema of IoT) was a somewhat less pervasive theme at the conference, Oracle is certainly making important steps towards making Big Data more accessible to organizations in a pragmatic way. Through Big Data SQL, non-relational data on an Hadoop HDFS can be accessed from within an Oracle Database using standard Oracle SQL. To developers and tools alike – many of whom are pretty fluent in SQL but much less so in the technologies used to access data on Hadoop – this makes big data very accessible. When Big Data SQL is leveraged with the Oracle Big Data Appliance, the BDA will employ smart scan – a clever form of preprocessing of data on the Hadoop cluster which ensures that far less data – and only the relevant bits – are moved from the Big Data world to the memory and CPUs doing the Oracle Database SQL processing. This mechanism is similar to the smart scan facility in Exadata Storage Cells. Other advances around Big Data are Big Data Discovery – an Endeca based in-browser visualizer of meaningful data patterns – and the Analytics Cloud with the Oracle BI Service. These services make it very easy to make sense of Big Data and figure out the ways in which meaningful reporting and insight-extraction can be set up on top of Big Data gathering.

Line of Business User or: the citizen developer

In many sessions, Oracle staff discussed the Line of Business (LoB) user who has to be empowered. Gartner speaks about the citizen developer – and Oracle means about the same thing. The idea is that with no or only limited intervention or preparation by IT staff, business users can do meaningful things themselves, such as get insights from (big) data, configure simple dashboards, create straightforward data entry and data explorations apps for mobile devices etc. Who can work with Excel should be able to do many useful things in the world of Oracle (and Oracle Cloud) as well. Some tangible examples for products (in the making) under this theme include StreamExplorer – for real time data analysis -, MAX – the mobile application accelerator-, Big Data Discoverer, BI Cloud Service and even the Process and Integration Cloud Services.

User Experience

Having already made big strides in the user experience of SaaS applications such as Sales Cloud and HCM Cloud, Oracle is next taking an enormous step in the user experience with virtually all of its products. At the conference, the Alta User Interface (and user experience) as launched – to be applied across all SaaS applications as well as all Cloud User Interfaces for the PaaS services. Additionally, this user experience will permeate all on premise products as well (or at least the browser based ones). Alta is supported by Oracle’s development tools and frameworks for mobile, cloud, and web-based applications – such as ADF en MAF – to allow anyone building custom applications with Oracle technology to create a similar user experience. The Oracle Alta UI system is based on four design principles:

  • Design for mobile first
  • Keep layouts simple and uncluttered
  • Provide a clear information hierarchy
  • Engage users with more visual content

Oracle Alta UI console

Important themes in the area of User Experience are context (as in Gartner’s context aware computing) and capture. The form refers to how a user experience should be enriched based on everything the system knows about the user and her (current) circumstances. Do not make the user enter data or make choices that can already be arrived or at least reasonably guessed at. Capture refers to the stage before data is handed over to ‘the system’ in a form that the system knows how to process. Data that is ‘out there’ or that lives in the heads of human actors have to transferred and converted into the application. A process that is typically time consuming, cumbersome error prone and interruptive. Any improvements in this stage make life a lot easier for users and have the potential of dramatically improving speed and accuracy. Oracle (through the Applications User Experiences team) is making very interesting steps to create a much better capture stage. Apart from mind reading (that is probably the next phase), any means of capturing data is investigated and explored – including wearables, beacons, OCR, speech recognition etc.

Mobile

Oracle’s Mobile story is becoming quite clear. All SaaS applications have (or very soon will have) mobile apps to provide access to quick “glance and scan” activities – relevant insights and alerts, straightforward decisions and manipulations. These mobile applications are or will be created using Oracle’s own Mobile Application Framework (MAF), using the Alta user experience theme. MAF is available to anyone who wants to create mobile apps. MAF allows cross platform (iOS, Android and soon Windows as well) development of native applications that interact with device features (GPS, phone, camera, contacts, email, etc), can use local database storage and run a local, on device JVM. Development with MAF is more declarative than native ObjectiveC or Android app creation. Many higher level components – as well as a tailored IDE – are available for productive development. Especially noteworthy are the rich data visualizations available out of the box with MAF. The Mobile Application Accelerator (MAX), a browser based tool that allows very visual and declarative development of fairly simple, straightforward mobile applications, helps ‘citizen developers’ create MAF apps – that could subsequently be refined and extended by (real) developers.

image

Oracle recognizes that most developers will probably not use MAF for their app-development. However, they still need access to data services and would be served well by a rich backend that takes care of common concerns such as cross platform push notification, user management and access control, data enrichment and caching of (lookup) data, management of cross device personal cloud and long running conversations and more. The perhaps most important new PaaS cloud service to be launched by Oracle is the Mobile Cloud Service. This service provides the capabilities mentioned above to back any number of mobile applications with shared (mobile) services as well as controlled access to SaaS APIs and on premises enterprise systems. The Mobile Cloud Service is as an end-to-end infrastructure for building apps connected to Oracle’s software portfolio and third party SaaS and on prem applications.

With MCS – APIs are composed as mash-ups of other APIs and of services exposed by SaaS products and on premise enterprise systems. These APIs – typically published as REST-services – can be consumed by subscribed apps. Oracle is first targeting mobile apps with the MCS, but any application or integration platform requiring access to REST-services could leverage the MCS. MCS offers many other capabilities in addition to the creation and management of these APIs, including identity and access management, caching, push notifications (interacting with Apple’s and Google’s push notification services), analytics on usage, monitoring. With MCS – enterprises can be mobile enabled with very limited effort, investment and risk. No new users access the enterprise, no additional load from potentially thousands or more devices has to be catered for, no extreme availability constraints have to be put on the backend systems, no outsider developers need access to various systems etc. MCS can turn out to be a big mobile enabler.

Multidensity and Density

A term used in several sessions was density – for example on the PaaS platform. This basically means: do more with less IaaS resources (such as memory, CPU and even disk). It turns out that for example class loading on JVMs can be done a lot smarter, with far more reuse instead of duplication of objects. In order for Oracle to create a truly scalable, lean (affordable) cloud environment, it is important that PaaS components use IaaS services and other PaaS components in a sustainable way. The work Oracle is doing for example on WebLogic will benefit organizations creating a Private Cloud based on Oracle’s PaaS platform. Note that the Oracle Database 12c multitenant database architecture has in part a very similar goal:reduce over all resource consumption by sharing the resources across multiple tenants (pluggable databases). It seems likely that the work being done by the WebLogic team will benefit not just the Oracle public PaaS Cloud and the Exalogic private cloud, but the core Hotspot JVM as well. The initial Note: multitenancy is an important theme for the core Java EE 8 as well as Java SE 9 platforms.

Multitenancy will be an important feature (or even architecture) for WebLogic in the near future. It will subsequently also become engrained in other PaaS components, such as SOA Suite and presumably WebCenter Content.

Security

As Larry Ellison mentioned in both his keynote sessions, the new job at Oracle is SECURITY. It is of course crucial for the Oracle Public Cloud to be very secure. Enticing organizations to entrust their data and business process execution to the Oracle Cloud will not be easy. Any security breach or even a whiff of suspicion of lack of security will make that task virtually impossible. Security at every level – between Oracle and the multiple tenants as well as at the level of all users within a tenants realm (coordinated by the tenant himself) has to absolute. The attention for security measures at every level in the stack – from software in silicon to anti-social-engineering – will be large. And again, this focus in the public cloud will improve the platform and as a result help users of the same stack in their private cloud as well. When Oracle fixes things at their PaaS Public Cloud level in the same stack used on premises, the solutions are probably good enough for most on premise use cases too.

Oracle and the Community – the future of the past

Oracle is not wildly popular with the young crowds. At university, it does not seem as if Oracle technology is a prime topic on the curriculum (with the possible exception of Java). The average age at Oracle user group gatherings in many countries is still increasing. The influx of young Oracle developers and DBAs is not large. The push from below at enterprises to further invest in Oracle technology may as a result not be overwhelming. Additionally, this ‘legacy’ community, while loyal, is not always as forward looking as it probably should be. It is not uncommon for veteran Oracle developers to create code – SQL, PL/SQL – that is impressively backward compatible with milestone releases like Oracle7. Think about that for a moment: Oracle has invested long years and large amounts of money to advance the database from where it stood in the mid-90s to where it is today. And organizations have to pay licenses that reflect the value of all these functional and non-functional enhancements. Yet because of lack of up to date knowledge on the part of administrators and developers, much of this potential remains untapped. The perceived value of the investments in the Oracle platform could substantially be lowered because of this – threatening the longer term adoption of Oracle’s technology at an organization.

At the very highest echelons within Oracle – Thomas Kurian, Andy Mendelsohn to name but two important crusader – the above has been recognized and identified as a priority. Steven Feuerstein (PL/SQL community leader and Oracle Database development evangelist) has been hired and tasked with both increasing the popularity of Oracle outside the current community as well as improving the usage of modern facilities and features in the Oracle platform by existing members of the community. Steven is putting together a team to assist him in that challenge, as well as reaching out to the community to support him. Watch for terms such as YesSQL and LiveSQL as well as new ones yet to be developed to learn more about this initiative.

Hardware

Some new hardware announcements at OOW 2014: Zero Data Loss Recovery appliance (the world’s first and only engineered system designed specifically for Oracle Database protection), Exalytics X4-4 (with up to 3TB of memory) leveraging the Oracle Database 12c In Memory option (instead of TimesTen in memory database). All Flash Storage Array SAN machine: the Oracle FS1 Series Flash Storage System scales to petabytes of all-flash capacity while delivering a multitude of innovations designed to take flash technology to new extremes – getting the benefits from hard disks as well as predictable speed delivery by an all-flash-array. The still fairly new Exadata (X4-8, July) with focus on Database In Memory (12 TB DRAM together with transparent data tiering to flash and disk for less performance-critical data). No new releases of Exalogic and Virtual Compute Appliance.

Real Time

One of the frequently heard themes was ‘real time’. Information or better yet Insight (and recommended or even automated Action) in near real time. Some information is yesterday’s news even before it is tomorrow. Some conclusions have to be reached from data and events within minutes. This requires the capacity to gather the data, analyze it and present findings to human actors in near real time – seconds to minutes. And typically there is a lot of source data involved as well.

The slow factor – apart from network latency and the sheer volume of this fast data – is typically us: how to engage a human quickly enough in such a way that insight is nearly instantaneous and the requires action can be performed nearly as quickly. Oracle is working on all pieces of this puzzle – with data visualization at the human end of the chain, event processing in the second step and a variety of technologies at the data gathering beginning of the story (from physical devices – sensors, beacons) to software probes and sensors baked into applications and platform infrastructure. Here we see another type of LoB user enablement: the insight provided by the system has to be interpreted by a business user – not an IT person. Data is not good enough, and even information that still requires considerable analytical and technical skills for proper and quick interpretation will not do. The visualization has to support the LoB user in direct understanding – at least of the need to drill down further (again the glance (see the alert), scan (drill down to understand the importance and perhaps take quick, straightforward action) and commit (look into the details and embark on a more complex response action).

DevOps and BusOp

We see a meeting coming up between business and technical operations: IT operational staff – system administrators, DBAs, Middleware and infrastructure specialists – monitor in real time, using various types of technical logging to observe, analyze and resolve technical issues. At a more function, business oriented level, they will have counterparts who monitor in real time the execution of the business processes.

Disruptions at technical level may very well have consequences at the business level, and if so typically require collaboration between the two groups to resolve. Furthermore, issues in the functional execution of processes may not be visible at all at technical level. It is increasingly important for business representatives to have real time insight in such issues, even before they occur (for example by spotting trends that without action may result in thresholds being crossed). SLA – service level agreements – on both technical metrics as well as business indicators – with corresponding metrics and dashboards are becoming more and more important as longer chains and more extensive business processes are linked and automated. Additionally, with sections of these chains running on a (partly) externally managed infrastructure and platform, deriving business operational insight directly is also more important because using technical logging to indirectly derive business insight no longer be meaningful or even possible.

It seems that the DevOps movement – previously more associated with all interaction between infrastructure and platform specialists on the one hand and development teams on the other before a system is taken into production, will have a parallel in the interaction between business operations and IT operations at run time.

Common Goal, Drive and Energy

Oracle is a big place. It offers over 4200 different products, created by a large number of development teams that historically have not always worked together in very close collaboration or even communication. It is my observation that more than ever before, the teams at Oracle are now working together, brought together by a common goal – the cloud – and unified by the common user experience (Alta for short). Almost every team needs to work with other teams because it works on top of (cloud) services provided by other teams. In the world of the Oracle Cloud, there is no room for any product team to create its own incarnation of something that is offered as a generic cloud service. All of a sudden, all across the board teams are actually teaming with each other. I believe that as a result, everyone benefits. Product teams will focus more on their core added value than on generic facilities that they will now simply consume. The functionality and non-functionality of the underlying platform services will improve too, because of the early collaboration and testing that is the result of the internal consumption of these services. The common user experience also results in a feeling of joint responsibility, in addition to aligning the design activities. It seems that this grand mission of bringing Oracle to the cloud is energizing the company – now, more than in many years, there seems to be a spark back at Oracle. A belief in the mission. I liked witnessing this enthusiasm and self confidence.

Resources

Mobile

MAX: http://www.oracle.com/us/corporate/press/2313779

MAF and Mobile Security Suite – http://www.nasdaq.com/press-release/enhanced-integration-between-oracle-mobile-application-framework-and-oracle-mobile-security-suite-20140930-00886

Cloud

New and Existing PaaS Cloud Services from Oracle – https://www.oracle.com/corporate/pressrelease/cloud-portfolio-092914.html

DaaS for Marketing – https://www.oracle.com/cloud/daas.html

Solaris and IaaS plus OpenStack: https://blogs.oracle.com/markusflierl/entry/oracle_solaris_and_openstack_at

Oracle Linux and Ubuntu/OpenStack http://www.zdnet.com/oracle-linux-is-coming-to-ubuntus-openstack-cloud-7000034106/ ; Oracle OpenStack for Oracle Linux Now Generally Available – http://www.oracle.com/us/corporate/press/2298602

Alta User Experience

https://www.oracle.com/corporate/pressrelease/oracle-alta-093014.html

http://www.oracle.com/us/corporate/features/ui-design/index.html

http://www.oracle.com/webfolder/ux/middleware/alta/index.html

Big Data

http://www.informationweek.com/big-data/big-data-analytics/oracle-unveils-hadoop-data-exploration-tool/d/d-id/1316198

http://www.oracle.com/us/corporate/press/2313734

Software in Silicon

http://www.theregister.co.uk/2014/09/29/ellison_sparc_m7/

http://www.oracle.com/us/corporate/features/sparc-m7/index.html

https://blogs.oracle.com/emeapartnerhardware/entry/in_memory_query_acceleration_of

http://www.oracle.com/us/corporate/press/2317676

http://www.nasdaq.com/press-release/oracle-announces-oracle-software-in-silicon-cloud-20140930-00842

Hardware

Oracle FS1 Series Flash Storage System  https://www.oracle.com/corporate/pressrelease/fs1-flash-storage-system-092914.html

Zero Data Loss Recovery Appliance – http://www.oracle.com/us/corporate/press/2313883

Exadata: http://www.oracle.com/us/corporate/press/2244663

Analysis, Reports, Reviews

InfoTech Lead http://www.infotechlead.com/2014/09/29/oracle-openworld-2014-key-announcements-25572

ZD Net http://www.zdnet.com/oracle-speeds-up-software-portfolio-with-big-data-mobile-in-mind-7000034205/

Mark Rittman: http://www.rittmanmead.com/2014/10/news-and-updates-from-oracle-openworld-2014/

Analytics Cloud – http://www.informationweek.com/big-data/big-data-analytics/oracle-unveils-hadoop-data-exploration-tool/d/d-id/1316198

Analysts break down Oracle Cloud business model: http://siliconangle.com/blog/2014/10/01/oracles-new-business-model-is-based-on-cloud-and-converged-infrastructure-oow14/

http://www.enterpriseirregulars.com/78293/oracles-approach-makes-sense-sucks/

Diginomica – http://siliconangle.com/blog/2014/10/01/oracles-new-business-model-is-based-on-cloud-and-converged-infrastructure-oow14/

The post Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/feed/ 0
Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/ http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/#comments Fri, 03 Oct 2014 13:39:11 +0000 http://technology.amis.nl/?p=32450 Mobile applications as well as a large class of modern HTML5 web applications are built on top of an architecture with special provisions, such as RESTful services; the personal cloud, to provide a cross-device experience; push; cache; localization; scalability; and secure interaction with the enterprise back end. Gartner refers to this as the web-oriented architecture. [...]

The post Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
Mobile applications as well as a large class of modern HTML5 web applications are built on top of an architecture with special provisions, such as RESTful services; the personal cloud, to provide a cross-device experience; push; cache; localization; scalability; and secure interaction with the enterprise back end. Gartner refers to this as the web-oriented architecture. Oracle Fusion Middleware offers key products (Oracle SOA Suite, Oracle Identity Management, and Oracle API Gateway) to implement this architecture, possibly in combination with cloud services such as Oracle Mobile Cloud Service, Oracle Messaging Cloud Service, and Oracle Storage Cloud Service. This session discusses the architecture itself and what it entails.

This is the abstract for my first session at Oracle OpenWorld 2014. The slides for this session can be downloaded from the Content Catalog as well as from SlideShare: http://www.slideshare.net/lucasjellema/weband-mobileorientedarchitectureswithoraclefusionmiddlewareforxml-oow2014.

The sources for the demonstration I showed are available from GitHub: https://github.com/lucasjellema/SampleIssueTrackerAngularJSwithSOASuite12cRESTbackend.

The post Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/feed/ 0
How Fast Data Is Turned into Fast Information and Timely Action – Oracle OpenWorld 2014 http://technology.amis.nl/2014/10/03/how-fast-data-is-turned-into-fast-information-and-timely-action-oracle-openworld-2014/ http://technology.amis.nl/2014/10/03/how-fast-data-is-turned-into-fast-information-and-timely-action-oracle-openworld-2014/#comments Fri, 03 Oct 2014 13:30:42 +0000 http://technology.amis.nl/?p=32448 At Oracle OpenWorld 2014, one of my presentations was about the world of real time information – derived from real time data (streaming data, events, big data on the move or fast data for short). In my presentation, I demonstrated and explained the use of the Oracle Event Processor for processing streaming data in real [...]

The post How Fast Data Is Turned into Fast Information and Timely Action – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
At Oracle OpenWorld 2014, one of my presentations was about the world of real time information – derived from real time data (streaming data, events, big data on the move or fast data for short). In my presentation, I demonstrated and explained the use of the Oracle Event Processor for processing streaming data in real time. I also showed how OEP interacts with the SOA Suite 12c Event Delivery Network and with JMS, Web Sockets and other channels. Finally, I demonstrated how the findings of OEP can be enriched using visualizations, for example with ADF DVT data visualization components.

The slides for this presentation can be downloaded from the OOW content catalog and from SlideShare: http://www.slideshare.net/lucasjellema/how-fast-data-is-turned-into-fast-information-and-timely-action-oow-2014.

 

The source code for the demonstrations I showed in this session are available from GitHub: https://github.com/lucasjellema/soasuitehandbook/tree/master/ch16.

The post How Fast Data Is Turned into Fast Information and Timely Action – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/03/how-fast-data-is-turned-into-fast-information-and-timely-action-oracle-openworld-2014/feed/ 0
Everything That Is Really Useful in Oracle Database 12c for Application Developers – Oracle OpenWorld 2014 http://technology.amis.nl/2014/10/03/everything-that-is-really-useful-in-oracle-database-12c-for-application-developers-oracle-openworld-2014/ http://technology.amis.nl/2014/10/03/everything-that-is-really-useful-in-oracle-database-12c-for-application-developers-oracle-openworld-2014/#comments Fri, 03 Oct 2014 13:24:44 +0000 http://technology.amis.nl/?p=32446 A few days ago, I presented a session at Oracle OpenWorld 2014 about the most useful features for application developers in Oracle Database 12c (12.1.0.1 and 12.1.0.2). The main topics I demonstrated were JSON, Flashback, Temporal Validity, Match Recognize (pattern matching), In Line PL/SQL and the SQL Translation (Profiles) Framework. The slides for this session [...]

The post Everything That Is Really Useful in Oracle Database 12c for Application Developers – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
A few days ago, I presented a session at Oracle OpenWorld 2014 about the most useful features for application developers in Oracle Database 12c (12.1.0.1 and 12.1.0.2).

The main topics I demonstrated were JSON, Flashback, Temporal Validity, Match Recognize (pattern matching), In Line PL/SQL and the SQL Translation (Profiles) Framework.

The slides for this session can be downloaded from the OOW Content Catalog as well as from SlideShare: http://www.slideshare.net/lucasjellema/everything-thatisreallyusefulinoracledatabase12cforapplicationdevelopers-oow2014.

 

The sources for the scripts I used in this session are available from this GitHub repository: https://github.com/lucasjellema/OracleDatabase12c-development-demonstration.

The post Everything That Is Really Useful in Oracle Database 12c for Application Developers – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/03/everything-that-is-really-useful-in-oracle-database-12c-for-application-developers-oracle-openworld-2014/feed/ 0
FTPS with PL/SQL http://technology.amis.nl/2014/10/01/ftps-plsql/ http://technology.amis.nl/2014/10/01/ftps-plsql/#comments Wed, 01 Oct 2014 11:08:43 +0000 http://technology.amis.nl/?p=32436 Doing a FTP-job with PL/SQL is not difficult. A basic implementation of RFC 959 can be written in a few hundred lines. See for instance ORACLE-BASE, How to FTP with Oracle PL/SQL or Oracle FAQ’s But what if you want to secure your FTP transmission. Google doesn’t find any pure PL/SQL solutions, only java solutions [...]

The post FTPS with PL/SQL appeared first on AMIS Technology Blog.

]]>
Doing a FTP-job with PL/SQL is not difficult.
A basic implementation of RFC 959 can be written in a few hundred lines. See for instance ORACLE-BASE, How to FTP with Oracle PL/SQL or Oracle FAQ’s
But what if you want to secure your FTP transmission. Google doesn’t find any pure PL/SQL solutions, only java solutions with a PL/SQL wrapper.
Securing FTP transmission can be done in two ways: SFTP and FTPS.
SFTP stands for SSH File Transfer Protocol. This protocol is not based on the plain FTP protocol, implementing this in PL/SQL is not more difficult, it’s just a lot more work. You will not find anything about SFTP in this posting, maybe I will talk about that later.
FTPS stands for FTP Secure, RFC 4217 – Securing FTP with TLS. And it’s secured with the TLS protocol. Oracle has added support for this protocol to utl_tcp in version 11.2.0.2, UTP_TCP.
As with https you need a certificate (chain) of the server in a Oracle Wallet.
You have pass the path of this wallet to the utl_tcp.open_connection procedure

t_conn := utl_tcp.open_connection( p_host
, p_port
, wallet_path => p_wallet_path
, wallet_password => p_wallet_password
); -- open connection

And you tell the server that you want to secure the connection

write_cmd( t_conn, 'AUTH', 'TLS' )

If the server is OK with that, do it.

utl_tcp.secure_connection( t_conn );

That’s enough to secure the control channel of the FTP connection!

Doing the same for the data channel requires just two more commands

write_cmd( t_conn, 'PBSZ', '0' )
write_cmd( t_conn, 'PROT', 'P' )

A complete example:

declare
t_conn utl_tcp.connection;
t_blob blob;
t_clob clob;
t_reply number;
type tp_dir_listing is table of varchar2(32767) index by pls_integer;
t_dir_listing tp_dir_listing;
--
g_response varchar2(1000 char);
g_wallet_path varchar2(1000 char);
g_wallet_password varchar2(1000 char);
--
function read_reply( p_conn in out nocopy utl_tcp.connection, p_verbose boolean := true )
return number
is
t_line varchar(32767);
t_code varchar2(3 char);
begin
t_line := utl_tcp.get_line( p_conn, true );
if nvl( length( t_line ), 0 ) 0
and instr( t_tmp, '(', 1, 2 ) = 0
and instr( t_tmp, ')' ) > 0
and instr( t_tmp, ')', 1, 2 ) = 0
)
then
t_tmp := substr( t_tmp, instr( t_tmp, '(' ) + 1 );
t_tmp := substr( t_tmp, 1, instr( t_tmp, ')' ) - 1 );
else
t_tmp := translate( t_tmp, '1234567890,' || t_tmp, '1234567890,' );
end if;
t_host := substr( t_tmp, 1, instr( t_tmp, ',', 1, 4 ) - 1 );
t_host := replace( t_host, ',', '.' );
t_tmp := substr( t_tmp, instr( t_tmp, ',', 1, 4 ) + 1 );
t_port := to_number( substr( t_tmp, 1, instr( t_tmp, ',' ) - 1 ) );
t_port := t_port * 256;
t_port := t_port + to_number( substr( t_tmp, instr( t_tmp, ',' ) + 1 ) );
t_conn := utl_tcp.open_connection( t_host, t_port, wallet_path => g_wallet_path, wallet_password => g_wallet_password );
return t_conn;
end;
--
function login
( p_host varchar2
, p_usr varchar2 := null
, p_pw varchar2 := null
, p_port number := 21
, p_account varchar2 := null
, p_wallet_path varchar2 := null
, p_wallet_password varchar2 := null
)
return utl_tcp.connection
is
t_reply number;
t_conn utl_tcp.connection;
t_usr varchar2(1000 char);
t_pw varchar2(1000 char);
t_acc varchar2(1000 char);
begin
t_conn := utl_tcp.open_connection( p_host, p_port, wallet_path => p_wallet_path, wallet_password => p_wallet_password ); -- open connection
case read_reply( t_conn )
when 120
then
raise_application_error( -20001, 'FTP server not ready: ' || g_response, true );
when 421
then
raise_application_error( -20001, 'FTP server not available: ' || g_response, true );
else
null;
end case;
if write_cmd( t_conn, 'AUTH', 'TLS' ) = 234
then
utl_tcp.secure_connection( t_conn );
if write_cmd( t_conn, 'PBSZ', '0' ) = 200
and write_cmd( t_conn, 'PROT', 'P' ) = 200
then
g_wallet_path := p_wallet_path;
g_wallet_password := p_wallet_password;
end if;
end if;
if p_usr is null
then
t_usr := 'anonymous';
t_pw := 'anonymous@mysite.com';
t_acc := '*********';
else
t_usr := p_usr;
t_pw := p_pw;
t_acc := p_account;
end if;
t_reply := write_cmd( t_conn, 'USER', t_usr );
if t_reply = 331
then
t_reply := write_cmd( t_conn, 'PASS', t_pw );
end if;
if t_reply = 332
then
t_reply := write_cmd( t_conn, 'ACCT', t_acc );
end if;
if t_reply not in ( 230, 202 )
then
raise_application_error( -20001, 'Could not log in: ' || g_response, true );
end if;
return t_conn;
end;
--
procedure get_file
( p_conn in out nocopy utl_tcp.connection
, p_path in varchar2
, p_file in out blob
)
is
t_reply number;
t_buf raw(32767);
t_cnt pls_integer;
t_conn utl_tcp.connection;
begin
t_reply := write_cmd( p_conn, 'TYPE', 'I' );
t_conn := open_data_channel( p_conn );
t_reply := write_cmd( p_conn, 'RETR', p_path );
if t_reply in ( 125, 150 )
then
if g_wallet_path is not null
then
utl_tcp.secure_connection( t_conn );
end if;
dbms_lob.createtemporary( p_file, true );
begin
loop
t_cnt := utl_tcp.read_raw( t_conn, t_buf, 32767 );
dbms_lob.writeappend( p_file, t_cnt, t_buf );
end loop;
exception
when utl_tcp.end_of_input
then
null;
end;
utl_tcp.close_connection( t_conn );
t_reply := read_reply( p_conn );
end if;
if t_reply not in ( 226, 250 )
then
raise_application_error( -20001, 'Could not retrieve file: ' || g_response, true );
end if;
end;
--
procedure get_file
( p_conn in out nocopy utl_tcp.connection
, p_path in varchar2
, p_file in out clob
)
is
t_reply number;
t_buf varchar2(32767);
t_cnt pls_integer;
t_conn utl_tcp.connection;
begin
t_reply := write_cmd( p_conn, 'TYPE', 'A' );
t_conn := open_data_channel( p_conn );
t_reply := write_cmd( p_conn, 'RETR', p_path );
if t_reply in ( 125, 150 )
then
if g_wallet_path is not null
then
utl_tcp.secure_connection( t_conn );
end if;
dbms_lob.createtemporary( p_file, true );
begin
loop
t_buf := utl_i18n.raw_to_char( utl_tcp.get_raw( t_conn, 32767 ), 'US7ASCII' );
dbms_lob.writeappend( p_file, length( t_buf ), t_buf );
end loop;
exception
when utl_tcp.end_of_input
then
null;
end;
utl_tcp.close_connection( t_conn );
t_reply := read_reply( p_conn );
end if;
if t_reply not in ( 226, 250 )
then
raise_application_error( -20001, 'Could not retrieve file: ' || g_response, true );
end if;
end;
--
procedure nlst
( p_conn in out nocopy utl_tcp.connection
, p_dir_listing in out tp_dir_listing
, p_path in varchar2 := null
)
is
t_reply number;
t_conn utl_tcp.connection;
begin
p_dir_listing.delete;
t_reply := write_cmd( p_conn, 'TYPE', 'A' );
t_conn := open_data_channel( p_conn );
t_reply := write_cmd( p_conn, 'NLST', p_path );
if t_reply in ( 125, 150 )
then
if g_wallet_path is not null
then
utl_tcp.secure_connection( t_conn );
end if;
begin
loop
p_dir_listing( p_dir_listing.count + 1 ) := utl_tcp.get_line( t_conn, true );
end loop;
exception
when utl_tcp.end_of_input
then
null;
end;
utl_tcp.close_connection( t_conn );
t_reply := read_reply( p_conn );
end if;
if t_reply != 226
then
raise_application_error( -20001, 'Could not get NLST: ' || g_response, true );
end if;
end;
--
begin
t_conn := login( 'localhost', p_wallet_path => 'file:C:\oracle\wallet', p_wallet_password => 'amis.rules.again' );
-- get_file( t_conn, '/my_dir/my_ascii_file.txt', t_clob );
nlst( t_conn, t_dir_listing, '*.txt' );
t_reply := write_cmd( t_conn, 'QUIT' );
utl_tcp.close_connection( t_conn );
end;
/

You will find the same example here

The post FTPS with PL/SQL appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/01/ftps-plsql/feed/ 0