Search My Ramblings
Wednesday, June 19, 2013
What does loose coupling really mean?
Agile Adoption Words of Wisdom
TechWell | Agile Is Not for Everyone (and That's OK)
Friday, May 31, 2013
Oracle SOA Suite 11g Composite Fails to Load After Restart
When I compared the source code of the failing process to other similar ones that weren't failing on server restarts, I could tell that the issue was related to how this particular composite was calling another SOA composite for error handling (which all of the SOA composites call). In the failing composite, it was referencing the WSDL using a URL retrieved from the Enterprise Manager console for that composite, e.g. "http://{server}:{port}/soa-infra/services/{partition}/{compositeName}/{serviceName}?WSDL". By referencing the WSDL this way, it requires the composite be running and loaded prior to this composite requesting it, since it's requesting the WSDL from the composite itself, and not just referring to the WSDL as a static document. There is no determinate way to predict which order SOA composites will be loaded by the infrastructure, so doing it this was typically caused issues with the composite to where it would need to be recompiled as a different version and deployed again each time the server is restarted.
To solve this, there is a preferred way and an alternate way of the above solution. The preferred way is to store common artifacts in the Metadata Store and reference them from your composites where possible, so utility composites like an error handler's WSDL would definitely fall in this category. For this simple project, it was determined to instead reference the WSDL as a static document living in the infrastructure independent of the composite being loaded. To do this, we changed the WSDL URL being referenced to http://{server}:{port}/soa-infra/services/{partition}/{compositeName}/{WSDLFilename}wsdl in the composite.xml in the import section, as well as the reference/ui:wsdlLocation attribute that references the service. However, the previous format for the URL was left in the
To be clear, using MDS to store these common artifacts is a better solution, but for a down and dirty quick solution this is an alternate option.
Thursday, April 11, 2013
Oracle Fusion Middleware-Inserting large XML into XMLType columns
If you're trying to save a large XML payload into an XMLType column type in an Oracle database table from a DbAdapter partner link (JCA Adapter in OSB), and receive the error:
ORA-01461: can bind a LONG value only for insert into a LONG column
You should only need to edit the mappings.xml for that partner link, navigate to the column that is an XMLType in the database, and change the xsi:type from "direct-mapping" to "direct-xml-type-mapping".
Then recompile your SOA composite (or update the OSB mappings file) and redeploy and test.
It should now support larger-size XML payloads!
Sunday, November 25, 2012
The Importance of Guiding Principles
Whether speaking about enterprise architecture or design within a project, guiding principles are paramount to keeping your focus on what's important to guiding decisions. Some examples of these would be software re-use over creation, and simplicity over flexibility to make things more maintainable. It's important to establish what your guiding principles are prior to having multiple teams making decisions either based on uniform principles or using their own discretion.
This importance to me was illustrated clearly with a little-known rule in the NFL. As a big NFL fan, you would expect with their use of instant replay and reviewing all scoring plays and turnovers, their guiding principle would be the correctness of ruling plays that directly affect the outcome of the game. However, as reinforced by an ill-fated decision made recently by the coach of the Detroit, if you throw a challenge flag on one of these plays, it renders the play un-reviewable and your team gets penalized 15 yards. I'm guessing the purpose of the rule is to ensure coaches don't try to become too demonstrative against the officials, but the end result is not getting the play called correctly in some cases.
Had they determined a guiding principle was to ensure plays are called accurately (e.g. accuracy over punishment), this rule would never have been ratified, which has now resulted in a situation the possibly changed the course of a game for a team. Having a handful of these guiding principles, a small enough number that allows remembering them clearly across teams, will ensure your organization is uniformly making decisions that can impact projects going forward.
Friday, November 2, 2012
Using Spring Portlet MVC 3.0 in Oracle Webcenter Portal (Spaces)
- Developer creates JSR-168/286 compliant portlet using their IDE and whatever framework they want
- Developer packages portlet up as EAR file for deployment
- Deployer updates EAR file using provided script to expose JSR-286 portlet as WSRP Portlet Producer EAR, and adds weblogic.xml to embedded WAR to specify shared library to include (otherwise deployment FAILS)
- Deployer deploys WSRP .ear to Webcenter Portlet Producers server.
- Webcenter Portal: Spaces Administrator registers WSRP v2 portlet producer in Webcenter Portlet: Spaces using WSDL URL.
- Webcenter Portal: Spaces page designer adds portlet to desired page and sets any default configurations.
Tuesday, October 16, 2012
Oracle Webcenter Portal 11.1.1.6 VirtualBox: Installing Webcenter Portlet Producers
Overview
In order to integrate some existing web site content/functionality into your Webcenter Portal, you'll likely need to have the provided Portlet Producers Omniportlet and Web Clipping portlet installed in your Webcenter virtual machine. These make integrating with existing sites much easier and quicker than a home-grown solution, but will need to be installed if you're using the Oracle VirtualBox VM that includes Webcenter Portal.Prerequisites
First, you'll have to download the VirtualBox VM that runs Webcenter Portal from Oracle at http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html.Second, you should have already installed it, and then started it up per the instructions at the site above. In my case I have configured the "domain" wc_spaces, since I want to setup to use Webcenter Portal: Spaces locally.