How I Use Oracle UCM in the Cloud
I wanted to talk a little about how we take advantage of Amazon Web Services, especially the Elastic Compute Cloud, here at Redstone Content Solutions. This is not marketing drivel. The goal is to describe how you can benefit from the cloud for your Oracle endeavors by describing how we actually do just that ourselves. Sometimes it helps to just hear about how others are using something.
We use the Amazon Elastic Compute Cloud, sometimes referred to as Amazon EC2, for a variety of purposes. The topics for this post will be the use of EC2 for Development and Training. I will release a post in the future with additional thoughts about using EC2 to host your Production environment.
For those who are attending COLLABORATE10 at Las Vegas’ Mandalay Bay Hotel & Convention Center April 18-22, I will be giving a presentation on this subject. The session, entitled Build your own UCM Stellent Instance in Amazon EC2, will be held on Thursday, April 22nd, 2010 at 8:30 a.m. in Room 2. The session ID is 128. Session dates and times are subject to change, so stay tuned!
We actually do use EC2 to host development and training environments. I interact with EC2 environments on a daily basis. The primary thing you need to take advantage of EC2 for these purposes is a reliable internet connection. Note: I will be discussing mostly Oracle Content Management – based environments but we also use them for Web Center Framework and SOA Suite.
Originally when we started using EC2, machines had to be kept running. If you restarted an instance you lost your “state” if you did not re-bundle the instance and persist it as an Amazon Machine Instance (AMI). There were a few tricks we could use to avoid this to a certain extent that revolved around attached storage. Additionally, images we created ourselves had an image size cap. This proved to make things difficult as we tried to construct base images within the 10 gigabyte range.
With some recent announcements in December by Amazon the above restrictions are now a thing of the past. We can launch instances, change data, shut down and launch again with no loss of state or data. It actually acts like a real piece of hardware now. With this new functionality, we can boot images directly off of Elastic Block Storage (also known as EBS). This means when we shut our instance down, the resources required to run the instance are not reclaimed. The resources (namely disk) are kept in our EBS volumes and their data persists across shutdowns. Now when we launch our instances the resources are already allotted and immediately available. Hence, our boot times for launching instances are much faster. If you’ve ever tried to launch an EC2 instance you know why I am excited about this.
EC2 also works with Amazon Simple Storage Service (S3) which is different from EBS. Think of EBS as blocks of space you can attach as volumes to machines. Amazon S3 acts like your corporate SAN where you can store all kinds of information. Whenever you transfer something from your own machine or elsewhere in the world to an EC2 instance or S3 Amazon will charge you. However, Amazon does not charge to move data from S3 to any of your EC2 instances. So, we store installers, patch sets, etc., in S3 and then we copy those to our EC2 instances. You just have to get your content into the Amazon cloud and then you can move it around within the cloud for free.
You can work with a variety of operating systems in EC2. You can use Windows Server 2003 or 2008 and many flavors of Linux. There is even a process you can go through to convert VMWare Workstation files to an Amazon Machine Instance that you can upload and run in the cloud. Since we work exclusively with Oracle products, we use Oracle Enterprise Linux (OEL) extensively. There are several AMI instances available, pre-built, from Oracle for Oracle Enterprise Linux and Oracle Database 11g that might serve as a good starting point. Or, you can really get into it and start using a Just Enough Operating System (JeOS) version of OEL.
We can setup an instance of OEL, Oracle Database 11g R2, Oracle UCM 10gR3 and get everything configured just right. Then we can spawn as many “instances” of this as we want for training, testing or demonstration purposes. We can choose to accept a single processor box with 2 gigabytes of RAM, or we can throw the “big iron” on and fire up with 8 processors and 16 gigabytes of RAM or pretty much anything in between.
Think about this scenario. You want to try out Digital Asset Management on Content Server. Specifically Video Manager. You can acquire an EC2 instance with all the power you need to run Flip Factory within minutes. Flip Factory is a neat piece of software but the processing requirements to really use it are pretty steep. Most development groups I know do not have that kind of horse power just lying around waiting to be used. With EC2, you can have it running by lunch time. We use this kind of quick hardware acquisition to provision testing environments or “component labs” frequently.
Finally, the nice thing about all this is accessibility. We can quickly and easily open this up for a client or prospect to view a test instance. We can even spawn a separate instance of the original for the client to “play around on”. But what if they do something we hadn’t accounted for? Drop that instance and re-spawn a new one and they’re back in action fifteen-twenty minutes later.
In the future, I am going to try to cover more specific details about the actual setup, the problems we encounter and how to solve them. I will also detail a handy array of tools we use to work with Amazon Web Services (AWS). Some of this will be on display if you see my presentation in Vegas!
Just food for thought. Think about it some. The opportunities are endless.
jQuery Post With HDA Payload
In a previous post I covered some examples of using jQuery with Content Server as well as a component to help facilitate testing out some of this functionality. Dan Kozlowski asked in the comments and over here on the Oracle ECM Forums about how he might use jQuery when the INPUT has HDA ResultSet data. He gives the following example:
@Properties LocalData
IdcService=EDIT_USER
dName=jsmith
dFullName=Jennifer Smith
dUserAuthType=Local
dPassword=password
dEmail=jsmith@stellent.com
dUserType=MKT
dUserLocale=English-US
@end
@ResultSet UserAttribInfo
2
dUserName
AttributeInfo
jsmith
role,admin,15,role,contributor,15
@end
There are two magical parts to get this to work. First, you need to set the REQUEST (not response) content type. Second, your payload has to be in a certain format. Let’s look at each of these in turn.
First, here’s a sneak peek of the jQuery AJAX request:
$.ajax(
{
type: “POST”
, contentType: “text/hda; charset=utf-8″
, url: “”
, data: jQuery(“#txtData”).html()
, success: function(msg)
{
alert(msg);
}
, error: function(msg)
{
alert(“Error: ” + msg);
}
});
Notice the contentType setting!
Now, the payload, specified by the variable named data, has to be in a certain format. This format should start with IsJava=1 and be followed by the encoding and finally the first ResultSet known as LocalData. LocalData will contain the IdcService to be called, and a variety of over key/value pairs. At the end of that set we can include additional necessary ResultSets.
I have added an Edit User Sample HCSP for you to download and play with. Check this HCSP into your content server, go to Doc Info and click the web viewable link. The page will load with a text area and a button. Adjust the data in the text area and click submit!
Play around with it some and you should see how this all works together!
Dan, thanks for what turned out to be a fun puzzle.
Good Forum Discussion on Accounts
There has been some good discussion going on over on the Oracle ECM Forums regarding Accounts. It started out as Accounts and Access Control Lists but it has morphed a little into some discussion about how to use Accounts in general and some possible structures people are using to layout their account hierarchies.
Check out these discussions about accounts in the Oracle ECM Forums:
http://forums.oracle.com/forums/thread.jspa?threadID=1001039&tstart=0
Output to Log
One of the easiest ways to see what might be going wrong, or right, in Content Server is the use of trace sections on the System Audit page. Trace sections allow you a great variety of control over what kind of information shows up in the server output.
See this former blog entry for more detailed information about tracing:
Content Server Tracing and Creating Your Own Custom Trace Sections
Refreshing the Server Output to show you what is going on can get annoying though. If you add this entry to General Configuration or config.cfg and restart you can get server output to be written to disk:
UseRedirectedOutput=true
To find the log on the disk look under the directory that is appropriate for your Operating System.
Windows: <install dir>/bin/IdcServerNT.log
Linux: <install dir>/etc/log
Now that you have found the log, it would be easier to keep an eye on what’s going on by using something like the tail command in Linux/UNIX. The tail command, with the -f switch will continuously show the data being added to the log file. In Linux you simply use this command:
tail -f
There are several applications available that add similar functionality for windows:
http://tailforwin32.sourceforge.net/
http://www.baremetalsoft.com/baretail/index.php
http://www.withdata.com/tail4win.html
Assign Info Button at the Top
When contributing various assets in Site Studio Designer the Assign Info form will be presented. By default, the buttons to commit are at the bottom of the screen. This is not such an issue the first time I save/commit the content. However, as I continue editing/saving the content I get annoyed by the fact that I have to scroll to the bottom of the page and click Assign Info each time.
I have finally broke down and created a new component that adds the Assign Info button to the top of the page as well.
Download the Sample Assign Info Buttons at Top Component.

