<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Bala&apos;s Oracle Fusion Middleware Blog</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/" />
   <link rel="self" type="application/atom+xml" href="http://blogs.oracle.com/bala/xml/rss.xml" />
   <id>tag:blogs.oracle.com,2009:/bala//324</id>
   <updated>2009-10-22T22:36:14Z</updated>
   <subtitle>I shall use this space to share the information and thought about Oracle Fusion Middleware products</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 4.23-en</generator>


<entry>
   <title>More ways to check the existense of a resource with WLST</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2009/10/more_ways_to_check_the_existen.html" />
   <id>tag:blogs.oracle.com,2009:/bala//324.15171</id>
   
   <published>2009-10-22T22:28:09Z</published>
   <updated>2009-10-22T22:36:14Z</updated>
   
   <summary>In one of my previous post, I discussed a couple of ways with which you can find out whether a particular configuration already exists before you create them. The methods are not just limited to the one on that post....</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
   <category term="scripting" label="Scripting" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="wlst" label="WLST" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="weblogicserver" label="WebLogic Server" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>In one of my <a href="http://weblogicserver.blogspot.com/2009/03/check-for-resourceconfiguration.html">previous post</a>, I discussed a couple of ways with which you can find out whether a particular configuration already exists before you create them. The methods are not just limited to the one on that post. So now I am here to discuss couple more way to do the same check. But just for completeness I shall also include the methods I discussed in my previous post. I am taking a sample use case to check whether a particular WebLogic Server instance exists in the domain or not. But you can extrapolate these technique for any other resource like JDBC Data Source, JMS Server, JMS Queue etc.</p>

<p><em><strong>Goal </strong></em>- Check whether a server with the name &#8216;mymanagedserver&#8217; exists in the domain</p>

<p><strong>Method-1 Using &#8220;cd&#8221;</strong></p>

<p>A simple approach is to use the &#8220;cd&#8221; command to navigate into that configuration MBean. If the &#8220;cd&#8221; command throws an exception then you can safely assume that the resource/configuration doesn&#8217;t exists and you can continue with your task.</p>

<pre>
...
mgdServerName = 'mymanagedserver'
### Checking for the server
try: 
    cd('/Servers/' + mgdServerName)
    print '===> Server \"' +mgdServerName+'\" already exists'
    print '===> No action was performed'
    exit()
except:
    pass
### Continue to create the server
...
</pre>

<p><strong>Method-2 Catch &#8220;BeanAlreadyExistsException&#8221;</strong></p>

<p>Another approach is to catch the &#8220;BeanAlreadyExistsException&#8221; when creating the resource and safely exiting the script.</p>

<pre>
...
mgdServerName = 'mymanagedserver'
### Create the Managed Server
edit()
startEdit()
try:
    create(mgdServerName, resourceType)
    print '===> Created Managed Server - ' + mgdServerName
    pass 
except BeanAlreadyExistsException:
    print '===> Server \"' +mgdServerName+'\" already exists'
    print '===> No action was performed'
    cancelEdit('y')
    exit()
...
</pre>

<p>But with this approach you are starting an edit session and creating the server to find out it&#8217;s existence. So you have to cancel the edit session once you find out that the resource that you are creating already exists if not you might get a warning message similar to the following:</p>

<p>You have an edit session open and you will lose all outstanding changes and your edit session will be stopped if you exit. Are you sure you would like to exit? (y/n)</p>

<p>So canceling the edit session with a response &#8216;y&#8217; will make WLST not to prompt for the user response.</p>

<p><strong>Method-3 Using &#8220;getMBean&#8221;</strong></p>

<p>There is a WLST command called getMBean which will return the MBean object when you specify the appropriate path. If the instance is not found then it will return None. But getMBean command does not throw an exception when an instance is not found. So you have explicitly check result of the getMBean.</p>

<pre>
...
mgdServerName = 'mymanagedserver'
ref = getMBean('/Servers/' + mgdServerName)
if(ref != None):
    print 'Server ' +  servername + 'already exists'
    disconnect()
    exit()
else:
    pass
### Continue to create the server
...
</pre>

<p><strong>Method-4 Using &#8220;ls&#8221;</strong></p>

<p>You can simply navigate to the resource type and execute ls. This will return the list of all the instances as a string when you assign the output to a variable. Then you can use the find method on that string variable to check whether your server exists. The find method returns a &#8220;0&#8221; on success or &#8220;-1&#8221; on failure.</p>

<pre>
...
mgdServerName = 'mymanagedserver'
cd('/Servers')
servers = ls()
if (servers.find(servername) != -1):
    print 'Server ' +  servername + ' already exists'
    disconnect()
    exit()
else:
    pass
### Continue to create the server
...
</pre>
]]>
      

   </content>
</entry>

<entry>
   <title>Don&apos;t want to get prompted for confirmation in WebLgic Console?</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2009/09/dont_want_to_get_prompted_for.html" />
   <id>tag:blogs.oracle.com,2009:/bala//324.14434</id>
   
   <published>2009-09-16T15:11:10Z</published>
   <updated>2009-09-16T15:36:16Z</updated>
   
   <summary> If you are using WebLogic Admin console frequently to configure resources or to manage the life cycle of the servers, you might have seen a confirmation prompt. This prompt will show not up when you are running the domain...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
   <category term="weblogicconsolepreferences" label="WebLogic Console Preferences" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p></p>

<p>If you are using WebLogic Admin console frequently to configure resources or to manage the life cycle of the servers, you might have seen a confirmation prompt. This prompt will show not up when you are running the domain in development mode. When the domain is running in production mode they will ask confirmation for all the operations. There used to be no way to disable this confirmation page prior WebLogic Server 10.3. Now in WebLogic Server 10.3 and higher you can set a console user preference that can disable these confirmation pages.</p>

<p>Use the tool bar at the center (top) of the console to go to the "Preferences". Under the "User Preferences" tab you will find an option called "Ask for confirmation in operations". By default it will be enabled in production domains and you can disable it to avoid that annoying confirmation pages where will have to click either "Yes" or "No". While you are there explore the other useful preferences like "Show Inline Help" and "Show Advanced Sections" which can buy some real-estate space in the console and save you some clicks.</p>

<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SrD-y9zefeI/AAAAAAAACJQ/Qk0_tbOQHRs/s1600-h/Pref-1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SrD-y9zefeI/AAAAAAAACJQ/Qk0_tbOQHRs/s320/Pref-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5382081706245127650" border="0" /></a></p>

<p><br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SrD-zeAgliI/AAAAAAAACJY/HT4JhVWuwkY/s1600-h/Pref-2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 120px;" src="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SrD-zeAgliI/AAAAAAAACJY/HT4JhVWuwkY/s320/Pref-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5382081714889725474" border="0" /></a></p>]]>
      
   </content>
</entry>

<entry>
   <title>WebLogic Server With Oracle RAC</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2009/05/weblogic_server_with_oracle_ra.html" />
   <id>tag:blogs.oracle.com,2009:/bala//324.11950</id>
   
   <published>2009-05-02T18:50:51Z</published>
   <updated>2009-05-02T22:27:40Z</updated>
   
   <summary>With growing adoption of Oracle WebLogic Server (WLS) among the customer and the fact that Oracle Fusion products will include WLS in their next major release it is very evident that WLS must support Real Application Clusters (RAC). As a...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>With growing adoption of Oracle WebLogic Server (WLS) among the customer and the fact that Oracle Fusion products will include WLS in their next major release it is very evident that WLS must support Real Application Clusters (RAC). As a matter of fact WLS 10gR3 includes support for Oracle 11g and Oracle RAC 11g. To read more on RAC with WLS refer to the<a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jdbc_admin/oracle_rac.html"> WLS documentation for information about Oracle RAC</a>.</p>

<p>I recently came across an <a href="http://www.oracle.com/technology/products/weblogic/howto/rac/index.html">article on how to setup Oracle RAC with WLS</a>.  This article clearly explains how to configure WLS for a newbie with step by step instruction along with screen shots. One of the interesting part of this article is they also illustrate how to test it with a sample application they provide.</p>

<p>Happy RAC 'ing!</p>]]>
      
   </content>
</entry>

<entry>
   <title>WLST Best Practices</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2009/03/wlst_best_practices.html" />
   <id>tag:blogs.oracle.com,2009:/bala//324.10531</id>
   
   <published>2009-03-02T13:56:16Z</published>
   <updated>2009-10-22T22:25:49Z</updated>
   
   <summary>With WLST becoming popular among WebLogic Administrator, there is a unsaid need for the evolution of best practices with respect to WLST scripting. I am being asked to share information about WLST like a 101 post. But I decided to...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Admin Topics" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="automation" label="Automation" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="jython" label="Jython" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="scripting" label="Scripting" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="wlst" label="WLST" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="weblogicserver" label="WebLogic Server" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bestpractices" label="best practices" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>With WLST becoming popular among WebLogic Administrator, there is a unsaid need for the evolution of best practices with respect to WLST scripting. I am being asked to share information about WLST like a 101 post. But I decided to start a series of post which might help WebLogic Administrators with some must follow best practices rather than writing some introductory post which might duplicate the documentation. </p>

<p>For a complete documentation of WLST see here - <a href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/config_scripting/using_WLST.html">http://download.oracle.com/docs/cd/E12840_01/wls/docs103/config_scripting/using_WLST.html</a></p>

<p>I am writing a series of posts in my public blog space @ <a href="http://weblogicserver.blogspot.com">http://weblogicserver.blogspot.com</a> and I shall update this post to include all the best practices that I publish there.</p>

<p><a href="http://weblogicserver.blogspot.com/2009/02/variable-definitions-in-preamble-best.html"><strong>WLST-BP-1</strong> Define all the variables in the preamble</a><br />
<a href="http://weblogicserver.blogspot.com/2009/02/do-not-step-on-others-feet-wlst.html"><strong>WLST-BP-2</strong> Check for existing session before you start one</a> <br />
<a href="http://weblogicserver.blogspot.com/2009/03/check-for-resourceconfiguration.html"><strong>WLST-BP-3</strong> Check for the resource or configuration existence before creating them</a><br />
<a href="http://weblogicserver.blogspot.com/2009/06/use-definition-for-reuse-wlst-scripting.html"><strong>WLST-BP-4</strong> Use definitions for Reuse</a></p>]]>
      
   </content>
</entry>

<entry>
   <title>New Combo Meal - JDeveloper 11g + WebLogic Server 10g</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2009/01/new_combo_meal_jdeveloper_11g.html" />
   <id>tag:blogs.oracle.com,2009:/bala//324.9431</id>
   
   <published>2009-01-02T22:51:16Z</published>
   <updated>2009-01-02T22:53:26Z</updated>
   
   <summary>JDeveloper 11g is now getting shipped with our very own Oracle WebLogic Server 10g (10.3). Yes, if you download Oracle JDeveloper 11g (11.1.1.0.1) you can develop Java, Java EE and Database applications. A default WebLogic Server 10g Domain will be...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>JDeveloper 11g is now getting shipped with our very own Oracle WebLogic Server 10g (10.3). Yes, if you download Oracle JDeveloper 11g (11.1.1.0.1) you can develop Java, Java EE and Database applications. A default WebLogic Server 10g Domain will be created when installing JDeveloper which can be used to deploy and run applications. You can also build applications and run it on Apache Tomcat, IBM WebSphere, JBoss application servers.</p>

<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_i4Ubs4VYKUM/SV6Z3TszHiI/AAAAAAAABQE/yCVeE2ZQAY0/s1600-h/Jdev1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_i4Ubs4VYKUM/SV6Z3TszHiI/AAAAAAAABQE/yCVeE2ZQAY0/s320/Jdev1.jpg" alt="" id="BLOGGER_PHOTO_ID_5286832188039568930" border="0" /></a></p>

<p>The default WebLogic Server Domain must be used for running and debugging web applications from within the JDeveloper design time. ADF 11g applications require a Java EE 5 container and currently WebLogic Server 10g (10.3) is certified,</p>

<p>A key information to know if you are currently using JDeveloper is that migration to JDeveloper 11g is supported only from JDeveloper 10.1.3.4. So you might want to first upgrade to 10.1.3.4 if you are still in other versions.</p>

<p>You can download Oracle JDeveloper 11g here - <a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html">http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html</a></p>

<p>If you want to get started with JDeveloper 11g, here are few tutorials from Oracle by Example Series (OBE) - <a href="http://www.oracle.com/technology/obe/obe11jdev/11/index.html">http://www.oracle.com/technology/obe/obe11jdev/11/index.html</a></p>

<p>More step-by-step instructions guides are available for common tasks as the Cue cards here - <a href="http://www.oracle.com/technology/products/jdev/11/cuecards/index.html">http://www.oracle.com/technology/products/jdev/11/cuecards/index.html </a></p>]]>
      
   </content>
</entry>

<entry>
   <title>Fly Like a Rocket using JRockit JVM</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2008/11/fly_like_a_rocket_using_jrocki.html" />
   <id>tag:blogs.oracle.com,2008:/bala//324.8594</id>
   
   <published>2008-11-13T23:03:13Z</published>
   <updated>2008-11-13T23:06:29Z</updated>
   
   <summary>JRockit is the first JVM designed to run server-side applications. It is now the high performance JVM used in the core of Oracle Fusion Middleware. With its deterministic nature for performing garbage collection, it is now used on many time...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Performance" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>JRockit is the first JVM designed to run server-side applications. It is now the high performance JVM used in the core of Oracle Fusion Middleware. With its deterministic nature for performing garbage collection, it is now used on many time driven and high through application architectures like Algo Trading, Military Asset Tracking, Transportation &amp; Logistics etc.</p>

<p>With its wide adoption, rich tool set and high performance, JRockit is now used for Enterprise Application Servers, Portal Servers, Integration Servers, Enterprise Service Bus, Identity Management Servers, Time Driven &amp; Complex Event Processing Applications etc.</p>

<p>Oracle WebLogic Server installations are bundled with 2 flavors of JVM. On all Intel based installers in addition to Sun's Hotspot JVM, Oracle's JRockit JVM is also included. The default JVM for a WebLogic Domain is configured when a Domain is created using the Configuration Wizard or WLST. But all the built-in tools comes with WebLogic Server are configured to JRockit JVM. If the Domain is selected to run in Production Mode the JVM selection will default to the bundled JRockit SDK whereas Sun SDK will be selected for the Domains configured in Development Mode.</p>

<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_i4Ubs4VYKUM/SRyw8_OxlsI/AAAAAAAABIg/O9nKTY3hEok/s1600-h/JRockit.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_i4Ubs4VYKUM/SRyw8_OxlsI/AAAAAAAABIg/O9nKTY3hEok/s320/JRockit.jpg" alt="" id="BLOGGER_PHOTO_ID_5268280225928681154" border="0" /></a><br />
After the fact that you create the domain if you want to change your server(s) JDK to JRockit, you can do so by modifying the server's start up scripts. The server start up scripts <span style="font-family:courier new;">startWebLogic.cmd/sh</span> and <span style="font-family:courier new;">startManagedWebLogic.cmd/sh </span>both rely on a setup script for environment setting -<span style="font-family:courier new;"> setDomainEnv.sh</span>. You can include an environment variable (JAVA_VENDOR) definition either on top of that script or on the shell to modify the JVM that the server(s) should use.</p>

<p><span style="font-weight: bold;">Windows:</span><br />
<span style="font-family:courier new;">set JAVA_VENDOR=BEA</span></p>

<p><span style="font-weight: bold;">*nix:</span><br />
<span style="font-family:courier new;">export JAVA_VENDOR=BE</span><span style="font-family:courier new;">A</span></p>

<div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_i4Ubs4VYKUM/SRyw9RwXkVI/AAAAAAAABIo/ynPfUA_LYrY/s1600-h/JRockit1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 161px;" src="http://3.bp.blogspot.com/_i4Ubs4VYKUM/SRyw9RwXkVI/AAAAAAAABIo/ynPfUA_LYrY/s320/JRockit1.jpg" alt="" id="BLOGGER_PHOTO_ID_5268280230901420370" border="0" /></a>
</div>After this variable is set, the server(s) should start using JRockit JVM. You can find out the version of JVM used by the server on its log output or stdout. Some of the non-standard command-line options are not supported by all JVM vendors. So you might want to refer to JRockit's documentation for JRockit specific command-line options.

<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SRyw9oorVYI/AAAAAAAABIw/W4fWr0CXVgg/s1600-h/JRockit2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://4.bp.blogspot.com/_i4Ubs4VYKUM/SRyw9oorVYI/AAAAAAAABIw/W4fWr0CXVgg/s320/JRockit2.jpg" alt="" id="BLOGGER_PHOTO_ID_5268280237043176834" border="0" /></a></p>

<p>JRockit provides lot of tools that you can use to get more inside and realtime information from the applications running on JRockit JVM. These tools are packaged as JRockit Mission Control. I will write more about JRockit Mission Control and the tools included in that package on my future entries.</p>

<p>Oracle JRockit in not only for WebLogic Server and WebLogic Suite of products. You can use this for any Java application. JRockit is a certified and compatible with Java application complied using Sun SDK.</p>

<p>To find out more about JRockit go to the official FAQ page - <a href="http://www.oracle.com/technology/software/products/jrockit/FAQ.html">http://www.oracle.com/technology/software/products/jrockit/FAQ.html</a></p>

<p>To download JRockit go to - <a href="http://www.oracle.com/technology/software/products/jrockit/index.html">http://www.oracle.com/technology/software/products/jrockit/index.html</a></p>]]>
      
   </content>
</entry>

<entry>
   <title>Identity Management At Ease</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2008/10/identity_management_at_ease.html" />
   <id>tag:blogs.oracle.com,2008:/bala//324.8204</id>
   
   <published>2008-10-18T15:15:02Z</published>
   <updated>2008-10-18T15:20:23Z</updated>
   
   <summary>I always wonder how companies manage to keep user information in sync with their many IT resources. Whenever a new employee or contractor joins a company, his/her information must be inserted into all the systems such as Network, Email, Packaged...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Identity Management" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>I always wonder how companies manage to keep user information in sync with their many IT resources. Whenever a new employee or contractor joins a company, his/her information must be inserted into all the systems such as Network, Email, Packaged Applications such as Expenses, Human Resources, Travel, Procurement etc. The above mentioned systems a small subset of what companies might use. The system might have been either purchased or home grown. There needs to be a central place from where we should be able to insert the user information or provision the user information into all these systems. Creating a bunch of request to different administrator and having them individually deal with their system can be a logical approach. But keeping track of all the individual requests associated with the main request to provision the user to all the IT system and getting approvals when needed demands for an automated way in which this should be done. The same applies when an employee or contractor leaves the company. Their information should be de-provisioned or removed from all the systems. According to Gartner, the time IT spend in creating or removing user information constitutes around 10% where as dynamically modifying user privileges with resources constitutes the rest of 90%.</p>

<p>Oracle Identity Manager (OIM) is a key product in the Oracle Identity & Access Management Suite which is a part of Oracle's Fusion Middleware products. After knowing what OIM does, my mysteries were solved about Identity Management. OIM not only ease the provisioning of user across various systems but also helps companies to keep auditing information for compliance purpose. With growing privacy concern, meeting the regulatory and the privacy requirements are mandatory for many business such as Finance, Health care etc. OIM is a hot pluggable product built on J2EE which maintains a repository which can be synced with other systems such as corporate directories, operating systems, database etc. With OIM, user information can be provisioned, de-provisioned, passwords can be managed across systems. These tasks can either be automated with no manual intervention of can be assigned with approval work flows that provides control for managers and power users.</p>

<p><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_i4Ubs4VYKUM/SPn8HbLRC2I/AAAAAAAABG4/fsA88xX1yeY/s320/user.gif" alt="" id="BLOGGER_PHOTO_ID_5258511244416060258" border="0" /></p>

<p>For auditing and compliance reasons reports can be generated on access control and user information such as who has access to what and when etc. Also to ensure that only appropriate users have accessed information in enterprise OIM support a process called Attestation. Companies used to maintain mountains of documentation, reports in the form of paper files to keep track of security information in the past which is now eliminated to these niche Identity Management products.</p>

<p>For more information on OIM <a href="http://www.oracle.com/products/middleware/identity-management/identity-manager.html">visit Oracle's product page here</a>. I shall write more about OIM and the other products in Oracle Identity & Access Management Suite in the coming days.</p>]]>
      
   </content>
</entry>

<entry>
   <title><![CDATA[Local Proxy &amp; Federated Portals]]></title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2008/10/local_proxy_federated_portals.html" />
   <id>tag:blogs.oracle.com,2008:/bala//324.7934</id>
   
   <published>2008-10-03T18:38:02Z</published>
   <updated>2008-10-03T21:45:42Z</updated>
   
   <summary>I remember those days when Enterprise Java Bean (EJB) was a big buzz and every project want to use them. They used so much that the projects and applications that didn&apos;t demand an use for enterprise level services started implementing...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Portal" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>I remember those days when Enterprise Java Bean (EJB) was a big buzz and every project want to use them. They used so much that the projects and applications that didn't demand an use for enterprise level services started implementing them. I felt like that was another 'Gold Rush' people didn't want to miss. After a while everyone started realizing that EJBs are not for everyone. Also EJBs could only be accessed remotely when they originally released in EJB 1.0. But application server vendors provided their value addition by optimizing the local access to an EJB by by-passing RMI. This gave a hint to the standards committee and they included this as a feature - Local Interfaces in the later EJB Specification 2.0. So in short Best Practices started to emerge and now you can say the usage of EJBs in IT projects got streamlined.</p>

<p>You could be wondering why am I taking about EJBs when the title of this blog reads 'Local Proxy & Federated Portals'. Now coming to the portal paradigm, Web Services Remote Portlet is a specification from OASIS Technical Committees which defines a web service interface for interacting with presentation oriented web services. The portal application that provides their presentation oriented services for consumption by other portal servers is called as a Producer and the later is called as a Consumer. Typically, a consumer application does not include the business logic, data, or user interface parts of the portlet: instead it simply collects the user interface markup delivered from producers and presents that user interface to users. One can use interceptors to programmaticaly customize the data on the receiver end as well.</p>

<p>As WSRP is a web services protocol, communication between the producer and consumer happens over SOAP. This communication involves serialization and deserialization and also intermediate buffers. This is the case even when the producer and consumer are located on the same server (runtime). Oracle WebLogic Portal 10 includes a new feature Local Proxy Mode. You can enable local proxy support by setting to true in WEB-INF/wsrp-producer-registry.xml in the consumer web application which will optimize the communication by avoiding network I/O. If the consumer finds the producer deployed on the same server then it will avoid the SOAP over HTTP and will use the local proxy. This saves the overhead from serialization and deserialization of SOAP. Internally WebLogic Portal will use the same execute thread to invoke the producer using servlet API. When local proxy mode is enabled the remote proxy can also be used by remote consumers. Java portlets or third-party portlets deployed on the same server can be integrated without requiring any modifications. This reminded me of the local interface with EJBs which evolved when people started realizing that they are consuming EJBs more locally than remotely.</p>

<p>You can find more information on WSRP here - <a href="http://e-docs.bea.com/wlp/docs100/federation/Chap-Details.html#wp1021292">http://e-docs.bea.com/wlp/docs100/federation/Chap-Details.html#wp1021292</a>.<br />
For information on local proxy mode see here - <a href="http://e-docs.bea.com/wlp/docs100/federation/Chap-Best_Practices.html#wp1010714">http://e-docs.bea.com/wlp/docs100/federation/Chap-Best_Practices.html#wp1010714</a>.</p>]]>
      
   </content>
</entry>

<entry>
   <title>Encrypt the credentials when running WLST in interactive or script mode</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2008/09/encrypt_the_credentials_when_r.html" />
   <id>tag:blogs.oracle.com,2008:/bala//324.7756</id>
   
   <published>2008-09-25T02:33:10Z</published>
   <updated>2008-09-25T02:34:15Z</updated>
   
   <summary>One of the common request I hear from administrators is that they want to get away from providing user name and password in plain text when using WLST. WebLogic Server provides a way to encrypt the credentials for server start...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Admin Topics" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>One of the common request I hear from administrators is that they want to get away from providing user name and password in plain text when using WLST. WebLogic Server provides a way to encrypt the credentials for server start up. You can create a password file "<span style="font-family: courier new;">boot.properties</span>" (called as Boot Identity File) with plain text credentials in a folder named security under the server root directory. This file will be automatically detected during the server start up and the server will encrypt the information in this file for subsequent use. Until WebLogic Server 9.x this file should be placed under the DOMAIN folder. So servers sharing the same file system share the same boot identity file and cannot be configured to use different files.</p>

<p>This boot identity file can also be used by WLST only when started from the domain folder. This is mainly because the domain's password key (<span style="font-family: courier new;">SerializedSystemIni.dat</span>) is used to encrypt this file. If you are using WLST from a different location or from a remote machine to connect to the server or if you want to run WLST script you can use a different technique. You can use WLST to generate a User Configuration file which will have encrypted user name and password using storeUserConfig() command. A key file that will be used to encrypt the data will also get generated along with the user config file. The key file is important as it is required to decrypt the values back from the user config file. This is an online WLST command. So you should be connected to a running WebLogic Server or a Node Manager to issue this command.</p>

<p>When you use this command with no arguments the user configuration file for the current user will be generated within the current OS user's home folder.</p>

<p><br />
<span style="font-family: courier new;">wls:/testdomain/serverConfig>storeUserConfig()</span></p>

<p><br />
You can also specify the location and name for the key file and the userconfig file if you want them to be created elsewhere.</p>

<p><span style="font-family: courier new;">wls:/testdomain/serverConfig>storeUserConfig('/usr/home/user1/configfile.secure', '/usr/home/user1/keyfile.secure')</span></p>

<p><br />
If the files are stored with the default name (osusername-WebLogicConfig.properties &amp; osusername-WebLogicKey.properties) you can simply connect without specifying the username and password in the connect() command.</p>

<p><span style="font-family: courier new;">wls:/offline> connect(url='t3://host:port')</span></p>

<p><br />
If the files are stored in a different location or with a different name, then they can be passed as an argument to the connect() command.</p>

<p><span style="font-family: courier new;">wls:/offline> connect(userConfigFile='/usr/home/user1/configfile.secure', userKeyFile='/usr/home/user1/keyfile.secure', url='t3://host:port')</span></p>

<p><br />
No more plain text user name and password in when using WLST. <span style="font-weight: bold; font-style: italic;">Have a safe and secure scripting!</span></p>]]>
      
   </content>
</entry>

<entry>
   <title>Extend WLST with your own commands</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/bala/2008/08/extend_wlst_with_your_own_comm_1.html" />
   <id>tag:blogs.oracle.com,2008:/bala//324.6102</id>
   
   <published>2008-08-29T00:19:30Z</published>
   <updated>2008-08-29T00:27:21Z</updated>
   
   <summary>Do you want to add your own commands to the already rich set of WLST commands? In WebLogic 10.0 and higher, you can add your own commands by building your own *.py file and adding them to WL_HOME/common/wlst/lib folder. Any...</summary>
   <author>
      <name>Bala Kothandaraman</name>
      
   </author>
   
      <category term="Admin Topics" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/bala/">
      <![CDATA[<p>Do you want to add your own commands to the already rich set of WLST commands?</p>

<p>In WebLogic 10.0 and higher, you can add your own commands by building your own *.py file and adding them to <span style="font-family:courier new;">WL_HOME/common/wlst/lib</span> folder. Any *.py file added to this folder will be automatically compiled and imported by WLST when started on that machine. So the custom commands built as definitions inside these modules can be used by calling them on the respective module names.</p>

<p>If you have a <span style="font-family:courier new;">TestLib.py </span> stored under <span style="font-family:courier new;">WL_HOME/common/wlst/lib </span>folder:<br />
<pre><br />
<span style="font-family:courier new;">TestLib.py</span><br />
<span style="font-family:courier new;">----------</span><br />
<span style="font-family:courier new;">def testCmd():</span><br />
<span style="font-family:courier new;">    print 'This is a test command'</span></pre></p>

<p><br />
And if there is a definition called testCmd() defined in it then you can call it as follows:</p>

<p><span style="font-family:courier new;">wls:/offline>TestLib.testCmd()</span></p>

<p>What you waiting for? Go and add you command to WLST now.</p>]]>
      
   </content>
</entry>

</feed>
