Feed aggregator

Getting ready for OpenWorld

Andrews Consulting - Fri, 2011-09-30 14:19
OpenWorld begins this coming Sunday and, as usual, I will be there from start to finish. Oracle never telegraphs what is coming, especially what CEO Larry Ellison plans to address in his annual presentation. Recent years have seen Ellison personally focus on database appliances, especially since the Sun acquisition and that will almost certainly continue […]
Categories: APPS Blogs

Nice Introduction to WLDF Watch/Notifications

Ramkumar Menon - Fri, 2011-09-30 13:00

James Bayer has a simple hands-on video on setting up WLDF watches and notifications in WLS.

WLDF enables you to dump diagnostic images or send out JMX/Email notifications when any metric of your interest crosses a configured threshold. There's more to it, but here is a good start that will catch your interest!

http://www.youtube.com/watch?v=QNtON5dcRTcv

Nice Introduction to WLDF Watch/Notifications

Ramkumar Menon - Fri, 2011-09-30 13:00

James Bayer has a simple hands-on video on setting up WLDF watches and notifications in WLS.

WLDF enables you to dump diagnostic images or send out JMX/Email notifications when any metric of your interest crosses a configured threshold. There's more to it, but here is a good start that will catch your interest!

http://www.youtube.com/watch?v=QNtON5dcRTcv

Interesting Error

Jeff Hunter - Wed, 2011-09-28 17:11
We just upgraded one of our 10.2.0.3 dbs to 11.2.0.2 plus some patches.  Today an interesting ORA-07445 was thrown to the alert.log: ORA-07445: exception encountered: core dump [__intel_new_memcpy()+382] [SIGILL] [ADDR:0x3FE5CAE] [PC:0x3FE5CAE] [Illegal operand] [] Searching metalink didn't get us anywhere, so we opened a TAR (or iTar, or SR, or ServReq, or whatever the heck they are calling

Long time no post

Marcelo Ochoa - Mon, 2011-09-26 08:41

I found that my last post was on Sep. 14 2010, that's too bad.
The reason of that is the startup called Scotas I worked on that almost since December of 2010 to engineering a next level of Oracle and Lucene project integration, this is by adding the Solr stack.
Its a natural evolution, Solr provides a lot of common functionality working on top of  Lucene required for the enterprise level solution.
But the integration required a set of implementation challenges to work, once of them is the implementation of long live shared server process running in Java and which implements a new dedicated HTTP listener working as an Oracle slave process, I will explain this topic on another technical post.
Another additions included in a set of products are the push technology spread on the integration with Solr running externally, ElasticSearch, Cassandra and HBase.
Behind this technology we extended the idea of Oracle/Solr integration, the Oracle ODCI API,. which enabled a NRT (Near Real Time) synchronization of the enterprise data with NoSQL layer for example.
Near Real Time means that once you commit the changes on the RDBMS layer thy are propagated automatically to the other side practically with 0 delay, and for the two way replicator such as Solr PC and ElasticSearch deletions are in real-time avoiding the false positive hits of deleted rows.
Near Real Time synchronization is declarative, no programming effort is required and allows multiples columns of one table, or multiples columns of many tables connected by a foreign key.
Well next week is the OOW 2011, I'll Be there and I Hope You Will, Too and for anybody that are coming to the event and are interested on that technology we could meet there, just drop me an email to mochoa-at-scotas.com

EXISTS

Rob van Wijk - Sun, 2011-09-25 05:03
Most of us know the SQL keyword EXISTS as the condition with a subquery you use in a WHERE clause. But if you look at the documentation of EXISTS, you'll see that it says nothing about just using it in a WHERE clause. It's just a sort of function that accepts a query as input and returns "TRUE if a subquery returns at least one row". The SQL language doesn't know about booleans, but it calls Rob van Wijkhttp://www.blogger.com/profile/00499478359372903250noreply@blogger.com2

Rise of the appliances?

Freek D’Hooge - Thu, 2011-09-22 02:52

Some quick thoughts.

Yesterday Oracle announced it’s first database appliance for th SMB market.
Before this, it had already its Exadata and Exalogic appliances for the big environments.
During the presentation Oracle has also indicated that it want’s to continue delivering new appliance products and apparently is no longer interested in selling “commodity” x86 servers.

Symantec has also been busy with appliances for Netbackup.

For some time now, we have seen that the big players in the IT market are leaving their historical background and are trying to offer the complete stack from software over switches to storage. Is this offering of appliances the next step?
Will we see more and more applications offered as appliances?

If so, what will this mean for the independent system integrators?

Also, as these appliances seems to use their own dedicated storage, what does this mean for the SAN?
(I know of some people who will not mourn there decline).


Categories: DBA Blogs

Oracle APEX (Application Express) Built-in LDAP Test Tool Stand-alone Application

Ittichai Chammavanijakul - Wed, 2011-09-21 18:56

Oracle APEX provides multiple ways for authentication. The most commonly used one is the LDAP authentication. Configuring it is very straight-forward in most cases – just providing the LDAP host, port, whether or not to use SSL, and finally the DN string. See here and here for posts about APEX LDAP configuration.

Sometime you want to test the LDAP configuration before deploying it. You can either use the 3rd-party tools to validate the configurations, or create an APEX application to test the logon, or use the built-in LDAP test tool in APEX.

The built-in APEX LDAP test tool can be launched when the authentication is being configured as seen below.

LDAP Test Tool

It will pop-up a new window as shown below.

LDAP Test Tool Pop-up Screen

By accident, I found out that you can even launch the APEX LDAP Test Tool as the stand-alone application using Application ID 4000 and Page Number 3890.

For example,

http://localhost:8888/apex/f?p=4000:3890

It will obviously prompt you to log on to the workspace first, then the LDAP test tool will just show just like an application, not the pop-up window.

Additional resources:

Categories: DBA Blogs

Oracle anounces the Unbreakable DB Appliance

Freek D’Hooge - Wed, 2011-09-21 12:33

More then 10 years after Oracle’s first appliance attempt with Raw Iron and 3 years after the release of Exadata, Oracle has now announced the Unbreakable DB Applicance.

This “cluster in a box” consists out of a 4 RU chassis, in which 2 server nodes,  96 GB memory per node, 12 TB raw shared disk storage  (24 disks) and 292 GB flash disks has been placed.
The two server nodes have a total of 24 cpu cores, but cores can be disabled.
This allows for sub-capacity licensing of the software (with a minimum of 4 cores).

On the software side, the appliance is running Oracle linux and 11gR2 grid infrastructure and 11gR2 db software. Databases on this appliance can run as single node, RAC or RAC One Node.
Oracle enterprise manager is also part of the software stack.

Claims are made towards one button installation of software and patching.
The appliance has also a “phone home” functionality which automatically creates a service request when a problem is detected.

List price for the hardware is $ 50,000 (regardless of how many cores you activate) and for the software the standard DB licensing applies.
Which means that existing CPU licences can be transferred to this appliance.

Oracle positions this system below the Exadata quarter rack, and it is also worth mentioning that this appliance is not expandable.

So far the product launch information.

Some questions / remarks I have:

  • According to the presentation the hardware price remains the same, regardless of how many cores you activate (namely $ 50,000).
    In my opinion, this means that no one will buy this appliance to just activate 4 cores.
    There are much cheaper solutions when you only need a low number of cores (certainly when you consider that most companies already have a san which can be used for the Oracle databases)
  • There are 24 disks in the appliance, which seems low (certainly compaired to the 24 cpu cores).
    However, keep in mind that this storage is dedicated and probably (I don’t have confirmation on this) capable of asm intelligent data placement and command queuing.
    Normally SAN vendors are using an estimate of 180 IOPS per san disk. Oracle however is using an estimation of 300 IOPS per cell disk for Exadata, and tests done by Glenn Fawcett show that they can actually perform even better (around 400 IOPS).
    http://glennfawcett.wordpress.com/2011/05/10/exadata-drives-exceed-the-laws-of-physics-asm-with-intelligent-placement-improves-iops/
    Using the number of 300 IOPS, this would mean that the 24 disks translate to 40 SAN disks (that may not used by any other application, so in reality to even more san disks), which already looks very different.Now, I’m still unsure how it will perform with write intensive databases (oltp or dwh), certainly when several databases are consolidated on this appliance.As this appliance is not expandable, the number of disks may be a weak point, compaired to the number of cpu cores.
    I’m hoping that someone like Kevin Closson (poke poke) will be able to shed some light on this, as my knowledge in this area is rather limited :-)
  • In the presentation it was mentioned that the flash storage is used for the redo logs, but it is unclear if it could also be used to store datafiles or as cache (as with the Exadata smart flash cache)

As with many things the proof of the pudding is in the eating, so I’m looking forward to some benchmarks and presentations by real world customers.
And if anyone from Oracle is reading this, you may always send me a demo machine so I can do some testing on my own  ;-))

update 20:12, fixed wrong memory specification


Categories: DBA Blogs

When Java Meets SOA

Ramkumar Menon - Fri, 2011-09-16 21:22
Overview

Typical composite applicationsinvolve integration amongst a variety of source and target systems, includingbut not limited to messaging systems such as AQ or MQ Series, Applications suchas e-Business Suite or Siebel, Databases, Custom applications, B2B partnersetc. Oracle SOA Suite 11g providesconnectivity to variety of such sources, and at the same time, enables users tomodel complex business processes orchestrating messages amongst these systemsin an Agile fashion.

Java incarnates at several pointswithin most of these integration projects. They could manifest as existing JavaAssets that you may need to converse with – such as EJBs or POJOs, as utilitycomponents that you need to callout to process complex financial algorithms, oras assets that you yourself need to build during the integration to handle businessor system errors.

It is imperative to understandthe different options in hand while designing integrations with Java or J2EEcomponents. You will be able to leverage the full potential of each option by exercisingthem where they are a good fit, while understand the pros and cons that comewith it. This weblog entry discussesthese options in greater detail. Also discussed are various options to invokeSOA Suite composites via Java.

Integrating with Java or J2EE Components

Here are a few options that youmay consider while integrating with Java components.

1. Java Embedding When to use:

Java embeddings are extremely useful while building small utilitysnippets inline within BPEL
processes. This includes like regular expression processing, Stringmanipulation, Mathematical computations, invoking Java APIs to perform tasks onthe file system such as run windows tasks or execute batch scripts etc.

ProductSupport:

Java Embedding is a BPEL feature.

Pros:

1) Provides inline access to Composite and component information,and also BPEL variables.

2) Can add entries to BPEL audit trails from within the embedding.

3) Façade APIs available for easy DOM Manipulation.

Cons:

1) Since Java embeddings are inline java code, they are inherentlynon-reusable. If you plan to re-use the embedded functionality, java embeddingmay not be a great idea.

Notes:

1) Do not use to build complexBusiness Logic

2) Limit the amount of codewithin your embedding to avoid code maintenance and management overheads.

2) If invoking transactionalendpoints, the transaction is propagated into the target endpoint.

3) Do not use Java Embedding toconverse with the target systems of your integration. This will reduce thevisibility within your Enterprise Application and is considered a poor design.

4) Exceptions can be thrown andtreated as BPEL Faults.

More Information:

Oracle SOA Suite Developer’sGuide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_java.htm#BABFCJDJ

2. Custom BPEL/XSLT XPath Functions When to use:

1) Youcan wrap your Java objects into XSLT or BPEL XPath extension functions when youwish to leverage them within your data assignments, conditions, or XSL Mappings.Most of these use-cases involve Java components that perform mathematicalcomputations, String manipulation etc, just like the Java Embedding does.

Product Support

XSLT XPath functions can be usedwithin any XSLT within SOA Suite or OSB. Evidently, BPEL XPath functions can bereferred to only within BPEL processes.

Pros

1) Stateless Utility Code can beconverted into an XSL XPath function without any additional coding.

2) Promotes code re-use.

Cons:

1) Ifyou have existing java components, you may need to build wrapper objects thatimplement a specific BPEL Interface for them to be used as BPEL XPath extensionfunctions.

2) No security features are available when Javacomponents are exposed via XPath functions.

Notes

1) Do not use to build complexBusiness Logic.

2) Do not invoke target systemsthat you are integrating from within your XPath functions, since you will losevisibility. This is generally a bad modeling approach.

More Information: Oracle SOA Suite Developer’s Guide http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_appx_functs.htm#BEIIAHJH 3) JAX-WS or JAX-RPC Web Services exposed usingSOAP/HTTP When to use:

One of the most widely useddeployments for Java components. Typically used when you need to expose javaassets as discrete Web Services, especially across firewalls - an importantuse-case for SOAP.

Product Support:

SOA Suite

Pros:

1) The Web Service can be managedand maintained separate from the Business Process or the Integration.

2) Allows for clean contractbased conversations since the Service is based of the WSDL.

3) Can be registered in aRegistry/Repository

4) Can be virtualized using aService Bus.

5) Can be re-implemented in anyplatform or programming language without impacting the calling services.

6) Can be secured, monitored andtuned from the infrastructure level.

Cons:

1) Object2XML conversions andSOAP add additional overhead.

2) Not a great choice if you needtransactionality

3) Needs personnel who understandJAX-WS stack to build, develop and maintain the services.

4) Requires client applications thatcan communicate via HTTP.

Notes:

1) JAX-WS allows for Asyncconversations too.

4. EJB Services When to use: 1) When you wish tocommunicate with EJBs via a) SDO parameters [WSDL Based], or b) Java Interfaces[no WSDL]. Product Support:

SOA Suite

Pros:

1) Native Java/RMI calls avoidadditional overhead introduced by SOAP.

2) When EJB Service w/JavaInterface is called from Spring components, avoids O2X conversion costs

Notes:

1) Users may need to be well versedwith ORM and persistence technologies.

More Information:

Oracle SOA Suite Developer’sGuide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/sca_sdo_ejb.htm#BAJBCFGE

5. SpringComponent

When to use:

1) When you want to expose your Java Componentsas First Class Citizens in your SOA - allowing it to converse and exchangemessages with other Service components and SCA References. Thus useful when your Service component needsto perform Java Processing as well as need to invoke a Mediator, BPEL, EJB oranother Web Service.

2) Useful if you have existingassets such as Spring/Hibernate Applications that you want to bring into yourSOA.

3) Useful while migrating fromJCAPS to SOA Suite to wrap JCDs into Spring Beans.

4) Also useful while migratingfrom WLI to SOA Suite for Custom Controls.

5) Do not use as a replacementfor other built-in components such as BPEL, Mediator or Adapter Services.

Product Support:

SOA Suite

Pros:

1) Re-use of existing Assets

2) Enables use of Aspect orientedprogramming declaratively within your POJOs.

3) Enables Auditing of yourSpring components via EM [Feature not available yet]

4) Can be secured via OWSMpolicies.

5) Being a native servicecomponent, easily integrates with other SCA Service and bindingcomponents."

Notes:

1) Can be exposed as a SOAP/HTTPWeb Service, or as an EJB.

2) The Java classes are packagedwithin the Composite archive itself."

More Information:

Oracle SOA Suite Developer’sGuide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/sca_spring.htm#BCGCJGDF

6. JavaCallouts

When to use:

1) Usefulto implement Prologue and Epilogue style invocations to java code before andafter execution of routing rules in mediator.

2) Usefulto cleanse input/output XML payloads, or perform context specific logging.

Product Support

This is a Mediator feature.

Pros:

1) Ifyou have existing Java Assets that manipulate XML payloads before sending outto partner applications, then you can directly re-use them within your MediatorJava Callouts, as a faster alternative to building new XSLT maps.

Cons

1) NoAuditing/Visiblity into the Callouts

Notes:

1) Need to implement a specificPre-defined Interface.

2) The Flow trail indicates apreRoutingRule or a postRoutingRule being invoked.

More Information:

Oracle SOA Suite Developer’sGuide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/med_createrr.htm#BGBDBHBE

7. OSBJava Callouts

When to use:

1) Usefulif you need custom validation/transformation/security, or message enrichment inyour Bus pipelines.

2) Useis preferable on inbound side.

3) Usea custom transport instead of a Java Callout on the outbound side.

Product Support

This is an OSB feature.

Notes:

1) Simple interface to invokeJava methods within a JAR resource.

2) Automatic type conversion forparameters and return value.

3) Integrated lifecyclemanagement of SOA and Java (jar) resource.

4) Users can view thePOJO/Parameters from OSB Console/Design-time.

6) Use EJBs as Java Callouttargets when you need better management while accessing XA resources. However,POJOs also allow propagation of transaction and security context.

7) POJO Must be thread-safe.

More Information:

OSB User Guide:

http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/pojo.html

8. OSBEJB Transport

When to Use:

       1) Primarily to integrate with existing or new EJBassets, and provide transport mediation security, monitoring and alerting featuresetc of OSB.

Product Support

This is an OSB Feature.

Pros:

       1) Since EJB Transport provides JAX-RPC mapping, itis useful when you wish to expose EJBs as SOAP/HTTP web service, or RESTendpoints that speak XML.

Cons:

       1) EJB Transport is an “Outbound-only” feature. You cannot expose a Service as an EJB via thisfeature.

9. OSB JEJB Transport When to use:

       1) Very useful for native java integration. Typicaluse-case would be when your client and service are both Java Applications.

Product Support

This is an OSB feature.

Pros:

       1) Fully embraces XA and security semantics

       2) Supports inbound and outbound interactions, asopposed to the EJB transport, that supports only inbound.

Cons:

      1) Does not support Java2XML conversions.

Notes:

      1) Both EJB 3.0 and 2.1 supported.

10. JMS Transport When to use:

      1) Use-cases are similar to the OSB JEJB Transport –native java integration. You could typically receive java objects onto the bus froma JMS Topic [JMS MessageType = ObjectMessage] transport and then invoke a JavaCallout that can directly process these objects sans any conversations. Alternatively,you could drop an JMS Object Message onto a JMS Topic using this feature.

Product Support

This is an OSB feature

Invoking SOA Suite from Java Components

1) LocatorAPI

For you to use the Locator API,ensure that you have an ADF binding (binding.adf) on your Service Interface. TheLocator API is very similar to what you have seen in SOA Suite 10g.

Hashtableprops = new Hashtable();

props.put(Context.PROVIDER_URL,"t3://adc4100101a:7001/soa-infra");

props.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

props.put(Context.SECURITY_PRINCIPAL,"weblogic");

props.put(Context.SECURITY_CREDENTIALS,"weblogic1");

Locatorlocator = LocatorFactory.createLocator(props);

Composite composite=  locator.lookupComposite("default/SimpleApproval!1.0"); Service service = composite.getService("simpleapprovalclient"); String msg = “<input><msg>Hello World</msg></input>"; NormalizedMessage req = new NormalizedMessageImpl(); req.getPayload().put("payload", msg); NormalizedMessage responseMsg = service.request("execute", msg); Element respPL = (Element) responseMsg.getPayload().get("payload");   More Information:

Oracle Fusion MiddlewareInfrastructure Management Java API Reference for Oracle SOA Suite

http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e10659/toc.htm

2)  Direct Binding API

Originally used for connectivitybetween SOA Suite and OSB. The API also leverages the Locator API, but hasslight differences from the former. The developer’s guide has very goodexamples illustrating how java clients can use Direct Binding API to invoke SOAComposites. See link below.

More Information:

Oracle SOA Suite 11g Developer’sGuide http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/invocapi.htm#CHDBBBBC

3) JavaWeb Services Proxy

You can generate a Java WebServices Proxy [JAX WS or JAX-RPC] from within JDeveloper and invoke the SOAComposite using SOAP/HTTP. Note that ifthe SOA Web Service is secured via message level security or TLS, the proxyshould be updated to provide the credentials as appropriate.

Refer to JDeveloper documentationfor more information.

4) AdapterInterface

Java components may interfacewith SOA composites via file system, database tables, JMS Destinations etc. TheJava client may drop a file into a directory on the file system, or enqueue messagesinto a JMS topic that is being polled by SOA composites (through Adapters) thatcould then pick up the message and continue processing.

Other Meeting points for Java and SOA Suite

1. FaultHandlers

You can configure to use a JavaAction within your Fault policies. These Java based Fault Handlers need to implementa specific Interface. [Separate ones for BPEL and Mediator].In both cases, youhave access to the in-scope messages/variables for query/update.

See section 21.1.1.2 of SOA SuiteDeveloper’s Guide for details on Mediator Java Fault Handler.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/med_faulthandling.htm#BABGFBCB

See section 11.4.3 of SOA SuiteDeveloper’s Guide for details of BPEL Java Fault Handler.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_faults.htm#BABJIBJB

2. SensorActions

You can configure the Publish targetof a Sensor Action to be a custom Java Class. You need to implement a specificData Publisher interface to be able to register as a sensorAction target. Seesection 17.2.5 of the SOA Suite Developer’s Guide to see how.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_sensors.htm#BABEBIFB

3. CustomWorkflow Clients

You can implement the Workflow JavaAPIs to build a custom Worklist client.

See Section 30.3 of the SOA SuiteDeveloper’s Guide for more information.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_worklistcust.htm#CIHJAHBJ

When Java Meets SOA

Ramkumar Menon - Fri, 2011-09-16 21:22
Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";} Overview

Typical composite applications involve integration amongst a variety of source and target systems, including but not limited to messaging systems such as AQ or MQ Series, Applications such as e-Business Suite or Siebel, Databases, Custom applications, B2B partners etc. Oracle SOA Suite 11g provides connectivity to variety of such sources, and at the same time, enables users to model complex business processes orchestrating messages amongst these systems in an Agile fashion.

Java incarnates at several points within most of these integration projects. They could manifest as existing Java Assets that you may need to converse with – such as EJBs or POJOs, as utility components that you need to callout to process complex financial algorithms, or as assets that you yourself need to build during the integration to handle business or system errors.

It is imperative to understand the different options in hand while designing integrations with Java or J2EE components. You will be able to leverage the full potential of each option by exercising them where they are a good fit, while understand the pros and cons that come with it. This weblog entry discusses these options in greater detail. Also discussed are various options to invoke SOA Suite composites via Java.

Integrating with Java or J2EE Components

Here are a few options that you may consider while integrating with Java components.

1. Java Embedding When to use:

Java embeddings are extremely useful while building small utility snippets inline within BPEL
processes. This includes like regular expression processing, String manipulation, Mathematical computations, invoking Java APIs to perform tasks on the file system such as run windows tasks or execute batch scripts etc.

Product Support:

Java Embedding is a BPEL feature.

Pros:

1) Provides inline access to Composite and component information, and also BPEL variables.

2) Can add entries to BPEL audit trails from within the embedding.

3) Façade APIs available for easy DOM Manipulation.

Cons:

1) Since Java embeddings are inline java code, they are inherently non-reusable. If you plan to re-use the embedded functionality, java embedding may not be a great idea.

Notes:

1) Do not use to build complex Business Logic

2) Limit the amount of code within your embedding to avoid code maintenance and management overheads.

2) If invoking transactional endpoints, the transaction is propagated into the target endpoint.

3) Do not use Java Embedding to converse with the target systems of your integration. This will reduce the visibility within your Enterprise Application and is considered a poor design.

4) Exceptions can be thrown and treated as BPEL Faults.

More Information:

Oracle SOA Suite Developer’s Guide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_java.htm#BABFCJDJ

2. Custom BPEL/XSLT XPath Functions When to use:

1) You can wrap your Java objects into XSLT or BPEL XPath extension functions when you wish to leverage them within your data assignments, conditions, or XSL Mappings. Most of these use-cases involve Java components that perform mathematical computations, String manipulation etc, just like the Java Embedding does.

Product Support

XSLT XPath functions can be used within any XSLT within SOA Suite or OSB. Evidently, BPEL XPath functions can be referred to only within BPEL processes.

Pros

1) Stateless Utility Code can be converted into an XSL XPath function without any additional coding.

2) Promotes code re-use.

Cons:

1) If you have existing java components, you may need to build wrapper objects that implement a specific BPEL Interface for them to be used as BPEL XPath extension functions.

2) No security features are available when Java components are exposed via XPath functions.

Notes

1) Do not use to build complex Business Logic.

2) Do not invoke target systems that you are integrating from within your XPath functions, since you will lose visibility. This is generally a bad modeling approach.

More Information: Oracle SOA Suite Developer’s Guide http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_appx_functs.htm#BEIIAHJH 3) JAX-WS or JAX-RPC Web Services exposed using SOAP/HTTP When to use:

One of the most widely used deployments for Java components. Typically used when you need to expose java assets as discrete Web Services, especially across firewalls - an important use-case for SOAP.

Product Support:

SOA Suite

Pros:

1) The Web Service can be managed and maintained separate from the Business Process or the Integration.

2) Allows for clean contract based conversations since the Service is based of the WSDL.

3) Can be registered in a Registry/Repository

4) Can be virtualized using a Service Bus.

5) Can be re-implemented in any platform or programming language without impacting the calling services.

6) Can be secured, monitored and tuned from the infrastructure level.

Cons:

1) Object2XML conversions and SOAP add additional overhead.

2) Not a great choice if you need transactionality

3) Needs personnel who understand JAX-WS stack to build, develop and maintain the services.

4) Requires client applications that can communicate via HTTP.

Notes:

1) JAX-WS allows for Async conversations too.

4. EJB Services When to use: 1) When you wish to communicate with EJBs via a) SDO parameters [WSDL Based], or b) Java Interfaces [no WSDL]. Product Support:

SOA Suite

Pros:

1) Native Java/RMI calls avoid additional overhead introduced by SOAP.

2) When EJB Service w/Java Interface is called from Spring components, avoids O2X conversion costs

Notes:

1) Users may need to be well versed with ORM and persistence technologies.

More Information:

Oracle SOA Suite Developer’s Guide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/sca_sdo_ejb.htm#BAJBCFGE

5. Spring Component

When to use:

1) When you want to expose your Java Components as First Class Citizens in your SOA - allowing it to converse and exchange messages with other Service components and SCA References. Thus useful when your Service component needs to perform Java Processing as well as need to invoke a Mediator, BPEL, EJB or another Web Service.

2) Useful if you have existing assets such as Spring/Hibernate Applications that you want to bring into your SOA.

3) Useful while migrating from JCAPS to SOA Suite to wrap JCDs into Spring Beans.

4) Also useful while migrating from WLI to SOA Suite for Custom Controls.

5) Do not use as a replacement for other built-in components such as BPEL, Mediator or Adapter Services.

Product Support:

SOA Suite

Pros:

1) Re-use of existing Assets

2) Enables use of Aspect oriented programming declaratively within your POJOs.

3) Enables Auditing of your Spring components via EM [Feature not available yet]

4) Can be secured via OWSM policies.

5) Being a native service component, easily integrates with other SCA Service and binding components."

Notes:

1) Can be exposed as a SOAP/HTTP Web Service, or as an EJB.

2) The Java classes are packaged within the Composite archive itself."

More Information:

Oracle SOA Suite Developer’s Guide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/sca_spring.htm#BCGCJGDF

6. Java Callouts

When to use:

1) Useful to implement Prologue and Epilogue style invocations to java code before and after execution of routing rules in mediator.

2) Useful to cleanse input/output XML payloads, or perform context specific logging.

Product Support

This is a Mediator feature.

Pros:

1) If you have existing Java Assets that manipulate XML payloads before sending out to partner applications, then you can directly re-use them within your Mediator Java Callouts, as a faster alternative to building new XSLT maps.

Cons

1) No Auditing/Visiblity into the Callouts

Notes:

1) Need to implement a specific Pre-defined Interface.

2) The Flow trail indicates a preRoutingRule or a postRoutingRule being invoked.

More Information:

Oracle SOA Suite Developer’s Guide

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/med_createrr.htm#BGBDBHBE

7. OSB Java Callouts

When to use:

1) Useful if you need custom validation/transformation/security, or message enrichment in your Bus pipelines.

2) Use is preferable on inbound side.

3) Use a custom transport instead of a Java Callout on the outbound side.

Product Support

This is an OSB feature.

Notes:

1) Simple interface to invoke Java methods within a JAR resource.

2) Automatic type conversion for parameters and return value.

3) Integrated lifecycle management of SOA and Java (jar) resource.

4) Users can view the POJO/Parameters from OSB Console/Design-time.

6) Use EJBs as Java Callout targets when you need better management while accessing XA resources. However, POJOs also allow propagation of transaction and security context.

7) POJO Must be thread-safe.

More Information:

OSB User Guide:

http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/pojo.html

8. OSB EJB Transport

When to Use:

       1) Primarily to integrate with existing or new EJB assets, and provide transport mediation security, monitoring and alerting features etc of OSB.

Product Support

This is an OSB Feature.

Pros:

       1) Since EJB Transport provides JAX-RPC mapping, it is useful when you wish to expose EJBs as SOAP/HTTP web service, or REST endpoints that speak XML.

Cons:

       1) EJB Transport is an “Outbound-only” feature. You cannot expose a Service as an EJB via this feature.

9. OSB JEJB Transport When to use:

       1) Very useful for native java integration. Typical use-case would be when your client and service are both Java Applications.

Product Support

This is an OSB feature.

Pros:

       1) Fully embraces XA and security semantics

       2) Supports inbound and outbound interactions, as opposed to the EJB transport, that supports only inbound.

Cons:

      1) Does not support Java2XML conversions.

Notes:

      1) Both EJB 3.0 and 2.1 supported.

10. JMS Transport When to use:

      1) Use-cases are similar to the OSB JEJB Transport – native java integration. You could typically receive java objects onto the bus from a JMS Topic [JMS MessageType = ObjectMessage] transport and then invoke a Java Callout that can directly process these objects sans any conversations. Alternatively, you could drop an JMS Object Message onto a JMS Topic using this feature.

Product Support

This is an OSB feature

Invoking SOA Suite from Java Components

1) Locator API

For you to use the Locator API, ensure that you have an ADF binding (binding.adf) on your Service Interface. The Locator API is very similar to what you have seen in SOA Suite 10g.

Hashtable props = new Hashtable();

props.put(Context.PROVIDER_URL, "t3://adc4100101a:7001/soa-infra");

props.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

props.put(Context.SECURITY_PRINCIPAL, "weblogic");

props.put(Context.SECURITY_CREDENTIALS, "weblogic1");

Locator locator = LocatorFactory.createLocator(props);

Composite composite=  locator.lookupComposite("default/SimpleApproval!1.0");
Service service = composite.getService("simpleapprovalclient");
String msg = “<input><msg>Hello World</msg></input>";
NormalizedMessage req = new NormalizedMessageImpl();
req.getPayload().put("payload", msg);
NormalizedMessage responseMsg = service.request("execute", msg);
Element respPL = (Element) responseMsg.getPayload().get("payload");
 
More Information:

Oracle Fusion Middleware Infrastructure Management Java API Reference for Oracle SOA Suite

http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e10659/toc.htm

2)  Direct Binding API 

Originally used for connectivity between SOA Suite and OSB. The API also leverages the Locator API, but has slight differences from the former. The developer’s guide has very good examples illustrating how java clients can use Direct Binding API to invoke SOA Composites. See link below.

More Information:

Oracle SOA Suite 11g Developer’s Guide http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/invocapi.htm#CHDBBBBC

3) Java Web Services Proxy

You can generate a Java Web Services Proxy [JAX WS or JAX-RPC] from within JDeveloper and invoke the SOA Composite using SOAP/HTTP. Note that if the SOA Web Service is secured via message level security or TLS, the proxy should be updated to provide the credentials as appropriate.

Refer to JDeveloper documentation for more information.

4) Adapter Interface

Java components may interface with SOA composites via file system, database tables, JMS Destinations etc. The Java client may drop a file into a directory on the file system, or enqueue messages into a JMS topic that is being polled by SOA composites (through Adapters) that could then pick up the message and continue processing.

Other Meeting points for Java and SOA Suite

1. Fault Handlers

You can configure to use a Java Action within your Fault policies. These Java based Fault Handlers need to implement a specific Interface. [Separate ones for BPEL and Mediator].In both cases, you have access to the in-scope messages/variables for query/update.

See section 21.1.1.2 of SOA Suite Developer’s Guide for details on Mediator Java Fault Handler.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/med_faulthandling.htm#BABGFBCB

See section 11.4.3 of SOA Suite Developer’s Guide for details of BPEL Java Fault Handler.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_faults.htm#BABJIBJB

2. Sensor Actions

You can configure the Publish target of a Sensor Action to be a custom Java Class. You need to implement a specific Data Publisher interface to be able to register as a sensorAction target. See section 17.2.5 of the SOA Suite Developer’s Guide to see how.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_sensors.htm#BABEBIFB

3. Custom Workflow Clients

You can implement the Workflow Java APIs to build a custom Worklist client.

See Section 30.3 of the SOA Suite Developer’s Guide for more information.

http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10224/bp_worklistcust.htm#CIHJAHBJ

ADF Faces: Optimizing retrieving beans programmatically

Chris Muir - Fri, 2011-09-16 00:55
From time to time in JSF and ADF Faces RC applications there’s the need from one managed bean to retrieve another programatically, typically from a lesser scoped bean to a greater, such as a requestScope bean retrieving a sessionScope bean to access its methods. There’s essentially 3 avenues to solving this problem programatically:

1) The following JSF 1.1 createValueBinding method that retrieves the bean using EL:
FacesContext ctx = FacesContext.getCurrentInstance();
Application app = ctx.getApplication();
ValueBinding bind = app.createValueBinding("#{beanName}");
Bean bean = (Bean) bind.getValue(ctx);
Note parts of this code were deprecated since JSF 1.1

2) A JSF 2.0 compliant way using evaluateExpressionGet also evaluating EL to retrieve a bean:
FacesContext context = FacesContext.getCurrentInstance();
Bean bean = (Bean) context.getApplication().evaluateExpressionGet(context, "#{beanName}", Bean.class);
(Thanks to BalusC on StackOverFlow for the technique).

3) Or a direct programmatic method that doesn’t use EL:
ExternalContext exctxt = FacesContext.getCurrentInstance().getExternalContext();

AppBean appBean = (AppBean) exctxt.getApplicationMap().get("appBeanName");
SessionBean sessionBean = (SessionBean) exctxt.getSessionMap().get("sessionBeanName");
RequestBean sessionBean = (RequestBean) exctxt.getRequestMap().get("requestBeanName");

AdfFacesContext adfctxt = AdfFacesContext.getCurrentInstance();

ViewBean viewBean = (ViewBean)adfctxt.getViewScope().get("viewBeanName");
PageFlowBean pageFlowBean = (PageFlowBean)adfctxt.getPageFlowScope().get("pageFlowBeanName");
With these 3 approaches in mind it’s interesting to gather some statistics on how long it takes each method to retrieve each type of bean. The following chart shows 5 consecutive runs of each method, per bean type, where each method is repeated in a loop 10000 times (so we can see the statistical differences).

(Note each run included an initialization section that wasn’t recorded in the statistics, designed to prime the beans and the access methods such that startup times didn’t impact the results).

The numbers represent nanoseconds but their individual values mean little. However the ratios between each method is of more interest and the following conclusions can be made:

a) The older createValueBinding method is slower than the evaluateExpressionGet method, at least initially but this trends to insignificant over subsequent runs.

b) The direct method is faster than the other methods in all cases.

c) Particular gains are to be made in using the direct method to access application, session and request scoped beans. Less so but still positive gains for view and pageFlow scoped beans.

Sample App

The sample app can be downloaded from here.

Platform

MacBookPro 2.3GHz Core i7, 8GB RAM, Mac OS X 10.6.8
JDev 11.1.2 JDK 64bit 1.6.0_26

Thanks

My thanks must go to Simon Lessard who inspired this post sometime back.

Common Sense

Jeff Hunter - Thu, 2011-09-15 09:13
Developer: I am running this query: DELETE FROM tab; It's been running since 2PM yesterday.  Can you make it go faster? DBA: You shouldn't delete 80M rows in a single transaction.  You should have used TRUNCATE instead of DELETE.  I have killed your session and it will be a while before it completes. Developer (5 minutes later): I tried TRUNCATE but it says my table is locked. DBA: I know, the

Spring Framework Samples

Ramkumar Menon - Wed, 2011-09-14 18:09

You can leverage Spring Framework to integrate components that use Java interfaces into SOA composite applications. Oracle SOA Suite uses the spring framework functionality provided by the WebLogic Service Component Architecture (SCA) of Oracle WebLogic Server. In this weblog entry, you can find a few Spring Component samples that you may find useful. Each of the given sample contains a README that provides step-by-step instructions for developing and testing the Composite, along with a complete JDeveloper project that you can deploy and test directly. More samples will be made available soon.Please provide feedback on what specific features you would like to see within upcoming Spring samples.

1) Hello World - A simple composite with a Hello World style Spring Component

2) Spring calling BPEL - Sample illustrating how you can call a BPEL Process from Spring.

3) Spring AOP - Sample illustrating how you can use dynamic proxies to achieve AOP with Spring.

4) Predefined Spring Beans - Sample illustrating how you can use the predefined beans within SOA Suite to process headers, access composite information, or just perform context-aware logging.

5) Global Spring Beans - Sample illustrating how you can expose a simple POJO as a global spring bean that you can access within any SOA composite.

Spring Framework Samples

Ramkumar Menon - Wed, 2011-09-14 18:09

You can leverage Spring Framework to integrate components that use Java interfaces into SOA composite applications. Oracle SOA Suite uses the spring framework functionality provided by the WebLogic Service Component Architecture (SCA) of Oracle WebLogic Server. In this weblog entry, you can find a few Spring Component samples that you may find useful. Each of the given sample contains a README that provides step-by-step instructions for developing and testing the Composite, along with a complete JDeveloper project that you can deploy and test directly. More samples will be made available soon. Please provide feedback on what specific features you would like to see within upcoming Spring samples.

1) Hello World - A simple composite with a Hello World style Spring Component

2) Spring calling BPEL - Sample illustrating how you can call a BPEL Process from Spring.

3) Spring AOP - Sample illustrating how you can use dynamic proxies to achieve AOP with Spring.

4) Predefined Spring Beans - Sample illustrating how you can use the predefined beans within SOA Suite to process headers, access composite information, or just perform context-aware logging.

5) Global Spring Beans - Sample illustrating how you can expose a simple POJO as a global spring bean that you can access within any SOA composite.

How to become an Oracle ADF expert in one week (or in 1 day if you don't have so much time)

JHeadstart - Tue, 2011-09-13 22:15

Oracle ADF is an extremely powerful framework for developing SOA-based web applications. Once you have grasped the key concepts of ADF, it is a real pleasure to work with ADF, and to experience how fast you can build really sophisticated stuff. But......as with any advanced framework, there is a learning curve involved, and I have to admit the ADF learning curve might be experienced as rather steep at times. I am often asked, "how long does it take to become a good ADF developer?", and I usually answer "something between 3-6 months".  The problem is that most project managers don't allow you this time, so you simply start your first ADF project, and find out along the way that you should have chosen a fundamentally different approach to make you application components truly flexible, easy to maintain, and reusable.

Well, Oracle has a one-time-only-unique-offer that allows you to become an ADF expert in one week, and get your ADF app right the first time: Attend Oracle Open World 2011, 2-6 october in San Francisco! The 2011 version of OOW has been proclaimed by the ADF EMG as "Year of the ADF developer" and with good reason. There are lots of good ADF sessions at OOW 2011, a complete overview of all ADF sessions can be found here.

If your employer does not allow you a whole week off from your project, you can go for the sunday-shortcut to become an ADF expert in even one day. The ADF EMG has put together an impressive list of speakers and topics, who will all present on sunday october in Moscone room 2000. See you there! (And don't forget to attend my own presentations on sunday 2.00 PM and wednesday 10.15 AM )

Categories: Development

SOA 11g: Improved Memory and Garbage Consumption

Marc Kelderman - Tue, 2011-09-13 09:43
There is a huge difference in memory consumption when you run SOA11g (PS4 in my case). The screens are based on a full-production clustered environment. One node is running with sub-optimal settings, while the other node is running optimal settings. A load-balancer is equally spreading the requests to the nodes.

Running SOA 11g on VMWare, 1 CPU and 3GB memory, with the options:

-Xms1280m
-Xmx1280m
-XX:MaxPermSize=512m
-XX:+UseParallelGC



Running SOA 11g on VMWare, 1 CPU and 3GB memory, with the options:

-Xms1280m
-Xmx1280m
-XX:MaxPermSize=512m
-Xss256k
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing



The last XX options shows that the memory consumption is dramaticlly lower and garbage collection is lower but frequenter.

Purging OSB Report data

Marc Kelderman - Mon, 2011-09-12 04:18
Deleting report data generated by Oracle Service Bus (OSB) can be done via the Service Bus console.

Make sure you have deployed the " Message Reporting Purger " application. By default the application is set to new, so it is not active. Inititially start this application for requests.



Purging can done be done via the Console.

If you want to purge the data directly in the database, execute the following SQL.

delete from wli_qs_report_data rd
where exists
(
  select 'x'
  from wli_qs_report_attribute ra
  where ra.msg_guid = rd.msg_guid
  and ra.db_timestamp &lt; trunc(sysdate) - 7
);

delete from wli_qs_report_attribute ra
where ra.db_timestamp &lt; trunc(sysdate) - 7;

alter table wli_qs_report_data deallocate unused;
alter table wli_qs_report_data enable row movement;
alter table wli_qs_report_data shrink space compact;

alter table wli_qs_report_attribute deallocate unused;
alter table wli_qs_report_attribute enable row movement;
alter table wli_qs_report_attribute shrink space compact;

Easy Business Intelligence with eazyBI

Raimonds Simanovskis - Sat, 2011-09-10 16:00

I have been interested in business intelligence and data warehouse solutions for quite a while. And I have seen that traditional data warehouse and business intelligence tool implementations take quite a long time and cost a lot to set up infrastructure, develop or implement business intelligence software and train users. And many business users are not using business intelligence tools because they are too hard to learn and use.

Therefore some while ago a had an idea of developing easy-to-use business intelligence web application that you could implement and start to use right away and which would focus on ease-of-use and not on too much unnecessary features. And result of this idea is eazyBI which after couple months of beta testing now is launched in production.

Many sources of data

One of the first issues in data warehousing is that you need to prepare / import / aggregate data that you would like to analyze. It's hard to create universal solution for this issue therefore I am building several predefined ways how to upload or prepare your data for analysis.

In the simplest case if you have source data in CSV (comma-separated values) format or you can export your data in CSV format then you can upload these files to eazyBI, map columns to dimensions and measures and start to analyze and create reports from uploaded data.

If you are already using some software-as-a-service web applications and would like to have better analysis tools to analyze your data in these applications then eazyBI will provide standard integrations for data import and will create initial sample reports. Currently the first integrations are with 37signals Basecamp project collaboration application as well as you can import and analyze your Twitter timeline. More standard integrations with other applications will follow (please let me know if you would be interested in some particular integration).

One of the main limiting factors for business intelligence as a service solutions is that many businesses are not ready to upload their data to service providers - both because of security concerns as well as uploading of big data volumes takes quite a long time. Remote eazyBI solution is unique solution which allows you to use eazyBI business intelligence as a service application with your existing data in your existing databases. You just need to download and set up remote eazyBI application and start to analyze your data. As a result you get the benefits of fast implementation of business intelligence as a service but without the risks of uploading your data to service provider.

Easy-to-use

Many existing business intelligence tools suffer from too many features which make them complicated to use and you need special business intelligence tool consultants which will create reports and dashboards for business users.

Therefore my goal for eazyBI is to make it with less features but any feature that is added should be easy-to-use. With simple drag-and-drop and couple clicks you can select dimensions by which you want to analyze data and start with summaries and then drill into details. Results can be viewed as traditional tables or as different bar, line, pie, timeline or map charts. eazyBI is easy and fun to use as you play with your data.

Share reports with others

When you have created some report which you would like to share with other your colleagues, customers or partners then you can either send link to report or you can also embed report into other HTML pages. Here is example of embedded report from demo eazyBI account:

Embedded reports are fully dynamic and will show latest data when page will be refreshed. They can be embedded in company intranets, wikis or blogs or any other web pages.

Open web technologies

eazyBI user interface is built with open HTML5/CSS3/JavaScript technologies which allows to use it both on desktop browsers as well as on mobile devices like iPad (you will be able to open reports even on mobile phones like iPhone or Android but of course because of screen size it will be harder to use). And if you will use modern browser like Chrome, Firefox, Safari or Internet Explorer 9 then eazyBI will be also very fast and responsive. I believe that speed should be one of the main features of any application therefore I am optimizing eazyBI to be as fast as possible.

In the backend eazyBI uses open source Mondrian OLAP engine and mondrian-olap JRuby library that I have created and open-sourced during eazyBI development.

No big initial investments

eazyBI pricing is based on monthly subscription starting from $20 per month. There is also free plan for single user as well as you can publish public data for free. And you don't need to make long-term commitments - you just pay for the service when you use it and you can cancel it anytime when you don't need it anymore.

Try it out

If this sounds interesting to you then please sign up for eazyBI and try to upload and analyze your data. And if you have any suggestions or questions about eazyBI then please let me know.

P.S. Also I wanted to mention that by subscribing to eazyBI you will also support my work on open-source. If you are user of my open-source libraries then I will appreciate if you will become eazyBI user as well :) But in case if you do not need solution like eazyBI you could support me by tweeting and blogging about eazyBI, will be thankful for that as well.

Categories: Development

SRVCTL For RAC

Ayyappa Yelburgi - Wed, 2011-09-07 10:22
srvctl enable asm -n node_name [-i ] asm_instance_nameUse the following syntax to disable an ASM instance:srvctl disable asm -n node_name [-i asm_instance_name]The above statement is generally required when u want to disable the asm so that asm does not start automatically on reboot.You can also use SRVCTL to start, stop, and obtain the status of an ASM instance as in the following examples.Useayyudbahttp://www.blogger.com/profile/00046200352601718598noreply@blogger.com16

Pages

Subscribe to Oracle FAQ aggregator