Last week I wrote a post about creating MQQueues with jacl. However today I am moving to Jython. This is the new scripting languauge supported by the wsadmin. The following write-up helps you create a JDBC provider using Jython in 6 easy steps on the wsadmin console.
Pre requirements:
Following should be known to start using this tutorial.
1. How to launch the wsadmin with Jython enabled.
Where will I find the wsadmin?
It is typically placed in the bin directory of your server.
In my case its lying in my RAD installation directory as
../Rational/SDP/6.0/runtimes/base_v6/bin
To invoke the wasadmin, just open your terminal and move to the bin dir where you can simply call it by typing wsadmin -lang jython. By doing so you would be invoking the default profile. if you want to specify the profile then use the switch -profileName YOURPROFILENAME
You can either paste the commands step by step or store the whole code listing in one file like DataSources.py. This means you can run this with wsadmin by specifying the -f switch.
After the wsadmin console is launched we can now move to creating the provider step by step.
STEP 1.
Identify classpath for the provider. This is a path to the jar files that need to be used by the provider. In our case its a jdbc dirver for oracle.
driverPath = 'C:\lib\ojdbc14.jar'STEP 2.
Identify the node and cell that will hold this provider. Node/Cell is how websphere is organized. As the Provider will be created inside a node we need to know which node we are working with.
cellName=AdminControl.getCell() nodeName=AdminControl.getNode() node = AdminConfig.getid('/Cell:%s/Node:%s/' % (cellName,nodeName))
In the code above first we get the NodeName and CellName of the current connected server and then take the reference of it as node.
STEP 3.
Specify a template, In our case we have taken an ‘Oracle JDBC Driver (XA)’ template.
The following command will list the template for the provider specified and store it in a variable ‘providerTemplate’
providerTemplate=AdminConfig.listTemplates('JDBCProvider', 'Oracle JDBC Driver (XA)')
STEP 4.
The name for our provider. It could be any name you want to give your provider.
providerName = ['name', 'Oracle JDBC Driver (XA)']
Implementation class and classpath for driver.
It is important to give the implementation class for our provider. In some cases they can be different in ours we use the default one.
implClassName = ['implementationClassName', 'oracle.jdbc.xa.client.OracleXADataSource']
STEP 5.
The following code will just put all the above variables into a form expected by wsadmin as a temp variable jdbcAttrs.
classpath = ['classpath',driverPath] jdbcAttrs = [providerName, implClassName,classpath]
STEP 6.
Now is the time to create the provider. and the following will just do that. It passes the type of the provider, the node ref, the jdbcAttrs created in step 5 and the template to be used to create the provider.
provider = AdminConfig.createUsingTemplate('JDBCProvider', node, jdbcAttrs, providerTemplate) AdminConfig.save()
This is pretty much it. You should now be able to see the provider in the AdminConsole.
Complete code listing is as follows
driverPath = 'C:\lib\ojdbc14.jar' cellName=AdminControl.getCell() nodeName=AdminControl.getNode() providerTemplate=AdminConfig.listTemplates('JDBCProvider', 'Oracle JDBC Driver (XA)') node = AdminConfig.getid('/Cell:%s/Node:%s/' % (cellName,nodeName)) providerName = ['name', 'Oracle JDBC Driver (XA)'] implClassName = ['implementationClassName', 'oracle.jdbc.xa.client.OracleXADataSource'] classpath = ['classpath',driverPath] jdbcAttrs = [providerName, implClassName,classpath] provider = AdminConfig.createUsingTemplate('JDBCProvider', node, jdbcAttrs, providerTemplate) AdminConfig.save()
Tags: Administrator, HOWTO, IBM, Java, jdbc, jython, Programming, scripting, sysadmin, websphere, wsadmin
Today after along break I would jump right on to one of the interesting topics in my den these days.
One of my friends was lately troubled with doing some SVN stuff like merging etc. And a lot of people will agree with me on their first experiences.
I think.
While Automated builds take a lot of our time I thought I could plug in with some automated merging and a few other tasks. Its hard to go over all of that in one post but I will try putting in some basic stuff to get us started.
I call it the SVN Wrap.
Step 1.
Create a simple script file for wrapping svn and our environment.
A simple bat script could look like the following
@echo off svn %*
However some people might want to add some environment variables to it. And that is where the strength of the this file comes in. You can tailor the environment dynamically!
e.g.
set LC_ALL=C set SVN_HOME=svn-win32-1.4.6 set PATH=%SVN_HOME%\bin;%PATH%;
FYI: By setting LC_ALL I am telling the system I disregard the default locale. Its just used as an example here. for more information refer to the svnbook at http://svnbook.red-bean.com/
Step 2.
Create the build.xml
It doesnt get simpler then this.
I have created a project with the name CI-Test
<project name="CI-Test" default="status" basedir="."> <description> This is a POC for SVN Wrap. </description> </project>
Importantly I am setting a property local.branch so that I can tell svn where my code has been checked out locally.
And finally the target that will take a status of the branch. for more details on the status command you could go here.
In general this target will give a general overview of the files and thier state at the moment.
<target name="status"> <echo message="Following is the status for this tree."/> <echo message="output is logged here: status.out" /> <exec dir="${local.branch}" executable="ci-svn.bat" output="status.out"> <arg line="status"/> </exec> </target>
With in the target there are a few echo commands but the key construct is the exec.
The exec is going to do the following
dir=”${local.branch}” – would meant execute the command in this directory
executable=”ci-svn.bat” – Identifies the executable
and finally the output attribute to show where the output of this activity goes.
The following line will pass the parameters to the executable
< arg line=”status” />
And in this case its sending a status command to svn.
For more details on exec goto. http://ant.apache.org/manual/
Now I would presume both these files in saved in one direcotry as
1. ci-svn.bat
2. build.xml
To run this simply goto your command console and once in the same directory execute by running
ant
It is assumed that all paths to java,ant and svn are set on your console or system.
As an output you should be able to see a status.out in the same directory from where you executed ant.
Hopefully this should get you started with doing some bit of svn commands from ant. And that just opens a lot of more possibilities in your build environment.
The complete code listing of the build file is as follows.
<project name="CI-Test" default="status" basedir="."> <description> This is a POC for SVN Wrap. </description> <property name="local.branch" value="C:\branches\my-branch"/> <target name="status"> <echo message="Following is the status for this tree."/> <echo message="output is logged here: status.out" /> <exec dir="${local.branch}" executable="ci-svn.bat" output="status.out"> <arg line="status"/> </exec> </target> </project>
Tags: ant, automation, build, HOWTO, Java, Programming, scripting, SVN
Yesterday I wrote an article about creating and configuring the MQQueueConnectionFactory with the JACL on the wsadmin console. The other half of the article that was left out was to create the queues also.
The world looks pretty much the same today and my /etc/profile doesnt seemed to have been sourced again. Good we dont need a restart.
You would find some of the steps to be similar and that is because we are running on the same configs.
Step 1.
Identify the Provider for your Queue. By default this is the name for it. If you have created a new provider with a different name then specify it here.
set tmp1 "WebSphere MQ JMS Provider"
Step 2.
Now you would need to find the CELL NAME and the NODE NAME of your server
A typical location to my websphere profile’s Node configuration file is as follows
C:\Programs\IBM\Rational\SDP\6.0\runtimes\base_v6\profiles\test_wsp\config\cells\BNode05Cell\nodes\BNode05
The cell name in this location is after \cells\ i.e. BNode05Cell
And the node name is at the end after \nodes\ i.e. BNode05
set newjmsp [$AdminConfig getid /Cell:CELLNAMECell/Node:NODENAME/JMSProvider:$tmp1/]
Step 3.
You would now need to set the attributes that go into the queue.
To see all the attributes you can simply run the following command
$AdminConfig [required|attributes] MQQueue
i.e. required or attributes
The attributes that I will be setting in the following commands are
name, jndiName, baseQueueName, targetClient
set name [list name NAME] set jndi [list jndiName jms/jndiName] set baseQN [list baseQueueName BASEQUEUENAME] set targetclient [list targetClient MQ]
You can see in the above example the target client is set to MQ it can be JMS based on your configuration.
Step 4.
Now set all parameters in one string so that they can be passed to the command as one.
set mqqAttrs [list $name $jndi $baseQN $targetclient]
Step 5.
Now to create the MQQueue use the following command. This will add the Queue to the node and cell mentioned earlier in step 2.
$AdminConfig create MQQueue $newjmsp $mqqAttrs
Once it is created it is not saved and only stays in the current session. So to save it run the following command. And you should be all set.
$AdminConfig saveYou can alternatively also save this script in a file on your local system. And run it by passing it to the wasadmin. Follwing is a sample command.
wsadmin -profileName test_wsp -f $SCRIPT_FILENAME_LOCATION$
‘Complete code listing is as follows.
set tmp1 "WebSphere MQ JMS Provider" set newjmsp [$AdminConfig getid /Cell:HOSTNAMENode04Cell/Node:HOSTNAMENode04/JMSProvider:$tmp1/] set name [list name Q.REPLY] set jndi [list jndiName jms/Q.REPLY] set baseQN [list baseQueueName Q.SYSTEM] set targetclient [list targetClient MQ] set mqqAttrs [list $name $jndi $baseQN $targetclient] $AdminConfig create MQQueue $newjmsp $mqqAttrs $AdminConfig save
Tags: Administrator, HOWTO, IBM, jacl, Java, MQ, MQQueue, Programming, scripting, sysadmin, websphere, wsadmin