<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5532809073984928150</id><updated>2012-01-26T11:25:27.979+03:00</updated><category term='sonar'/><category term='Attachment'/><category term='active directory'/><category term='2nd level cache'/><category term='Oracle 10g'/><category term='DataService'/><category term='JODConverter'/><category term='SOA'/><category term='OAS'/><category term='WS-I profile'/><category term='ldap'/><category term='YourKit'/><category term='Ibatis'/><category term='JCA'/><category term='nginx'/><category term='ORM'/><category term='second level(L2) cache'/><category term='Database change notification'/><category term='Cluster'/><category term='MQAdaptor'/><category term='weblogic server 10.3.0.0'/><category term='jax-ws'/><category term='Mac os'/><category term='code review'/><category term='hibernate'/><category term='Continuum'/><category term='MTOM'/><category term='ant'/><category term='Certification'/><category term='OSB'/><category term='Open office org'/><category term='SCA'/><category term='Maven2'/><category term='Decision services'/><category term='JRebel'/><category term='BPM'/><category term='Tuscany'/><category term='Coherence'/><category term='proxy authentication'/><category term='BPEL'/><category term='FDI'/><category term='log4j'/><category term='Hazelcast'/><category term='Webservice'/><category term='JMX'/><category term='Apache CXF'/><category term='Incremental plugin'/><category term='WS-I'/><category term='PAPI'/><category term='weblogic server 10.3.2.0'/><category term='MQSAgent2'/><category term='Archiva 1.3.3'/><category term='Ilog Jrules'/><category term='MDB'/><title type='text'>My workspace</title><subtitle type='html'>All about my Daily researches and developments.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-5799891836289212373</id><published>2012-01-26T11:24:00.002+03:00</published><updated>2012-01-26T11:25:27.989+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><title type='text'>Configure Nginx to working with WebLogic 12C</title><content type='html'>&lt;a href="http://nginx.org/"&gt;Nginx &lt;/a&gt;is a free, open-source, high-performance HTTP server and reverse proxy server, which can be use with &lt;a href="http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main-097127.html"&gt;WebLogic application server&lt;/a&gt; to cache static page. It's also able to load balancing between servers. However nginx default proxy pass configuration not working properly with WebLogic server, because WebLogic server reset his http header which changes host and port. Here is the configuration for Ngnix proxy pass:&lt;pre class="brush: xml"&gt; &lt;br /&gt;        proxy_cache_path usr/apps/nignx/nginx-1.1.12/cache/ levels=1:2 keys_zone=data-cache:8m max_size=1000m inactive=600m;&lt;br /&gt; proxy_temp_path usr/apps/nignx/nginx-1.1.12/cache/temp; &lt;br /&gt;&lt;br /&gt; upstream osbapp{&lt;br /&gt;   server 192.168.52.101:7001;&lt;br /&gt;   server 192.168.52.101:7002;&lt;br /&gt;        }&lt;br /&gt;        server {&lt;br /&gt;          listen       8001;&lt;br /&gt;          server_name  192.168.52.103;&lt;br /&gt;&lt;br /&gt;  location / {&lt;br /&gt;   proxy_set_header Host $http_host; # set the parameter for fine granned header&lt;br /&gt;   proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;   proxy_store off;&lt;br /&gt;   proxy_redirect off;&lt;br /&gt;   proxy_buffering off;  &lt;br /&gt;   #cache&lt;br /&gt;   proxy_cache data-cache;&lt;br /&gt;   proxy_cache_valid 200 302 60m;&lt;br /&gt;   proxy_pass  http://osbapp; &lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-5799891836289212373?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/5799891836289212373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=5799891836289212373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5799891836289212373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5799891836289212373'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2012/01/configure-nginx-to-working-with.html' title='Configure Nginx to working with WebLogic 12C'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-1353865288002104785</id><published>2011-05-28T18:14:00.002+03:00</published><updated>2011-06-04T19:43:30.227+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='sonar'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code review with Sonar</title><content type='html'>Last week &lt;a href="http://www.sonarsource.org/"&gt;Sonar&lt;/a&gt; announced their new version 2.8 with a few new features and bug fixes. The main new feature is the support of custom code review. &lt;a href="http://www.atlassian.com/software/crucible/CrucibleDownloadCenter.jspa"&gt;Crucible&lt;/a&gt; and &lt;a href="http://www.reviewboard.org/"&gt;Review board&lt;/a&gt; are another alternative code review system. Sonar come across with code coverage and review in one system, which is easy to maintain with small effort. &lt;br /&gt;As usual sonar administrator must create users to assign tasks and collaborations. Sonar provide &lt;a href="http://docs.codehaus.org/display/SONAR/LDAP+Plugin"&gt;LDAP plugin&lt;/a&gt; which enables the delegation of Sonar authentication to an external system. Currently LDAP plugin supports LDAP and Active directory. In our corporation we are using active directory and first of all i tried to configure the LADP plugin. LDAP plugin wiki fully describes the installation of the plugin with LDAP system but poorly with AD. With some effort with my boss we were able to configure the plugin with our AD system. Follows i am sharing the configuration:&lt;br /&gt;&lt;pre class="brush: xml"&gt;#-------------------&lt;br /&gt;# Sonar LDAP Plugin&lt;br /&gt;#-------------------&lt;br /&gt;&lt;br /&gt;# IMPORTANT : before activation, make sure that one Sonar administrator is defined in the external system&lt;br /&gt;# Activates the plugin. Leave blank or comment out to use default sonar authentication.&lt;br /&gt;sonar.authenticator.class: org.sonar.plugins.ldap.LdapAuthenticator&lt;br /&gt;&lt;br /&gt;# Ignore failure at startup if the connection to external system is refused.&lt;br /&gt;# Users can browse sonar but not log in as long as the connection fails.&lt;br /&gt;# When set to true, Sonar will not start if connection to external system fails.&lt;br /&gt;# Default is false.&lt;br /&gt;#sonar.authenticator.ignoreStartupFailure: true&lt;br /&gt;&lt;br /&gt;# Automatically create users (available since Sonar 2.0).&lt;br /&gt;# When set to true, user will be created after successful authentication, if doesn't exists.&lt;br /&gt;# The default group affected to new users can be defined online, in Sonar general settings. The default value is "sonar-users".&lt;br /&gt;# Default is false.&lt;br /&gt;#sonar.authenticator.createUsers: true&lt;br /&gt;&lt;br /&gt;# (omit if you use autodiscovery) URL of the LDAP server.&lt;br /&gt;# If you are using ldaps, then you should install server certificate into java truststore.&lt;br /&gt;# eg. ldap://localhost:10389&lt;br /&gt;ldap.url: ldap://mycompany.com&lt;br /&gt;&lt;br /&gt;# (optional) Distinguished Name (DN) of the root node in LDAP from which to search for users,&lt;br /&gt;# eg. “ou=users,o=mycompany”&lt;br /&gt;ldap.baseDn: dc=mycompany,dc=com&lt;br /&gt;&lt;br /&gt;# (optional) Bind DN is the username of an LDAP user to connect (or bind) with.&lt;br /&gt;# This is a Distinguished Name of a user who has administrative rights,&lt;br /&gt;# eg. “cn=sonar,ou=users,o=mycompany”. Leave blank for anonymous access to the LDAP directory.&lt;br /&gt;ldap.bindDn: ADADMIN&lt;br /&gt;&lt;br /&gt;# (optional) Bind Password is the password of the user to connect with.&lt;br /&gt;# Leave blank for anonymous access to the LDAP directory.&lt;br /&gt;ldap.bindPassword: ADADMIN_PASSWORD&lt;br /&gt;&lt;br /&gt;# Login Attribute is the attribute in LDAP holding the user’s login.&lt;br /&gt;# Default is ‘uid’. Set ’sAMAccountName’ for Microsoft Active Directory&lt;br /&gt;ldap.loginAttribute: sAMAccountName&lt;br /&gt;&lt;br /&gt;# Object class of LDAP users.&lt;br /&gt;# Default is 'inetOrgPerson'. Set ‘user’ for Microsoft Active Directory.&lt;br /&gt;ldap.userObjectClass: user&lt;br /&gt;&lt;br /&gt;# (advanced option) See http://java.sun.com/products/jndi/tutorial/ldap/security/auth.html&lt;br /&gt;# Default is 'simple'. Possible values: 'simple', 'CRAM-MD5', 'DIGEST-MD5', 'GSSAPI'.&lt;br /&gt;ldap.authentication: simple&lt;br /&gt;&lt;br /&gt;# (advanced option)&lt;br /&gt;# See&lt;br /&gt;# http://java.sun.com/products/jndi/tutorial/ldap/security/digest.html&lt;br /&gt;# http://java.sun.com/products/jndi/tutorial/ldap/security/crammd5.html&lt;br /&gt;# eg. example.org&lt;br /&gt;#ldap.realm:&lt;br /&gt;&lt;br /&gt;# (advanced option) Context factory class.&lt;br /&gt;# Default is 'com.sun.jndi.ldap.LdapCtxFactory'.&lt;br /&gt;#ldap.contextFactoryClass: com.sun.jndi.ldap.LdapCtxFactory&lt;br /&gt;&lt;/pre&gt;Configuration may vary on your AD system, strongly guess system administrator may help in this issue. &lt;br /&gt;For now in the time of the authentication, Sonar will ignore the password from it's own system and delegate the username and password to the active directory for authentication. Also sonar administrator must configure the role for each user independently.&lt;br /&gt;After installing plugin we are ready to go for code review. On the violations tab we should see the review link as follows:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SP2VDxypvX0/TeEOQn_sAXI/AAAAAAAAAYY/tUHE8GxMhCA/s1600/Screen+shot+2011-05-28+at+7.00.11+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://2.bp.blogspot.com/-SP2VDxypvX0/TeEOQn_sAXI/AAAAAAAAAYY/tUHE8GxMhCA/s320/Screen+shot+2011-05-28+at+7.00.11+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now we can add comments on violations, by default task will assign to the author of the comment:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3h0fAI6GBvY/TeEO3kfoVDI/AAAAAAAAAYc/9dfkgCgSiZ8/s1600/Screen+shot+2011-05-28+at+7.02.34+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="114" src="http://2.bp.blogspot.com/-3h0fAI6GBvY/TeEO3kfoVDI/AAAAAAAAAYc/9dfkgCgSiZ8/s320/Screen+shot+2011-05-28+at+7.02.34+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;After creating the task we also can reassign the task to another user as follows:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OgKB3mZyqK8/TeEPR_JnOlI/AAAAAAAAAYg/8ObrYUJYyIc/s1600/Screen+shot+2011-05-28+at+7.05.11+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://3.bp.blogspot.com/-OgKB3mZyqK8/TeEPR_JnOlI/AAAAAAAAAYg/8ObrYUJYyIc/s320/Screen+shot+2011-05-28+at+7.05.11+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;All the reviews you can get from the dash board&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MndraA3cULE/TeEPxz9jKyI/AAAAAAAAAYk/8cknhG-V8AE/s1600/Screen+shot+2011-05-28+at+7.06.47+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/-MndraA3cULE/TeEPxz9jKyI/AAAAAAAAAYk/8cknhG-V8AE/s320/Screen+shot+2011-05-28+at+7.06.47+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;For more screen shots you should visit this &lt;a href="http://www.sonarsource.org/sonar-2-8-in-screenshots/"&gt;link (sonar-2-8-in-screenshots)&lt;/a&gt;.&lt;br /&gt;One shortage of the sonar code review is the lack of notification, when any comment or task assign to the users. I believe that, in future release sonar will add this notification functionality in code review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-1353865288002104785?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/1353865288002104785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=1353865288002104785' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1353865288002104785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1353865288002104785'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/05/code-review-with-sonar.html' title='Code review with Sonar'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-SP2VDxypvX0/TeEOQn_sAXI/AAAAAAAAAYY/tUHE8GxMhCA/s72-c/Screen+shot+2011-05-28+at+7.00.11+PM.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-1222493411802673490</id><published>2011-05-25T20:24:00.006+03:00</published><updated>2011-06-04T19:48:59.396+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Incremental plugin'/><title type='text'>Apache maven incremental build</title><content type='html'>Apache &lt;a href="http://maven.apache.org/"&gt;maven&lt;/a&gt; is one of the popular tool for building and managing java projects. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. &lt;br /&gt;However when you have projects with multiple modules, it follows some issue when you compiling your project. One of them is incremental building, which means when you updates your project from the version control, you have to build the entire system by command mvn clean install. Consider the following maven project structure:&lt;br /&gt;IncrementalBuild&lt;br /&gt;|_ _ test-api&lt;br /&gt;|_ _ test-api-impl&lt;br /&gt;|_ _ test-donothing&lt;br /&gt;where module test-api-impl dependent on module test-api. Whenever we will make some change on module test-api, we have to recompile and build the module test-api-impl.&lt;br /&gt;If we will enter the command &lt;b&gt;mvn install&lt;/b&gt; module test-api-impl will not get the updated version from the module test-api. You have to run command mvn clean install which will rebuild the entire project. Sometime it's time consuming and just unnecessary. You can download the project from &lt;a href="http://code.google.com/p/maven-incremental-test/source/checkout"&gt;here&lt;/a&gt; and check your self.&lt;br /&gt;Apache maven currently doesn't support for the incremental build even on version 3.0.3.&lt;br /&gt;But there is a plugin called &lt;a href="http://maven-incremental-build.java.net/site/usage.html"&gt;Maven-Incremental build plugin&lt;/a&gt;, which can build project incrementally. &lt;br /&gt;Just add the following plugin in the root pom file and you are ready for go&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt; &amp;lt;groupId&amp;gt;net.java.maven-incremental-build&amp;lt;/groupId&amp;gt;&lt;br /&gt; &amp;lt;artifactId&amp;gt;incremental-build-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;executions&amp;gt;&lt;br /&gt;  &amp;lt;execution&amp;gt;&lt;br /&gt;   &amp;lt;goals&amp;gt;&lt;br /&gt;   &amp;lt;goal&amp;gt;incremental-build&amp;lt;/goal&amp;gt;&lt;br /&gt;   &amp;lt;/goals&amp;gt;&lt;br /&gt;  &amp;lt;/execution&amp;gt;&lt;br /&gt; &amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now you can run mvn install without goal clean and the project will detects the updated code and recompile modules if need.  &lt;br /&gt;UPD:- Note that, following page http://maven-incremental-build.java.net/site/usage.html contains incorrect groupId on example "net.java.incremental-build-plugin" which will not uploaded on central maven repository.&lt;br /&gt;Resource:&lt;br /&gt;1) &lt;a href="http://harshana05.blogspot.com/2011/05/apache-maven-incremental-build-support.html"&gt;Apache Maven Incremental Build support for WSO2 Carbon&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://maven-incremental-build.java.net/site/index.html"&gt;Apache maven incremental plugin mojo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-1222493411802673490?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/1222493411802673490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=1222493411802673490' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1222493411802673490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1222493411802673490'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/05/apache-maven-incremental-build.html' title='Apache maven incremental build'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-8950130165645553183</id><published>2011-04-16T11:38:00.002+03:00</published><updated>2011-06-04T19:53:08.307+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sonar'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><title type='text'>Analyse with ANT - a sonar way</title><content type='html'>After the Javaone conference in Moscow, i have found some free hours to play with &lt;a href="http://www.sonarsource.org/"&gt;Sonar&lt;/a&gt;. Here is a quick steps to start analyzing with ANT projects. Sonar provides &lt;a href="http://docs.codehaus.org/display/SONAR/Analyse+with+ANT"&gt;Analyze with ANT&lt;/a&gt; document to play around with ANT, i have just modify some parts.&lt;br /&gt;Here is it.&lt;br /&gt;1) &lt;a href="http://repository.codehaus.org/org/codehaus/sonar-plugins/sonar-ant-task/1.0/sonar-ant-task-1.0.jar"&gt;Download&lt;/a&gt; the Sonar Ant Task and put it in your ${ANT_HOME}/lib directory&lt;br /&gt;2) Modify your ANT build.xml as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version = '1.0' encoding = 'windows-1251'?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;project name="abc" default="build" basedir="."&amp;gt;&lt;br /&gt; &amp;lt;!-- Define the Sonar task if this hasn't been done in a common script --&amp;gt;&lt;br /&gt; &amp;lt;taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"&amp;gt;&lt;br /&gt;  &amp;lt;classpath path="E:\java\ant\1.8\apache-ant-1.8.0\lib" /&amp;gt;&lt;br /&gt; &amp;lt;/taskdef&amp;gt;&lt;br /&gt; &amp;lt;!-- Out-of-the-box those parameters are optional --&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.jdbc.url" value="jdbc:oracle:thin:@xyz/sirius.xyz" /&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.jdbc.driverClassName" value="oracle.jdbc.driver.OracleDriver" /&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.jdbc.username" value="sonar" /&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.jdbc.password" value="sonar" /&amp;gt;&lt;br /&gt; &amp;lt;!-- Additional Sonar configuration (PMD need 1.5 when using annotations)--&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.java.source" value="1.5"/&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.java.target" value="1.5"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- SERVER ON A REMOTE HOST --&amp;gt;&lt;br /&gt; &amp;lt;property name="sonar.host.url" value="http://sunny.fors.ru/sonar" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;property name="ear.file" value="konfiskat.ear"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;property file="build.properties"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;property name="build.dir"    value="build"/&amp;gt;&lt;br /&gt; &amp;lt;property name="classes.dir"  value="${build.dir}/classes"/&amp;gt;&lt;br /&gt; &amp;lt;property name="classes2.dir" value="classes"/&amp;gt;&lt;br /&gt; &amp;lt;property name="deploy.dir"   value="deploy"/&amp;gt;&lt;br /&gt; &amp;lt;property name="doc.dir"      value="docs"/&amp;gt;&lt;br /&gt; &amp;lt;property name="jar.dir"      value="${build.dir}/jar"/&amp;gt;&lt;br /&gt; &amp;lt;property name="lib.dir.1"    value="lib"/&amp;gt;&lt;br /&gt; &amp;lt;property name="lib.dir.2"    value="${lib.common.dir}"/&amp;gt;&lt;br /&gt; &amp;lt;property name="lib.dir.3"    value="common_lib"/&amp;gt;&lt;br /&gt; &amp;lt;property name="lib.dir.4"    value="${jdev.libs.dir}"/&amp;gt;&lt;br /&gt; &amp;lt;property name="src.dir"      value="src"/&amp;gt;&lt;br /&gt; &amp;lt;property name="config.dir"   value="${src.dir}/META-INF"/&amp;gt;&lt;br /&gt; &amp;lt;property name="temp.dir"   value="${src.dir}/temp"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;path id="classpath"&amp;gt;&lt;br /&gt;  &amp;lt;fileset dir="${lib.dir.3}" includes="**/*.jar"/&amp;gt;&lt;br /&gt;  &amp;lt;fileset dir="${lib.dir.2}" includes="**/com.ibm.mq.jar, **/jboss-j2ee.jar"/&amp;gt;&lt;br /&gt;  &amp;lt;fileset dir="${lib.dir.4}" includes="**/*.jar"/&amp;gt;&lt;br /&gt; &amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;path id="srcpath"&amp;gt;&lt;br /&gt;  &amp;lt;pathelement location="${src.dir}"/&amp;gt;&lt;br /&gt; &amp;lt;/path&amp;gt;&lt;br /&gt; &amp;lt;!-- Add the target --&amp;gt;&lt;br /&gt; &amp;lt;target name="sonar"&amp;gt;&lt;br /&gt;  &amp;lt;!-- The workDir directory is used by Sonar to store temporary files --&amp;gt;&lt;br /&gt;  &amp;lt;sonar:sonar workDir="${temp.dir}" key="org.example:example" version="0.1-SNAPSHOT" xmlns:sonar="antlib:org.sonar.ant"&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- source directories (required) --&amp;gt;&lt;br /&gt;   &amp;lt;sources&amp;gt;&lt;br /&gt;    &amp;lt;path location="${src.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;/sources&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- binaries directories, which contain for example the compiled Java bytecode (optional) --&amp;gt;&lt;br /&gt;   &amp;lt;binaries&amp;gt;&lt;br /&gt;    &amp;lt;path location="${classes.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;/binaries&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- path to libraries (optional). These libraries are for example used by the Java Findbugs plugin --&amp;gt;&lt;br /&gt;   &amp;lt;libraries&amp;gt;&lt;br /&gt;    &amp;lt;path refid="classpath"/&amp;gt;&lt;br /&gt;   &amp;lt;/libraries&amp;gt;&lt;br /&gt;  &amp;lt;/sonar:sonar&amp;gt;&lt;br /&gt; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="clean"&amp;gt;&lt;br /&gt; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="init" depends="clean"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="compile" depends="init"&amp;gt;&lt;br /&gt;  &amp;lt;mkdir dir="${classes.dir}"/&amp;gt;&lt;br /&gt;  &amp;lt;javac destdir="${classes.dir}"&lt;br /&gt;    classpathref="classpath"&lt;br /&gt;    debug="on"&amp;gt;&lt;br /&gt;   &amp;lt;src refid="srcpath"/&amp;gt;&lt;br /&gt;  &amp;lt;/javac&amp;gt;&lt;br /&gt; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="doc" depends="compile"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="build" depends="doc"&amp;gt;&lt;br /&gt;  &amp;lt;mkdir dir="${jar.dir}"/&amp;gt;&lt;br /&gt;  &amp;lt;jar destfile="${jar.dir}/toOAS.jar"&amp;gt;&lt;br /&gt;   &amp;lt;manifest&amp;gt;&lt;br /&gt;    &amp;lt;attribute name="Class-Path" value="com.ibm.mq.jar xercesImpl.jar"/&amp;gt;&lt;br /&gt;   &amp;lt;/manifest&amp;gt;&lt;br /&gt;   &amp;lt;metainf dir="${config.dir}"&amp;gt;&lt;br /&gt;    &amp;lt;include name="ejb-jar.xml"/&amp;gt;&lt;br /&gt;    &amp;lt;include name="orion-ejb-jar.xml"/&amp;gt;&lt;br /&gt;   &amp;lt;/metainf&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${classes.dir}"&amp;gt;&lt;br /&gt;    &amp;lt;include name="**/*.*"/&amp;gt;&lt;br /&gt;   &amp;lt;/fileset&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${src.dir}"&amp;gt;&lt;br /&gt;    &amp;lt;include name="*.properties"/&amp;gt;&lt;br /&gt;   &amp;lt;/fileset&amp;gt;&lt;br /&gt;  &amp;lt;/jar&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;mkdir dir="${deploy.dir}"/&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;echo file="${jar.dir}/application.xml"&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt; &amp;lt;application&amp;gt; &amp;lt;display-name&amp;gt;ReadMQ&amp;lt;/display-name&amp;gt; &amp;lt;module&amp;gt; &amp;lt;ejb&amp;gt;toOAS.jar&amp;lt;/ejb&amp;gt; &amp;lt;/module&amp;gt; &amp;lt;/application&amp;gt;]]&amp;gt;&lt;br /&gt;  &amp;lt;/echo&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;ear destfile="${deploy.dir}/${ear.file}"&lt;br /&gt;    appxml="${jar.dir}/application.xml"&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${jar.dir}" includes="*.jar"/&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${lib.dir.2}"&amp;gt;&lt;br /&gt;    &amp;lt;include name="com.ibm.mq.jar"/&amp;gt;&lt;br /&gt;    &amp;lt;include name="xercesImpl.jar"/&amp;gt;&lt;br /&gt;   &amp;lt;/fileset&amp;gt;&lt;br /&gt;  &amp;lt;/ear&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;target name="all" depends="build"/&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-8950130165645553183?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/8950130165645553183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=8950130165645553183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8950130165645553183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8950130165645553183'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/04/analyse-with-ant-sonar-way.html' title='Analyse with ANT - a sonar way'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-652185012345034562</id><published>2011-04-13T19:49:00.001+03:00</published><updated>2011-04-13T19:50:42.436+03:00</updated><title type='text'>Oracle java one presentation of Continuous integration</title><content type='html'>&lt;div id="__ss_7616244" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/shamim_ru/java-one-prensentation-ci" title="Java one prensentation CI"&gt;Java one prensentation CI&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/7616244" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/shamim_ru"&gt;shamim&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-652185012345034562?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/652185012345034562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=652185012345034562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/652185012345034562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/652185012345034562'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/04/oracle-java-one-presentation-of.html' title='Oracle java one presentation of Continuous integration'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4676409859006131457</id><published>2011-03-08T16:52:00.006+02:00</published><updated>2011-06-04T19:54:35.817+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WS-I'/><category scheme='http://www.blogger.com/atom/ns#' term='Webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='WS-I profile'/><title type='text'>A quick fix of WS-I BP2703 assertion</title><content type='html'>A few days ago we have got WS-I conformance report from our third party client that says our web service is not compliant with WS-I guidelines. The report summary was failed with the following error:&lt;br /&gt;Assertion: BP2703&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-zDqUjGPg_Fs/TXYyPOBBBQI/AAAAAAAAAYU/XqFjguNJydg/s1600/Screen+shot+2011-03-08+at+4.41.47+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="https://lh4.googleusercontent.com/-zDqUjGPg_Fs/TXYyPOBBBQI/AAAAAAAAAYU/XqFjguNJydg/s320/Screen+shot+2011-03-08+at+4.41.47+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Our team member quick check the WS-I compliance in Jdeveloper and can't reproduce the bug, but with soapUI gave the result with the assertion failed. Here is the WSDL of the web service.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt?xml version="1.0" encoding="utf-8" ?&amp;gt&lt;br /&gt;&amp;lt;wsdl:definitions &lt;br /&gt;    xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailerService.wsdl" &lt;br /&gt;    targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailerService.wsdl" &lt;br /&gt;    xmlns:retailer="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" &lt;br /&gt;    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" &lt;br /&gt;    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&lt;br /&gt;    xmlns="http://schemas.xmlsoap.org/wsdl/" &amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;wsdl:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" &lt;br /&gt;      location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;wsdl:service name="RetailerService"&amp;gt;&lt;br /&gt;    &amp;lt;wsdl:port name="LocalRetailerPort" binding="retailer:RetailerSoapBinding"&amp;gt&lt;br /&gt;      &amp;lt;soap:address location="http://localhost:9080/Retailer/services/Retailer"/&amp;gt;&lt;br /&gt;    &amp;lt;/wsdl:port&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;/wsdl:service&amp;gt&lt;br /&gt;&amp;lt;wsp:Policy wsu:Id="UsernameToken" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy/ws-policy.xsd" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"&amp;gt;&lt;br /&gt;  &amp;lt;wsp:ExactlyOne&amp;gt;&lt;br /&gt;   &amp;lt;wsp:All&amp;gt;&lt;br /&gt;    &amp;lt;sp:TransportBinding/&amp;gt;&lt;br /&gt;    &amp;lt;sp:SupportingTokens&amp;gt;&lt;br /&gt;     &amp;lt;wsp:Policy&amp;gt;&lt;br /&gt;      &amp;lt;sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"/&amp;gt;&lt;br /&gt;     &amp;lt;/wsp:Policy&amp;gt;&lt;br /&gt;    &amp;lt;/sp:SupportingTokens&amp;gt;&lt;br /&gt;   &amp;lt;/wsp:All&amp;gt;&lt;br /&gt;  &amp;lt;/wsp:ExactlyOne&amp;gt;&lt;br /&gt; &amp;lt;/wsp:Policy&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;If we carefully check the error, we have to get that wsdl parser encounter wsp:Policy element after service element and throws exception. If we will check the WS policy &lt;a href="http://www.w3.org/TR/ws-policy-attach/"&gt;specification&lt;/a&gt; we could found that Policy element can be anywhere in wsdl document. &lt;br /&gt;But basic WS-I profile doesn't allow the Policy element after the service element by the specification of the wsdl schema. If we put the Policy element before the type or import element the assertion error fixes because according to the wsdl schema WSDL definition could take any number of element before type element, and this the simple fix. The valid wsdl document are as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt?xml version="1.0" encoding="utf-8" ?&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt;wsdl:definitions &lt;br /&gt;    xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailerService.wsdl" &lt;br /&gt;    targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailerService.wsdl" &lt;br /&gt;    xmlns:retailer="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" &lt;br /&gt;    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" &lt;br /&gt;    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&lt;br /&gt;    xmlns="http://schemas.xmlsoap.org/wsdl/" &amp;gt&lt;br /&gt;  &lt;br /&gt;     &amp;lt;wsp:Policy wsu:Id="UsernameToken" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy/ws-policy.xsd" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"&amp;gt&lt;br /&gt;  &amp;lt;wsp:ExactlyOne&amp;gt;&lt;br /&gt;   &amp;lt;wsp:All&amp;gt;&lt;br /&gt;   &lt;br /&gt;    &amp;lt;sp:TransportBinding/&amp;gt;&lt;br /&gt;    &amp;lt;sp:SupportingTokens&amp;gt;&lt;br /&gt;     &amp;lt;wsp:Policy&amp;gt;&lt;br /&gt;      &amp;lt;sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"/&amp;gt;&lt;br /&gt;     &amp;lt/wsp:Policy&amp;gt;&lt;br /&gt;    &amp;lt/sp:SupportingTokens&amp;gt;&lt;br /&gt;   &amp;lt/wsp:All&amp;gt;&lt;br /&gt;  &amp;lt/wsp:ExactlyOne&amp;gt;&lt;br /&gt; &amp;lt/wsp:Policy&amp;gt; &lt;br /&gt;  &amp;lt;wsdl:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" &lt;br /&gt;      location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;wsdl:service name="RetailerService"&amp;gt;&lt;br /&gt;    &amp;lt;wsdl:port name="LocalRetailerPort" binding="retailer:RetailerSoapBinding"&amp;gt&lt;br /&gt;      &amp;lt;soap:address location="http://localhost:9080/Retailer/services/Retailer"/&amp;gt;&lt;br /&gt;    &amp;lt;/wsdl:port&amp;gt;&lt;br /&gt;  &amp;lt/wsdl:service&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;Rest of the part of the blog post describes how to configure WS-I testing tools on Mac OS. For some unknown reason SOAPUI doesn't display the conformance report on the window.&lt;br /&gt;First download the Java WS-I testing tool from the following &lt;a href="http://www.ws-i.org/Testing/Tools/2005/06/WSI_Test_Java_Final_1.1.zip"&gt;link.&lt;/a&gt; Unzip the archive and add the following properties on the .bash_profile&lt;br /&gt;&lt;pre class="brush: xml"&gt;export WSI_HOME=/Users/samim/Development/WS-i/TestTool/wsi-test-tools&lt;br /&gt;export PATH=/opt/subversion/bin:$WSI_HOME/java/bin:$PATH&lt;br /&gt;&lt;/pre&gt;run the bash_profile . .bash_profile&lt;br /&gt;If we now runs the Analyzer.sh tools we should get the following error&lt;br /&gt;/bin/sh^M: bad interpreter: No such file or directory&lt;br /&gt;Unfortunately all the executable file on the wsi-test-tools/java/bin/ catalog has wrong return endings.&lt;br /&gt;Do the following for the files setenv.sh and Analyzer.sh&lt;br /&gt;&lt;pre name="code" class="xml"&gt;cp -p setenv.sh setenv.sh.orig&lt;br /&gt;cat setenv.sh | tr -d '\r' &gt; setenv.sh.new&lt;br /&gt;mv setenv.sh.new setenv.sh&lt;br /&gt;&lt;/pre&gt;now change the permissions of the files:&lt;br /&gt;chmod +x setenv.sh (also do for the Analyzer.sh)&lt;br /&gt;&lt;br /&gt;Now we are ready to execute Analyze tool. From the wsi-test-tools/java/samples/ directory run the following command &lt;br /&gt;./Analyze.sh -config ./analyzerConfig.xml&lt;br /&gt;these will analyze the WSDL and create a report on the current directory. You can examine and edit the analyzerConfig.xml for our purpose. Report.xml can be run on any internet browser and you will see the report.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4676409859006131457?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4676409859006131457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4676409859006131457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4676409859006131457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4676409859006131457'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/03/quick-fix-of-ws-i-bp2703-assertion.html' title='A quick fix of WS-I BP2703 assertion'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-zDqUjGPg_Fs/TXYyPOBBBQI/AAAAAAAAAYU/XqFjguNJydg/s72-c/Screen+shot+2011-03-08+at+4.41.47+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4470101254452037256</id><published>2011-01-22T14:59:00.003+02:00</published><updated>2011-06-04T19:56:39.364+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='2nd level cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Database change notification'/><category scheme='http://www.blogger.com/atom/ns#' term='Hazelcast'/><title type='text'>Clearing Hazelcast data grid cache with Oracle Database change notification</title><content type='html'>A few days ago we decided to use 2nd level cache for better java scalability in our legacy system. Everything goes fine with hazelcast as a 2nd level cache, whenever our a few 3rd party applications starts uploading data directly to the Oracle schema. Generally, a middle-tier data cache duplicates some data from the  back-end database server. Its goal is to avoid redundant queries to the  database. However, this is efficient only when the data rarely changes  in the database. The data cache has to be updated or invalidated when  the data changes in the database. If application operates DML operations through cache it's simply your life, but in our case some of our 3rd party can't use hazelcast data grid and we decided to get the proper way to update our caches or clear it whenever some entity on tables updates. In this post i will provide a simple way to clear &lt;a href="http://www.hazelcast.com/index.jsp"&gt;Hazelcast&lt;/a&gt; cache (Hibernate region) whenever data base event occurs on the oracle database.&amp;nbsp; &lt;br /&gt;It's very easy to plug Hazelcast as a &lt;a href="http://www.hazelcast.com/documentation.jsp#HibernateSecondLevelCache"&gt;2nd level cache&lt;/a&gt; on Hibernate Project.&amp;nbsp; &lt;br /&gt;To enable 2nd level cache on hibernate, do the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AnnotationConfiguration aconf=new AnnotationConfiguration();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .... &lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; aconf.setProperty("hibernate.cache.use_query_cache","true");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aconf.setProperty("hibernate.cache.usesecondlevel_cache","true");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aconf.setProperty("hibernate.cache.useminimalputs","true");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aconf.setProperty("hibernate.cache.provider_class","com.hazelcast.hibernate.provider.HazelcastCacheProvider"); &lt;br /&gt;&lt;/pre&gt;as usual you can set these above properties in the hibernate.cfg.xml.&lt;br /&gt;Now put hibernate cache annotations &lt;i&gt;@Cache&lt;/i&gt; annotation on your entities and collections.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;@Cache(usage = CacheConcurrencyStrategy.READ)@SuppressWarnings("serial")&lt;br /&gt;public class FdcVt extends FdcDocBase implements java.io.Serializable, IReportable, ITrXmlGenerationable {&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Application is ready to use of 2nd level caches (assume you also &lt;code&gt;hazelcast-hibernate-&lt;version&gt;.jar in your calsspath&lt;/version&gt;&lt;/code&gt;), if you run the application you should see the following logs on your console or file:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;22.01.2011 15:04:50 com.hazelcast.hibernate.provider.HazelcastCacheProvider&lt;br /&gt;INFO: Starting up HazelcastCacheProvider...&lt;br /&gt;22.01.2011 15:04:50 com.hazelcast.config.XmlConfigBuilder&lt;br /&gt;INFO: Looking for hazelcast.xml config file in classpath.&lt;br /&gt;22.01.2011 15:04:50 com.hazelcast.config.XmlConfigBuilder&lt;br /&gt;WARNING: Could not find hazelcast.xml in classpath.&lt;br /&gt;Hazelcast will use hazelcast-default.xml config file in jar.&lt;br /&gt;22.01.2011 15:04:50 com.hazelcast.config.XmlConfigBuilder&lt;br /&gt;INFO: Using configuration file /hazelcast-default.xml in the classpath.&lt;br /&gt;22.01.2011 15:04:51 com.hazelcast.system&lt;br /&gt;INFO: [dev] Hazelcast 1.9.1 (20110103) starting at Address[192.168.157.1:5701]&lt;br /&gt;22.01.2011 15:04:51 com.hazelcast.system&lt;br /&gt;INFO: [dev] Copyright (C) 2008-2010 Hazelcast.com&lt;br /&gt;22.01.2011 15:04:51 com.hazelcast.impl.LifecycleServiceImpl&lt;br /&gt;INFO: [dev] Address[192.168.157.1:5701] is STARTING&lt;br /&gt;22.01.2011 15:04:53 com.hazelcast.impl.Node&lt;br /&gt;INFO: [dev] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Members [1] {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Member [192.168.157.1:5701] this&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;22.01.2011 15:04:53 com.hazelcast.impl.LifecycleServiceImpl&lt;br /&gt;INFO: [dev] Address[192.168.157.1:5701] is STARTED&lt;br /&gt;22.01.2011 15:04:54 com.hazelcast.hibernate.provider.HazelcastCache&lt;br /&gt;INFO: Creating new HazelcastCache with region name: ru.fors.lsadb.datamodel.FdcVt&lt;br /&gt;22.01.2011 15:04:54 com.hazelcast.hibernate.provider.HazelcastCache&lt;br /&gt;INFO: Creating new HazelcastCache with region name: org.hibernate.cache.UpdateTimestampsCache&lt;br /&gt;22.01.2011 15:04:54 com.hazelcast.hibernate.provider.HazelcastCache&lt;br /&gt;INFO: Creating new HazelcastCache with region name: org.hibernate.cache.StandardQueryCache &lt;br /&gt;&lt;/pre&gt;Hazelcast create hibernate region for every entity, in our case it's ru.fors.lsadb.datamodel.FdcVt. You can change your region name on @Cache annotations also in hazelcast configuration file.&lt;br /&gt;If you will run any query against fdcVt entity, first time query will runs on database table and the second time should use hazelcast cache. If you enable hibernate statistics through JMX, you would also see the query result hit as follows:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hB7TA2a94zk/TTrMI7MszVI/AAAAAAAAAYM/Pi9Z3bWas1o/s1600/Screen+shot+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/_hB7TA2a94zk/TTrMI7MszVI/AAAAAAAAAYM/Pi9Z3bWas1o/s320/Screen+shot+1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now it's time to meet with &lt;a href="file:///Users/samim/E-books/Oracle/DataBaseChangeNotification/dbchgnf.htm"&gt;Oracle database change notification&lt;/a&gt;, from the database version Oracle 10g (10.2) it's possible to get notification whenever any Database object's change. Oracle provide these unique features on JDBC driver for 11g. You should download the drive from the oracle site and you are ready for coding. Even more oracle given a fine grained example to use of the features.&lt;br /&gt;The following paragraph i have copy and paste :-)&lt;br /&gt;&lt;br /&gt;To use Oracle JDBC driver support for Database Change Notification, perform the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Registration: You first need to create a registration.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Query association: After you have created a registration, you can  associate SQL queries with it. These queries are part of the  registration.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Notification: Notifications are created in response to changes in  tables or result set. Oracle database communicates these notifications  to the JDBC drivers through a dedicated network connection and JDBC  drivers convert these notifications to Java events.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Also, you need to grant the &lt;code&gt;CHANGE NOTIFICATION&lt;/code&gt; privilege to the user. For example, if you connect to the database using the &lt;code&gt;SCOTT&lt;/code&gt; user name, then you need to run the following command in the database:&lt;br /&gt;&lt;pre class="oac_no_warn"&gt;grant change notification to scott;&lt;/pre&gt;For detail information you should visit the &lt;a href="file:///Users/samim/E-books/Oracle/DataBaseChangeNotification/dbchgnf.htm"&gt;Database change notification&lt;/a&gt; page.&lt;br /&gt;Here is the complete quick start example which will clear the hazelcast cache whenever the entity will updated:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.misc;&lt;br /&gt;&lt;br /&gt;import oracle.jdbc.driver.OracleConnection;&lt;br /&gt;import oracle.jdbc.driver.OracleDriver;&lt;br /&gt;import oracle.jdbc.dcn.DatabaseChangeRegistration;&lt;br /&gt;import oracle.jdbc.dcn.DatabaseChangeListener;&lt;br /&gt;import oracle.jdbc.dcn.DatabaseChangeEvent;&lt;br /&gt;import oracle.jdbc.dcn.TableChangeDescription;&lt;br /&gt;import oracle.jdbc.OracleStatement;&lt;br /&gt;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.sql.SQLException;&lt;br /&gt;import java.sql.Statement;&lt;br /&gt;import java.sql.ResultSet;&lt;br /&gt;&lt;br /&gt;import com.hazelcast.core.HazelcastInstance;&lt;br /&gt;import com.hazelcast.core.Transaction;&lt;br /&gt;import com.hazelcast.client.HazelcastClient;&lt;br /&gt;&lt;br /&gt;public class GetNotify {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final String USERNAME="xyz";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final String PASSWORD = "w";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final String URL="jdbc:oracle:thin:@xyz:1521:orcl";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Notify start");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetNotify notif = new GetNotify();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OracleConnection con= null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DatabaseChangeRegistration dcr = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con =&amp;nbsp; notif.getConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties prop = new Properties();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set the registration propetries&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.setProperty(OracleConnection.DCN_NOTIFY_ROWIDS,"true");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //prop.setProperty(OracleConnection.DCN_QUERY_CHANGE_NOTIFICATION,"true");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dcr = con.registerDatabaseChangeNotification(prop);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add the listener&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dcr.addListener(new DatabaseChangeListener(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onDatabaseChangeNotification(DatabaseChangeEvent e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread t = Thread.currentThread();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("QCNDemoListener: got an event ("+this+" running on thread "+t+")");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("====================================");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(e.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("====================================");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableChangeDescription[] tchanges =&amp;nbsp; e.getTableChangeDescription();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(TableChangeDescription tdesc : tchanges){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Changed Object:"+ tdesc.getTableName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // clear cache&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HazelcastInstance instance = HazelcastClient.newHazelcastClient("dev", "dev-pass", "192.168.157.1", "192.168.157.1:5702");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Map&lt;string, org.hibernate.cache.readwritecache.item=""&gt; vtMaps =&amp;nbsp; instance.getMap("ru.fors.lsadb.datamodel.FdcVt");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Cache size by region:"+ vtMaps.size());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Transaction transaction = instance.getTransaction();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.begin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vtMaps.clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.commit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Object allocated after clear cache.."+ vtMaps.size());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String query = "select * from dbf_kbk";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Statement stm = con.createStatement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((OracleStatement) stm).setDatabaseChangeRegistration(dcr);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResultSet rs = stm.executeQuery(query);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stm.executeQuery("select 1 from fdc_vt where 1!=2");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stm.executeQuery("select 1 from fdc_pt where 1!=2");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(rs.next()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get tables from dcr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] tables = dcr.getTables();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(String str : tables){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Tables:"+ str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rs.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stm.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }catch(SQLException e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("SQLException:"+ e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(con != null &amp;amp;&amp;amp; !con.isClosed()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.unregisterDatabaseChangeNotification(dcr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }catch(SQLException e1){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("e1"+ e1.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }finally{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(con != null &amp;amp;&amp;amp; !con.isClosed()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }catch(SQLException e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("e2:"+e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private OracleConnection getConnection() throws SQLException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OracleDriver driver = new OracleDriver();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties prop = new Properties();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.setProperty("user",this.USERNAME);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.setProperty("password",this.PASSWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (OracleConnection)driver.connect(this.URL,prop);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;} &lt;/string,&gt;&lt;br /&gt;&lt;/pre&gt;Above snippet is very self explainable, first we creates registrations and register Entity through the sql query. Add a DatabaseChangeListner and implement the hazelcast client operation on it. Through the hazelcast client we gets cache of the hibernate region, turn on the transaction and clear the cache. Whenever you commit the changes, all the member of the Hazelcast gets the notification. Now hibernate has to run the query on the database and will fill the 2nd level cache, which will help to always getting synchronous query result on the client side.&lt;br /&gt;Thank'x for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4470101254452037256?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4470101254452037256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4470101254452037256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4470101254452037256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4470101254452037256'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/01/clearing-hazelcast-data-grid-cache-with.html' title='Clearing Hazelcast data grid cache with Oracle Database change notification'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hB7TA2a94zk/TTrMI7MszVI/AAAAAAAAAYM/Pi9Z3bWas1o/s72-c/Screen+shot+1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4758354975453681549</id><published>2011-01-15T15:32:00.001+02:00</published><updated>2011-06-04T19:57:33.810+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='YourKit'/><title type='text'>J2EE application profiling with yourkit on Weblogic</title><content type='html'>One of our provider uses HP-UX on production machine, a few J2ee applications runs on that machine. After sometimes, we start getting complain from our clients that portal often goes out of memory and we decided to investigate the application with &lt;a href="http://www.yourkit.com/overview/index.jsp"&gt;Yourkit&lt;/a&gt;. Yourkit is a industry leading java profiling software on present day, it can works with standalone java application as well as remote profiling. YourKit supports SQL,JNDI and run time memory profiling, see the following link for &lt;a href="http://www.yourkit.com/features/index.jsp"&gt;more information&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;1) First download the version you need, in my cases i download Windows and HP-UX version and got the evaluation key.&lt;br /&gt;2) Unzip the YJP-9.5.3*.zip and run the following command on HP-UX to set the agent for profiling on weblogic&lt;br /&gt;&amp;nbsp;cd yjp-9.5.3/lib &amp;amp; java -jar yjp.jar -integrate&lt;br /&gt;&lt;br /&gt;which will bring up you new command console to configure agent with the weblogic server. Go throws the command prompt and locate your weblogic startup script as follows:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hB7TA2a94zk/TTGgnf1CagI/AAAAAAAAAYI/tBO5wzGErUw/s1600/Screen+shot+2011-01-15+at+4.25.44+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://4.bp.blogspot.com/_hB7TA2a94zk/TTGgnf1CagI/AAAAAAAAAYI/tBO5wzGErUw/s320/Screen+shot+2011-01-15+at+4.25.44+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now you will get a new startup script named startWebLogic_with_yjp.sh to start Weblogic Server with yourkit agent.&amp;nbsp; Most of all time you can use these script to start WebLogic server with agent, script only contains the&amp;nbsp; jvm argument &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;JAVA_OPTIONS="-agentpath:/var/oracle/app/yourkit/yjp-9.5.3/bin/hpux-ia64-64/libyjpagent.so=disablestacktelemetry,disableexceptiontelemetry,builtinprobes=none,delay=10000,sessionname=WebLogicMona&lt;br /&gt; $JAVA_OPTIONS"&lt;br /&gt;export JAVA_OPTIONS &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;On HP-UX these above script couldn't start WebLogic with agent, for some reason env variable JAVA_OPTIONS was not enable on startup terminal. For quick fix i copy the JAVA_OPTIONS on &lt;b&gt;/bin/startWeblogic.sh&lt;/b&gt;&lt;br /&gt;and start the server nohup ./startWeblogic.sh &amp;amp;&lt;br /&gt;now in the nohup.out file we found the following log &lt;br /&gt;[YourKit Java Profiler 9.5.3] Loaded. Log file: /home/oracle/.yjp/log/8907.log&lt;br /&gt;&lt;br /&gt;From the 8907.log we found the port name which uses agent to connect with.&lt;br /&gt;[YourKit Java Profiler 9.5.3] [12.860]: Profiler agent is listening on port 10001&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now from our host operating system we can connect remotely and profiling our applications.&lt;br /&gt;You can watch demos &lt;a href="http://www.yourkit.com/docs/index.jsp"&gt;here&lt;/a&gt; to quick start with java YourKit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4758354975453681549?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4758354975453681549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4758354975453681549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4758354975453681549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4758354975453681549'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2011/01/j2ee-application-profiling-with-yourkit.html' title='J2EE application profiling with yourkit on Weblogic'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/TTGgnf1CagI/AAAAAAAAAYI/tBO5wzGErUw/s72-c/Screen+shot+2011-01-15+at+4.25.44+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4336473208370093534</id><published>2010-12-29T13:27:00.002+02:00</published><updated>2011-06-04T19:58:56.537+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Archiva 1.3.3'/><title type='text'>Deploy apache archiva 1.3.3 on Oracle Weblogic server</title><content type='html'>Deploy Apache Archiva web application archive (war) is not straight forward on WebLogic, although on apache site it declared that, it should be deploy on any J2ee server. This week we decided to upgrade our Archiva version from 1.3 to 1.3.3 and locate some interesting facts which should be fix to deploy on WebLogic server. In this following blog &lt;a href="http://nilogarcia.blogspot.com/2010/03/deploy-apache-archiva-on-weblogic-11g.html"&gt;post &lt;/a&gt;you can get some useful information to deploy version 1.3 on WebLogic server. In this current post i am going to explain the maven way to fix all the problems among with Jpox ORM (we have oracle DB 10.3.1 as external database) and mailSession of Archiva to deploy on WebLogic. Most of all configuration you will get from the Apache &lt;a href="http://archiva.apache.org/docs/1.3.3/adminguide/index.html"&gt;Archiva &lt;/a&gt;site.&lt;br /&gt;At first we have to download the source code of the Apache Archiva. You could found it &lt;a href="http://www.apache.org/dyn/closer.cgi/archiva/source/apache-archiva-1.3.3-src.zip"&gt;here&lt;/a&gt;.Unzip the archive file and run mvn clean install -Dmaven.test.skip=true, it will download a few more plugin and dependency libraries to compile and install the artifact on you local machine (Assume that you already have mvn installed on your system).&lt;br /&gt;Our aim is to add one weblogic.xml descriptor file to archiva-webapp/src/main/webapp/WEB-INF, add one maven ear module on archiva-web module to get ear artifact and edit archiva-base.xml file to change the column length.&lt;br /&gt;First of all we will add following weblogic.xml in the \src\apache-archiva-1.3.3-src\archiva-modules\archiva-web\archiva-webapp\src\main\webapp\WEB-INF directory.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version = '1.0' encoding = 'windows-1252'?&amp;gt;&lt;br /&gt;&amp;lt;weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;resource-description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;res-ref-name&amp;gt;mail/Session&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jndi-name&amp;gt;mail/Session&lt;br /&gt;&amp;nbsp; &amp;lt;/resource-description&amp;gt;&lt;br /&gt;&amp;lt;/weblogic-web-app&amp;gt; &lt;br /&gt;&lt;/pre&gt;Which will active resource location by jndi&lt;br /&gt;Next we have to make some change on archive-base.xml located on \src\apache-archiva-1.3.3-src\archiva-modules\archiva-base\archiva-model\src\main\mdo . By default Archiva released with Jpox orm which data base object mapping is not supported for Oracle data types. Change the mapping for column named "message" for table&amp;nbsp; REPOSITORY_PROBLEMS as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;nbsp;&amp;lt;field stash.maxSize="4000"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;name&amp;gt;message&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;identifier&amp;gt;false&amp;lt;/identifier&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;version&amp;gt;1.0.0+&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;required&amp;gt;true&amp;lt;/required&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;type&amp;gt;String&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The origin of the health problem.&lt;br /&gt;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt; &lt;br /&gt;&lt;/pre&gt;Change the length of the field named "message" for table LICENSES as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;nbsp;&amp;lt;field stash.maxSize="4000"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;name&amp;gt;comments&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;version&amp;gt;1.0.0+&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;type&amp;gt;String&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Addendum information pertaining to this license.&lt;br /&gt;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt; &lt;br /&gt;&lt;/pre&gt;Edit the length of the field named "description"for tables PROJECT as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;nbsp;&amp;lt;field stash.maxSize="4000"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;name&amp;gt;description&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;identifier&amp;gt;false&amp;lt;/identifier&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;version&amp;gt;1.0.0+&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;required&amp;gt;false&amp;lt;/required&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;type&amp;gt;String&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The description of this project.&lt;br /&gt;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;You could also set the data type to Clob in order to String. The above fixes is enough to get rid of the following errors on weblogic:&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;java.sql.SQLSyntaxErrorException: ORA-00910: specified length too long for its datatype&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;You can compile and build the artifact to deploy it to WebLogic, it will set the context root to archiva-web-1.3.3. In order to change the context root of the Archiva web application we can create a maven ear module on archiva-web directory as follows:&lt;br /&gt;\src\apache-archiva-1.3.3-src\archiva-modules\archiva-web\ &lt;br /&gt;|--archiva-ear&lt;br /&gt;|--archiva-xmlrpc&lt;br /&gt;|--archiva-webapp&lt;br /&gt;&lt;br /&gt;add the module in the archive-web pom.xml as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;modules&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-applet&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-security&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-webapp&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-webdav&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-rss&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-xmlrpc&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;module&amp;gt;archiva-ear&amp;lt;/module&amp;gt;&lt;br /&gt;&amp;lt;/modules&amp;gt; &lt;br /&gt;&lt;/pre&gt;archiva-ear module will have the following structure:&lt;br /&gt;archiva-ear&lt;br /&gt;|----src\main\resources\META-INF\&lt;br /&gt;|----pom.xml&lt;br /&gt;pom.xml will have the following content:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parent&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groupId&amp;gt;org.apache.archiva&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactId&amp;gt;archiva-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parent&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactId&amp;gt;archiva-ear&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;packaging&amp;gt;ear&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Archiva Ear :: Application&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groupId&amp;gt;org.apache.archiva&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactId&amp;gt;archiva-webapp&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;type&amp;gt;war&amp;lt;/type&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactId&amp;gt;maven-ear-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;earSourceDirectory&amp;gt;src/main/resources&amp;lt;/earSourceDirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;modules&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webModule&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groupId&amp;gt;org.apache.archiva&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactId&amp;gt;archiva-webapp&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;contextRoot&amp;gt;/archiva&amp;lt;/contextRoot&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webModule&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/modules&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;archive&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;addMavenDescriptor&amp;gt;false&amp;lt;/addMavenDescriptor&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;manifest&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;addDefaultSpecificationEntries&amp;gt;true&amp;lt;/addDefaultSpecificationEntries&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;addDefaultImplementationEntries&amp;gt;true&amp;lt;/addDefaultImplementationEntries&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/manifest&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/archive&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/build&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;lt;/project&amp;gt; &lt;br /&gt;&lt;/pre&gt;Add the following weblogic-application.xml into the archiva-web\archiva-ear\src\main\resources\META-INF directory&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version = '1.0' encoding = 'windows-1252'?&amp;gt;&lt;br /&gt;&amp;lt;weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;                      xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-application"&amp;gt;&lt;br /&gt;  &amp;lt;application-param&amp;gt;&lt;br /&gt;    &amp;lt;param-name&amp;gt;webapp.encoding.default&amp;lt;/param-name&amp;gt;&lt;br /&gt;    &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;  &amp;lt;/application-param&amp;gt;&lt;br /&gt;&amp;lt;/weblogic-application&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now the code is complete and you can build and deploy to Weblogic server.&lt;br /&gt;Happy coding &amp;amp; happy new year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4336473208370093534?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4336473208370093534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4336473208370093534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4336473208370093534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4336473208370093534'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/12/deploy-apache-archiva-133-on-oracle.html' title='Deploy apache archiva 1.3.3 on Oracle Weblogic server'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-1798780885974365248</id><published>2010-11-18T19:32:00.002+02:00</published><updated>2011-06-04T19:59:43.315+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac os'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='JRebel'/><title type='text'>JRebel version 3.5 released</title><content type='html'>I6 November released &lt;a href="http://www.zeroturnaround.com/jrebel/"&gt;JRebel&lt;/a&gt; version 3.5. JRebel is an award winning productivity tool for Java EE development. JRebel maps your project workspace directly to your running application. When a developer makes a change to any class or resource in their IDE the change is immediately reflected in the application, skipping the build and redeploy phases. See the leaflet &lt;a href="http://www.zeroturnaround.com/wp-content/themes/zeroturnaround4.0/static/pdf/JRebel_Product_Leaflet_A4.pdf"&gt;here&lt;/a&gt;&lt;br /&gt;It takes only a few simple steps to configure and works out.&lt;br /&gt;1) Download the installer from the following location&lt;br /&gt;&lt;a href="http://www.zeroturnaround.com/jrebel/current/"&gt;http://www.zeroturnaround.com/jrebel/current&lt;/a&gt;&lt;br /&gt;2) Run the setup file&lt;br /&gt;3) Add JRebel plugin in the projects root maven pom.xml as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;  &amp;lt;groupId&amp;gt;org.zeroturnaround&amp;lt;/groupId&amp;gt;&lt;br /&gt;  &amp;lt;artifactId&amp;gt;jrebel-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;  &amp;lt;executions&amp;gt;&lt;br /&gt;    &amp;lt;execution&amp;gt;&lt;br /&gt;      &amp;lt;id&amp;gt;generate-rebel-xml&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;phase&amp;gt;process-resources&amp;lt;/phase&amp;gt;&lt;br /&gt;      &amp;lt;goals&amp;gt;&lt;br /&gt;        &amp;lt;goal&amp;gt;generate&amp;lt;/goal&amp;gt;&lt;br /&gt;      &amp;lt;/goals&amp;gt;&lt;br /&gt;    &amp;lt;/execution&amp;gt;&lt;br /&gt;  &amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;This will generate JRebel configuration file rebel.xml automatically on every build. If you want to generate the rebel.xml manually run mvn jrebel:generate -Drebel.xml.dir=OUTPUT_DIRECTORY&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;br /&gt;4) Now you have to configure Weblogic application server as follows:&lt;br /&gt;Go to $DOMAIN_HOME/bin and create the file startWeblogic-jrebel.sh with the following contents:&lt;br /&gt;&lt;pre class="brush: xml"&gt;#!/bin/bash&lt;br /&gt;export REBEL_HOME=/Applications/ZeroTurnaround/JRebel&lt;br /&gt;&lt;br /&gt;export JAVA_OPTIONS="-noverify -javaagent:$REBEL_HOME/jrebel.jar $JAVA_OPTIONS"&lt;br /&gt;./startWeblogic.sh $@&lt;br /&gt;&lt;/pre&gt;5) Start the server by the above script and you should see the following JRebel poster on console&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hB7TA2a94zk/TOVg9n2Cl6I/AAAAAAAAAX4/H1SPZcFbX2U/s1600/Screen+shot+2010-11-18+at+8.22.03+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://1.bp.blogspot.com/_hB7TA2a94zk/TOVg9n2Cl6I/AAAAAAAAAX4/H1SPZcFbX2U/s320/Screen+shot+2010-11-18+at+8.22.03+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;6) Now you can deploy your application on weblogic server and JRebel will take care of it. After successful deployment JRebel will notice which module he will monitor with physical path. JRebel will indicate the directories it is monitoring for changes and will issue a "Reloaded class XXX" message every time you use a changed class.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hB7TA2a94zk/TOZ8AkGCrhI/AAAAAAAAAX8/EZ2Ekuw0YgU/s1600/scrren1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="81" src="http://1.bp.blogspot.com/_hB7TA2a94zk/TOZ8AkGCrhI/AAAAAAAAAX8/EZ2Ekuw0YgU/s640/scrren1.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Also&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hB7TA2a94zk/TOZ8Hqk9gHI/AAAAAAAAAYA/chLNzoAZIx8/s1600/sreen2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="75" src="http://1.bp.blogspot.com/_hB7TA2a94zk/TOZ8Hqk9gHI/AAAAAAAAAYA/chLNzoAZIx8/s640/sreen2.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-1798780885974365248?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/1798780885974365248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=1798780885974365248' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1798780885974365248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1798780885974365248'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/11/jrebel-version-35-released.html' title='JRebel version 3.5 released'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hB7TA2a94zk/TOVg9n2Cl6I/AAAAAAAAAX4/H1SPZcFbX2U/s72-c/Screen+shot+2010-11-18+at+8.22.03+PM.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-5505146012260921434</id><published>2010-10-08T18:13:00.002+03:00</published><updated>2011-06-04T20:01:26.909+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><category scheme='http://www.blogger.com/atom/ns#' term='FDI'/><title type='text'>Manipulation Oracle Bpm directory with FDI api</title><content type='html'>The BPM Directory is an information repository. It stores configuration information about a BPM Environment. This repository is a fundamental component of the BPM Environment; a BPM Environment cannot exist without a BPM Directory. All the users information and organizational unit information maintains on BPM directory. Oracle BPM also provides API named FDI to CRUD operations on these information. For more additional information see &lt;a href="http://www.oracle.com/technetwork/articles/bpm-directory-explained-090286.html"&gt;here&lt;/a&gt;. In this current post, i will provide sample java code which will help to quick start with FDI.&lt;br /&gt;Fdi Api is not public api to use, for these reason only a few reference found on the web. &lt;a href="http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/standard_components/index.html"&gt;Oracle BPM Standard Components Reference&lt;/a&gt; provides most of the information to working with FDI. For example purpose, i will use Bpm Standalone Enterprise server directory.xml. To run standalone client we have to need following libraries on class path:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fuegopapi-client.jar&lt;/li&gt;&lt;li&gt;b1oracle.jar&lt;/li&gt;&lt;li&gt;b1base.jar&lt;/li&gt;&lt;li&gt;b1util.jar&lt;/li&gt;&lt;li&gt;b1resource.jar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Here is my maven pom.xml file&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;ru.fors.nsi.bpm.proxy&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;bpmproxy&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;bpmproxy&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;fuego&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;fuegopapi-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;6.5.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;--&amp;gt;  &lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.ejb&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;ejb&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.transaction&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jta&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;albpm.jdbc.oracle&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;b1oracle&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;albpm.jdbc.base&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;b1base&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;albpm.util&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;b1util&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.jms&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jms&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;log4j&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;log4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;log4j-over-slf4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.6.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-surefire-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;testFailureIgnore&amp;gt;true&amp;lt;/testFailureIgnore&amp;gt;&lt;br /&gt;&amp;lt;skip&amp;gt;true&amp;lt;/skip&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;          &lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/resources&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;false&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;/resources&amp;gt;      &lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is my directory.xml, which must be on classpath.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;?fuego version="6.5.1" build="94375"?&amp;gt;&lt;br /&gt;&amp;lt;DirectoryConfiguration&amp;gt;&lt;br /&gt;&amp;lt;id&amp;gt;default&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;Default Directory Configuration&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;admin&amp;gt;admin&amp;lt;/admin&amp;gt;&lt;br /&gt;&amp;lt;adminPass&amp;gt;&amp;lt;encrypted&amp;gt;uPgrjqI482A=&amp;lt;/adminPass&amp;gt;&lt;br /&gt;&amp;lt;presets&amp;gt;&lt;br /&gt;&amp;lt;preset name="engine"&amp;gt;&lt;br /&gt;&amp;lt;property name="participant" value="admin"/&amp;gt;&lt;br /&gt;&amp;lt;property name="participant_password" value="&amp;lt;encrypted&amp;gt;uPgrjqI482A="/&amp;gt;&lt;br /&gt;&amp;lt;/preset&amp;gt;&lt;br /&gt;&amp;lt;preset name="xobjects"&amp;gt;&lt;br /&gt;&amp;lt;property name="participant" value="admin"/&amp;gt;&lt;br /&gt;&amp;lt;property name="participant_password" value="&amp;lt;encrypted&amp;gt;uPgrjqI482A="/&amp;gt;&lt;br /&gt;&amp;lt;/preset&amp;gt;&lt;br /&gt;&amp;lt;preset name="portal-anonymous"&amp;gt;&lt;br /&gt;&amp;lt;property name="participant" value="admin"/&amp;gt;&lt;br /&gt;&amp;lt;property name="participant_password" value="&amp;lt;encrypted&amp;gt;uPgrjqI482A="/&amp;gt;&lt;br /&gt;&amp;lt;/preset&amp;gt;&lt;br /&gt;&amp;lt;preset name="datawarehouse"&amp;gt;&lt;br /&gt;&amp;lt;property name="participant" value="admin"/&amp;gt;&lt;br /&gt;&amp;lt;property name="participant_password" value="&amp;lt;encrypted&amp;gt;uPgrjqI482A="/&amp;gt;&lt;br /&gt;&amp;lt;/preset&amp;gt;&lt;br /&gt;&amp;lt;preset name="papiws-anonymous"&amp;gt;&lt;br /&gt;&amp;lt;property name="participant" value="admin"/&amp;gt;&lt;br /&gt;&amp;lt;property name="participant_password" value="&amp;lt;encrypted&amp;gt;uPgrjqI482A="/&amp;gt;&lt;br /&gt;&amp;lt;/preset&amp;gt;&lt;br /&gt;&amp;lt;/presets&amp;gt;&lt;br /&gt;&amp;lt;set&amp;gt;&lt;br /&gt;&amp;lt;configuration name="fuego" type="SQL" subtype="DDORACLE"&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.pool.idle_timeout" value="5"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.pool.entry.max" value="10"/&amp;gt;&lt;br /&gt;&amp;lt;property name="oracle.dateEqualsTimestamp" value="false"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.host" value="xyz"/&amp;gt;&lt;br /&gt;&amp;lt;property name="user" value="OBPMDirLocal"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.port" value="1521"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.pool.min" value="0"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.pool.maxopencursors" value="100"/&amp;gt;&lt;br /&gt;&amp;lt;property name="oracle.sid" value="ftsdb"/&amp;gt;&lt;br /&gt;&amp;lt;property name="password" value="&amp;lt;encrypted&amp;gt;ko8PrHu2UJLLicio"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.xa" value="false"/&amp;gt;&lt;br /&gt;&amp;lt;property name="jdbc.pool.max" value="10"/&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/set&amp;gt;&lt;br /&gt;&amp;lt;/DirectoryConfiguration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next, it's time for java coding&lt;br /&gt;&lt;pre class="brush: java"&gt;package ru.fors.bpm.client;&lt;br /&gt;&lt;br /&gt;import fuego.directory.*;&lt;br /&gt;import fuego.directory.exception.ProtocolNotSupportedException;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;&lt;br /&gt;public class FdiClient {&lt;br /&gt;public FdiClient(){}&lt;br /&gt;private static DirectorySession directorySession;&lt;br /&gt;static{&lt;br /&gt;Properties configuration = new Properties();&lt;br /&gt;/*Configuration for Standalone*/&lt;br /&gt;configuration.setProperty( "fuego.custom.replication.config.directoryId", "default");&lt;br /&gt;configuration.setProperty("fuego.custom.replication.config.directoryFile", "directory.xml");&lt;br /&gt;configuration.setProperty("fuego.custom.replication.config.preset", "engine");&lt;br /&gt;try {&lt;br /&gt;DirectoryConfigurationManager.getRuntime("default").setPropertiesFileName(configuration.getProperty("fuego.custom.replication.config.directoryFile").trim());&lt;br /&gt;DirectoryPassport directoryPassport = DirectoryPassport.createWithIDAndPreset(configuration.getProperty("fuego.custom.replication.config.directoryId").trim(), configuration.getProperty("fuego.custom.replication.config.preset").trim());&lt;br /&gt;&lt;br /&gt;directoryPassport.fillPassport();&lt;br /&gt;&lt;br /&gt;directorySession = Directory.startAdminSession(directoryPassport);&lt;br /&gt;&lt;br /&gt;}catch (ProtocolNotSupportedException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}catch (AuthenticationException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}catch(DirectoryException e){&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;private void disconnect () throws DirectoryException{&lt;br /&gt;if(directorySession.isConnected()){&lt;br /&gt;directorySession.disconnect();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;private void createParticipant (final String participantName, final String participantDisplayName, final String password) throws Exception{&lt;br /&gt;if(!directorySession.isConnected()){&lt;br /&gt;throw new Exception ("session already closed..");&lt;br /&gt;}&lt;br /&gt;// fetch Role&lt;br /&gt;DirOrganizationalRole nsiRoles = DirOrganizationalRole.fetch(directorySession, "Controller");&lt;br /&gt;&lt;br /&gt;fuego.directory.DirHumanParticipant.RoleAssignment role = new DirHumanParticipant.RoleAssignment(nsiRoles.getId(), 255, nsiRoles.getIn());&lt;br /&gt;&lt;br /&gt;DirHumanParticipant participant = DirHumanParticipant.create(directorySession,&lt;br /&gt;participantName,&lt;br /&gt;participantDisplayName,&lt;br /&gt;participantName,&lt;br /&gt;participantDisplayName,&lt;br /&gt;"fts@mydomain.com", "", "",&lt;br /&gt;password, DirOrganizationalUnit.fetchRoot(directorySession) , new DirHumanParticipant.RoleAssignment[]{ role } );&lt;br /&gt;&lt;br /&gt;System.out.println("Participant create:"+ participant.getStatus());&lt;br /&gt;}&lt;br /&gt;private void changedPassword(final String oldPassWord, final String newPassword) throws Exception{&lt;br /&gt;if(!directorySession.isConnected()){&lt;br /&gt;throw new Exception ("session already closed..");&lt;br /&gt;}&lt;br /&gt;DirHumanParticipant part = DirHumanParticipant.fetch(directorySession, "test23");&lt;br /&gt;part.changePassword(oldPassWord, newPassword);&lt;br /&gt;System.out.println("Status:"+part.getStatus());&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;private DirHumanParticipant getParticipant(final String name) {&lt;br /&gt;if(!directorySession.isConnected()){&lt;br /&gt;throw new Exception ("session already closed..");&lt;br /&gt;}&lt;br /&gt;return DirHumanParticipant.fetch(directorySession, name);&lt;br /&gt;}&lt;br /&gt;public static void main(String[] args) throws Exception{&lt;br /&gt;System.out.println("FDI - connect to Oracle BPM directory Service...");&lt;br /&gt;FdiClient client = new FdiClient();&lt;br /&gt;//client.createParticipant("test23", "test23","123456");&lt;br /&gt;//client.changedPassword("123456","654321");&lt;br /&gt;DirHumanParticipant part =  client.getParticipant("part2");&lt;br /&gt;System.out.println("Status:"+ part.getPermissions());&lt;br /&gt;client.disconnect();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On the above code permission 255 is a binary mask, from the api reference &lt;br /&gt;Fuego.Fdi.DirHumanParticipant.getPermissionValue would be as follows:&lt;br /&gt;"X" Execute 1&lt;br /&gt;"R" Route 2&lt;br /&gt;"S" Suspend 4&lt;br /&gt;"A" Abort 8&lt;br /&gt;"D" Delegate 16&lt;br /&gt;"G" Grab (re-assign) 32&lt;br /&gt;"E" Escalate 64&lt;br /&gt;"P" Peer assign 128&lt;br /&gt;For example, if you have XEP, then the integer value would be 1 + 64 + 128 = 193, and then all values are XRSADGEP = 255&lt;br /&gt;Additional links:&lt;br /&gt;1) &lt;a href="http://blog.ssglimited.com/2010/02/17/creating-oracle-bpm-papi-clients/"&gt;Creating Oracle BPM PAPI Clients&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3489353#3489353"&gt;Oracle forum thread&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-5505146012260921434?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/5505146012260921434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=5505146012260921434' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5505146012260921434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5505146012260921434'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/10/manipulation-oracle-bpm-directory-with.html' title='Manipulation Oracle Bpm directory with FDI api'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-8550055797078480999</id><published>2010-10-07T13:17:00.002+03:00</published><updated>2011-06-04T20:03:21.708+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><title type='text'>Resolve NullPointerException at weblogic.wsee.jaxws.spi.ClientIdentityRegistry.internalAddClientRuntimeMBean</title><content type='html'>One of our project running on Solaris Sparc system on production, last week we have deployed newer version of our project which have to integrate with 3rd party webservices. On development platform all the test goes fine on Weblogic 10.3.3, but on production we got the following Nullpointer exception:&lt;br /&gt;&lt;pre class="brush: xml"&gt;05-10-2010 18:48:01.066 ERROR r.f.t.a.service.AuctionAOPLogger - Exception:&lt;br /&gt;&lt;br /&gt;java.lang.NullPointerException: null&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.spi.ClientIdentityRegistry.internalAddClientRuntimeMBean(ClientIdentityRegistry.java:470) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.spi.ClientIdentityRegistry.addClientRuntimeMBean(ClientIdentityRegistry.java:424) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.tubeline.standard.WseeClientTube.register(WseeClientTube.java:54) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.tubeline.standard.WseeClientTube.&lt;init&gt;(WseeClientTube.java:35) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.tubeline.standard.StandardTubelineDeploymentListener$1.createClient(StandardTubelineDeploymentListener.java:52) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at weblogic.wsee.jaxws.WLSTubelineAssemblerFactory$TubelineAssemblerImpl.createClient(WLSTubelineAssemblerFactory.java:148) ~[weblogic.jar:10.3.3.0]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.createPipeline(WSServiceDelegate.java:467) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.getStubHandler(WSServiceDelegate.java:689) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:667) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:362) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:344) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:326) ~[glassfish.jaxws.rt_1.0.0.0_2-1-5.jar:2.1.5]&lt;br /&gt;&lt;br /&gt;at javax.xml.ws.Service.getPort(Service.java:92) ~[na:1.6.0_20]&lt;br /&gt;&lt;br /&gt;at ru.fors.trade.rosim.ws.client.CheckAuctionServices.getBasicHttpBindingICheckAuctionServices(CheckAuctionServices.java:56) ~[rosim-confirmation-2.0.6.2.jar:na]&lt;br /&gt;&lt;br /&gt;at ru.fors.trade.auction.service.RosimServiceImpl.checkAuctionCorrect(RosimServiceImpl.java:47) ~[auction-common-2.0.6.2.jar:na]&lt;br /&gt;&lt;br /&gt;at sun.reflect.GeneratedMethodAccessor683.invoke(Unknown Source) ~[na:na]&lt;br /&gt;&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_20]&lt;br /&gt;&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_20]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:54) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at $Proxy139.checkAuctionCorrect(Unknown Source) [na:na]&lt;br /&gt;&lt;br /&gt;at ru.fors.trade.auction.service.AuctionServiceImpl.checkForRosimSendOrUpdate(AuctionServiceImpl.java:1457) [auction-common-2.0.6.2.jar:na]&lt;br /&gt;&lt;br /&gt;at sun.reflect.GeneratedMethodAccessor682.invoke(Unknown Source) ~[na:na]&lt;br /&gt;&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_20]&lt;br /&gt;&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_20]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:54) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) [spring-tx-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) ~[spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;br /&gt;at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) [spring-aop-2.5.6.jar:2.5.6]&lt;br /&gt;&lt;/pre&gt;At first glance it seems, client trying to add client identification on request. &lt;br /&gt;After some googling on web i have just found one forum thread with no answer. &lt;br /&gt;&lt;br /&gt;&lt;/init&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;First of all i have check the pom.xml and discover client stub using sun JAX-WS implementation and decided to use Weblogic implementation which resolve the problem. These are the pom.xml dependencies &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun.xml.ws&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxws-rt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;exclusions&amp;gt;&lt;br /&gt;&amp;lt;exclusion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun.xml.stream&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;sjsxp&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;/exclusion&amp;gt;&lt;br /&gt;&amp;lt;/exclusions&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun.xml.bind&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxb-impl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.7&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Above fragment of dependencies should exclude followings jar from your applications:&lt;br /&gt;jaxws-api-2.1.jar, jaxb-impl-2.1.7.jar, jaxws-api-2.1.jar и jaxws-rt-2.1.4.jar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-8550055797078480999?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/8550055797078480999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=8550055797078480999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8550055797078480999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8550055797078480999'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/10/resolve-nullpointerexception-at.html' title='Resolve NullPointerException at weblogic.wsee.jaxws.spi.ClientIdentityRegistry.internalAddClientRuntimeMBean'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-710734246675645369</id><published>2010-10-04T19:05:00.002+03:00</published><updated>2011-06-04T20:04:30.229+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><title type='text'>Oracle service bus logging with custom JDBCAppander</title><content type='html'>Last few weeks we are upgrading logging system of our MDM system, we have design a central place for all logging data. With central log system we can afford to manage our system very effectively and debug any fatal error. With OSB it's not straight forword to pulling logging data from console to somewhere, because a few subsystem uses different appender to write and filter log. See the following link to know more about &lt;a href="http://download.oracle.com/docs/cd/E15523_01/web.1111/e13739/logging_services.htm"&gt;oracle logging service&lt;/a&gt;. In my previous &lt;a href="http://frommyworkshop.blogspot.com/2010/07/writing-weblogic-logs-to-database-table.html"&gt;post&lt;/a&gt; i demonstrate how to use log4j JDBC appender in log4j.properties to redirect log to database table.&lt;br /&gt;For the current post we also uses same DDL to create tables&lt;br /&gt;1)&lt;br /&gt;&lt;pre class="brush: sql"&gt;CREATE TABLE LOGS &lt;br /&gt;(USER_ID VARCHAR2(20), &lt;br /&gt;DOMAIN  varchar2(50), &lt;br /&gt;DATED   DATE NOT NULL, &lt;br /&gt;LOGGER  VARCHAR2(500) NOT NULL, &lt;br /&gt;LEVEL   VARCHAR2(50) NOT NULL, &lt;br /&gt;MESSAGE VARCHAR2(4000) NOT NULL &lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Create a simple maven project with a few dependency to create custom JDBCAppender&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;ru.xyz.wl.logging&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jdbc-logging&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;name&amp;gt;jdbc-logging&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;wlfullclient&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;wllog4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;log4j&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;log4j&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;               &lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;assume that you have already installed wlfullclient.jar and wllog4j.jar in your maven local repository.&lt;br /&gt;3) Now it's time for coding, create two java class as follows:&lt;br /&gt;&lt;pre class="brush: java"&gt;package ru.xyz.wl.logging;&lt;br /&gt;&lt;br /&gt;import org.apache.log4j.AppenderSkeleton;&lt;br /&gt;import org.apache.log4j.spi.LoggingEvent;&lt;br /&gt;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.sql.DataSource;&lt;br /&gt;import java.sql.*;&lt;br /&gt;&lt;br /&gt;import weblogic.logging.log4j.WLLog4jLogEvent;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;public class JDBCAppender extends AppenderSkeleton {&lt;br /&gt;private Connection conn;&lt;br /&gt;private PreparedStatement stm;&lt;br /&gt;private String subSysName;&lt;br /&gt;public JDBCAppender(String subSysName) {&lt;br /&gt;this.subSysName = subSysName;&lt;br /&gt;// get Initial ctx&lt;br /&gt;try {&lt;br /&gt;InitialContext ctx = new InitialContext();&lt;br /&gt;DataSource dataSource = (DataSource) ctx.lookup("jdbc/logDataSource");&lt;br /&gt;conn = dataSource.getConnection();&lt;br /&gt;stm = conn.prepareStatement("INSERT INTO EXT_LOGS2 VALUES(?,?,?,?,?,?)");&lt;br /&gt;stm.setEscapeProcessing(true);&lt;br /&gt;conn.setAutoCommit(true);&lt;br /&gt;&lt;br /&gt;} catch (NamingException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} catch(SQLException e){&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;protected void append(LoggingEvent event) {&lt;br /&gt;WLLog4jLogEvent logEvent = (WLLog4jLogEvent) event;&lt;br /&gt;try {&lt;br /&gt;stm.setString(1, logEvent.getUserId());&lt;br /&gt;stm.setString(2, subSysName);&lt;br /&gt;//stm.setDate(3, new Date(logEvent.getTimestamp()));&lt;br /&gt;stm.setTimestamp(3, new Timestamp(logEvent.getTimestamp()));&lt;br /&gt;stm.setString(4, logEvent.getLoggerName());&lt;br /&gt;stm.setString(5, logEvent.getLevel().toString());&lt;br /&gt;stm.setString(6, logEvent.getLogMessage());&lt;br /&gt;stm.executeUpdate();&lt;br /&gt;} catch (SQLException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void close() {&lt;br /&gt;try {&lt;br /&gt;stm.close();&lt;br /&gt;conn.close();&lt;br /&gt;} catch (SQLException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean requiresLayout() {&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;create AppenderStartup class to start up the appender&lt;br /&gt;&lt;pre class="brush: java"&gt;package ru.xyz.wl.logging;&lt;br /&gt;&lt;br /&gt;import org.apache.log4j.Logger;&lt;br /&gt;import weblogic.logging.log4j.Log4jLoggingHelper;&lt;br /&gt;import weblogic.logging.log4j.WLLog4jLevel;&lt;br /&gt;import weblogic.logging.LoggerNotAvailableException;&lt;br /&gt;import weblogic.logging.NonCatalogLogger;&lt;br /&gt;&lt;br /&gt;import java.sql.Date;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* User: sahmed&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;public class AppenderStartup {&lt;br /&gt;public static void main(String... args) {&lt;br /&gt;System.out.println("Starting up .. Log4j appneder");&lt;br /&gt;if(args.length &amp;lt; 2){&lt;br /&gt;System.out.println("JDBC appender not configured ..");&lt;br /&gt;System.out.println("AppenderStartup argumemnts must be 2, usages ERCI WARNING, where ERCI - Sub system name, WARNING log level");&lt;br /&gt;System.out.println("Put arguments and restart Admin server.");&lt;br /&gt;System.err.println("JDBC appender not configured ..");&lt;br /&gt;return;&lt;br /&gt;}&lt;br /&gt;try {&lt;br /&gt;Logger serverLogger = Log4jLoggingHelper.getLog4jServerLogger();&lt;br /&gt;//Logger domainLogger = Log4jLoggingHelper.getLog4jDomainLogger();&lt;br /&gt;JDBCAppender jdbcAppender = new JDBCAppender(args[0]);&lt;br /&gt;serverLogger.addAppender(jdbcAppender);&lt;br /&gt;jdbcAppender.setThreshold(WLLog4jLevel.toLevel(args[1].toUpperCase(), WLLog4jLevel.INFO));&lt;br /&gt;//domainLogger.addAppender(jdbcAppender);&lt;br /&gt;&lt;br /&gt;//NonCatalogLogger nc = new NonCatalogLogger("MyAppenderTest");&lt;br /&gt;//nc.info("Test INFO message");&lt;br /&gt;//nc.warning("Test WARNING message");&lt;br /&gt;} catch (LoggerNotAvailableException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;this class required two arguments to startup, one of them are subsystem name and another one is the Log level, by default it's sets log level INFO. Now we are ready to implements our library to redirect all the log file to database tables. 4)First of all we have to create a datasource on web logic server with JNDI name jdbc/logDataSource and configure it. Next we have to put following libs on weblgic Domain lib directory &lt;br /&gt;&lt;ul&gt;&lt;li&gt;jdbc-logging-1.0-SNAPSHOT.jar&lt;/li&gt;&lt;li&gt;log4j-1.2.15.jar&lt;/li&gt;&lt;li&gt;ojdbc-14.jar (optional)&lt;/li&gt;&lt;li&gt;wllog4j.jar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Next logon to weblogic web console and create a startup class with AppenderStartup&lt;br /&gt;Class Name :  ru.xyz.wl.logging.AppenderStartup&lt;br /&gt;arguments : erci WARNING, where erci - subsystme name, WARNING log level&lt;br /&gt;5) "Enable Redirect stdout logging enabled" and "Redirect stderr logging enabled" on &lt;br /&gt;environment-&amp;gt;server-&amp;gt; admin server-&amp;gt; logging-&amp;gt; advance&lt;br /&gt;also Select Logging implemention LOG4J.&lt;br /&gt;6) restart admin server.&lt;br /&gt;Now all the log messages from Server logger will redirect not only to console window but also to database table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-710734246675645369?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/710734246675645369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=710734246675645369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/710734246675645369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/710734246675645369'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/10/oracle-service-bus-logging-with-custom.html' title='Oracle service bus logging with custom JDBCAppander'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3692855233864668549</id><published>2010-10-03T11:08:00.001+03:00</published><updated>2011-06-04T20:05:18.579+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open office org'/><category scheme='http://www.blogger.com/atom/ns#' term='JODConverter'/><title type='text'>A quick fix to set Locale on OOO (Open office org)</title><content type='html'>One of our web application uses OOO(open office org 3.2) to convert msOffice file to HTML file. There are a open source project named &lt;a href="http://www.artofsolving.com/opensource"&gt;JodConverter&lt;/a&gt; which helps you to do most of the low level works such as connecting to server and much more. For quick start you can see my &lt;a href="http://frommyworkshop.blogspot.com/2010/06/jodreports-is-alive.html"&gt;previous&lt;/a&gt; post. Few days ago we got a bug about Russian encoding after converting big Ms Word file to Html, as a usual our developers done their all the best to get rid of it, put directives on html and much more, but all in vain. Then i tried to change the OOO settings which recommended on ooo forums. &lt;br /&gt;1) Change HTML compatibility - character set UTF-8 which should fix the problem but it havn't&lt;br /&gt;2) Then change the Language settings -&gt; set Locale for Russian and the bug fixes.&lt;br /&gt;see the screen shot&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/TKg9bite46I/AAAAAAAAAXo/eoQCUOgXxu4/s1600/Screen+shot+2010-10-03+at+12.21.55+PM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 182px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/TKg9bite46I/AAAAAAAAAXo/eoQCUOgXxu4/s320/Screen+shot+2010-10-03+at+12.21.55+PM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5523732486353249186" /&gt; Preferences&lt;/a&gt;&lt;br /&gt;During my annual vacation, colleague could not manage to change the preferences to the production server. He as usual connect to server by ssl client on cli mode and thus could't change to the preferences. We usually use &lt;a href="http://winscp.net/eng/index.php"&gt;winscp&lt;/a&gt; or standard ssl client to connect to remote Solaris server. There are another very well tools &lt;a href="http://www.netsarang.com/"&gt;xManager&lt;/a&gt; which will help you to bring remote linux/unix desktop to your windows desktop. Another very useful command is display LocalIP to tunneling gui from remote computer to local.&lt;br /&gt;&lt;pre class="brush: xml"&gt;DISPLAY=HOST:0.0, export DISPLAY&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For that remote port should be open for you to tunneling.&lt;br /&gt;My colleague found another very quick fix to solve the problem with encoding. Through winscp he connects to the remote server and change the default locale to Russian by the following code on Linguistic.xcu file. Here is the fragments of the file to change&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;node oor:name="General"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;prop oor:name="DefaultLocale" oor:type="xs:string"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;value&gt;ru-RU&amp;lt;/value&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/prop&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/node&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;lingusitic.xcu file should be found on Solris file systme ~/.openoffice.org/3/user/registry/data/org/openoffice/Office/Linguistic.xcu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3692855233864668549?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3692855233864668549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3692855233864668549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3692855233864668549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3692855233864668549'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/10/quick-fix-to-set-locale-on-ooo-open.html' title='A quick fix to set Locale on OOO (Open office org)'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/TKg9bite46I/AAAAAAAAAXo/eoQCUOgXxu4/s72-c/Screen+shot+2010-10-03+at+12.21.55+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6184126297782011501</id><published>2010-08-16T10:08:00.001+03:00</published><updated>2011-06-04T20:07:10.435+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ibatis'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy authentication'/><title type='text'>Ibatis3 with oracle proxy authentication</title><content type='html'>Most of all oracle security features could be done by oracle proxy authentication. Oracle proxy authentication provides fine grained access control for temporary users of the account, without compromising the original password even enabling database auditing and logging. In this current post i will first setup database for proxy authentication and later will connect to it by connection pool.&lt;br /&gt;&lt;br /&gt;1) Database setup:&lt;br /&gt;&lt;pre class="brush: sql"&gt;sqlplus /nolog&lt;br /&gt;conn sys/manager@orcl as sysdba&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;create a &lt;span style="font-weight: bold;"&gt;proxy user&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;create user          proxy_user&lt;br /&gt;identified by        pw_proxy&lt;br /&gt;default tablespace   users&lt;br /&gt;temporary tablespace temp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;create a &lt;span style="font-weight: bold;"&gt;target user&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;create user          target_user&lt;br /&gt;identified by        pw_target&lt;br /&gt;default tablespace   users&lt;br /&gt;temporary tablespace temp&lt;br /&gt;quota unlimited on   users;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;now we will alter target user to connect through proxy user&lt;br /&gt;&lt;pre class="brush: sql"&gt;alter user target_user grant connect through proxy_user;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Also grant create session and the create table system privilege&lt;br /&gt;&lt;pre class="brush: sql"&gt;grant create session,&lt;br /&gt;create table&lt;br /&gt;to    target_user;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that only target user has connect session privilege. Now we will create one table for demonstration purpose and insert some data on it.&lt;br /&gt;&lt;pre class="brush: sql"&gt;connect target_user/pw_target;&lt;br /&gt;&lt;br /&gt;create table FDC_OWNERSHIP (&lt;br /&gt;name  varchar2(200)&lt;br /&gt;);&lt;br /&gt;insert into FDC_OWNERSHIP values ('val1');&lt;br /&gt;insert into FDC_OWNERSHIP values ('val2');&lt;br /&gt;insert into FDC_OWNERSHIP values ('val3');&lt;br /&gt;commit;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now proxy user could connect with syntax proxy_user[targer_user]&lt;br /&gt;&lt;pre class="brush: sql"&gt;connect proxy_user[target_user]/pw_proxy;&lt;br /&gt;select count(*) from FDC_OWNERSHIP;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;All our database setup completed, now we can care about ibatis3. For demonstration purpose we will create a Mapper interface and a connection factory class for get the proxy connection.&lt;br /&gt;&lt;pre class="brush: java"&gt;public interface LsaDbSqlMapper {&lt;br /&gt;@Select("select own.name from ${schemaName}.FDC_OWNERSHIP own")&lt;br /&gt;List&lt;string&gt; orgNames (@Param("schemaName") final String schemName);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the quick implemention of the connection factory class:&lt;br /&gt;&lt;pre class="brush: java"&gt;public class LsaSessionFactory {&lt;br /&gt;private LsaSessionFactory() {    }&lt;br /&gt;private static SqlSessionFactory sessionFactory;&lt;br /&gt;private static OracleOCIConnectionPool ociPool;&lt;br /&gt;&lt;br /&gt;private static String tnsAlias = "(DESCRIPTION =\n" +&lt;br /&gt;"    (ADDRESS_LIST =\n" +&lt;br /&gt;"      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.10.57)(PORT = 1521))\n" +&lt;br /&gt;"    )\n" +&lt;br /&gt;"    (CONNECT_DATA =\n" +&lt;br /&gt;"      (SERVICE_NAME = xyz)\n" +&lt;br /&gt;"    )\n" +&lt;br /&gt;"  )";&lt;br /&gt;&lt;br /&gt;private static DataSource getOciDataSource(String username, String password) throws SQLException{&lt;br /&gt;if(ociPool == null){&lt;br /&gt;ociPool = new OracleOCIConnectionPool();&lt;br /&gt;ociPool.setURL("jdbc:oracle:oci:@"+ tnsAlias);&lt;br /&gt;ociPool.setUser(username);&lt;br /&gt;ociPool.setPassword(password);&lt;br /&gt;Properties prop = new Properties();&lt;br /&gt;prop.setProperty(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT, "3");&lt;br /&gt;prop.setProperty(OracleOCIConnectionPool.CONNPOOL_MAX_LIMIT, "5");&lt;br /&gt;prop.setProperty(OracleOCIConnectionPool.CONNPOOL_INCREMENT, "1");&lt;br /&gt;ociPool.setPoolConfig(prop);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return ociPool;&lt;br /&gt;}&lt;br /&gt;public static SqlSessionFactory getSessionFactory(String username, String password){&lt;br /&gt;if(sessionFactory == null){&lt;br /&gt;try {&lt;br /&gt;Environment env = new Environment("Development", new JdbcTransactionFactory(),getOciDataSource(username, password));&lt;br /&gt;Configuration config = new Configuration(env);&lt;br /&gt;config.addMapper(LsaDbSqlMapper.class);&lt;br /&gt;&lt;br /&gt;sessionFactory = new SqlSessionFactoryBuilder().build(config);&lt;br /&gt;} catch (SQLException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return sessionFactory;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static Connection getProxyConnection(String proxyUserName) throws SQLException{&lt;br /&gt;if(ociPool != null ){&lt;br /&gt;Properties userNameProp = new Properties();&lt;br /&gt;userNameProp.setProperty(OracleOCIConnectionPool.PROXY_USER_NAME,proxyUserName);&lt;br /&gt;return ociPool.getProxyConnection(OracleOCIConnectionPool.PROXYTYPE_USER_NAME, userNameProp);&lt;br /&gt;}&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;public static void closePool() throws SQLException{&lt;br /&gt;if(ociPool != null){&lt;br /&gt;ociPool.close();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the simple test of the connection factory&lt;br /&gt;&lt;pre class="brush: java"&gt;public class Service {&lt;br /&gt;public static void main(String[] args) throws Exception{&lt;br /&gt;System.out.println("Test Proxy authentication ...");&lt;br /&gt;SqlSession session = LsaSessionFactory.getSessionFactory("PROXY_USER","pw_proxy").openSession(LsaSessionFactory.getProxyConnection("target_user"));&lt;br /&gt;LsaDbSqlMapper sqlMapper = session.getMapper(LsaDbSqlMapper.class);&lt;br /&gt;List&lt;string&gt; orgNames = sqlMapper.orgNames("eos");&lt;br /&gt;System.out.println("Orgs:"+ orgNames);&lt;br /&gt;&lt;br /&gt;LsaSessionFactory.closePool();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;1) &lt;a href="http://www.mcgraw-hill.co.uk/html/0072231300.html"&gt;Effective Oracle Database 10g Security by Design&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://www.adp-gmbh.ch/ora/admin/proxy_users.html"&gt;René Nyffenegger's collection of things on the web&lt;/a&gt;&lt;br /&gt;3) &lt;a href="http://blogs.oracle.com/olaf/2010/04/using_oracle_proxy_authenticat.html"&gt;Using Oracle Proxy Authentication with JPA (EclipseLink-Style)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6184126297782011501?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6184126297782011501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6184126297782011501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6184126297782011501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6184126297782011501'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/08/ibatis3-with-oracle-proxy.html' title='Ibatis3 with oracle proxy authentication'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-817583858206171619</id><published>2010-07-28T19:28:00.001+03:00</published><updated>2011-06-04T20:08:08.170+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><title type='text'>Writing weblogic logs to database table</title><content type='html'>By default, oracle weblogic server logging service uses an implementation, based on the Java Logging APIs by  using the LogMBean.isLog4jLoggingEnabled attribute. With a few effort you can use log4j with weblogic logging service. In the Administration Console, you can specify Log4j or keep the default Java Logging implementation. In this blog i will describe how to configure log4j with weblogic logging service and writes all the logs messages to database table.&lt;br /&gt;Most of all cases it's sufficient to writes log on files, however it's better to get all the logs on table to query on it. In our case we have 3 different web logic servers in our project and our consumer need to get all the logs in one central place to diagnose if something goes wrong.&lt;br /&gt;First of all we will create a simple table on our oracle database schema and next configure all other parts.&lt;br /&gt;Here we go:&lt;br /&gt;1) &lt;pre class="brush: sql"&gt;CREATE TABLE LOGS&lt;br /&gt;(USER_ID VARCHAR2(20),&lt;br /&gt;DOMAIN  varchar2(50),&lt;br /&gt;DATED   DATE NOT NULL,&lt;br /&gt;LOGGER  VARCHAR2(500) NOT NULL,&lt;br /&gt;LEVEL   VARCHAR2(50) NOT NULL,&lt;br /&gt;MESSAGE VARCHAR2(4000) NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Now we will create a log4j.properties file with following contents and save it %DOMAIN_HOME%&lt;br /&gt;&lt;pre class="brush: xml"&gt;log4j.rootLogger=INFO, DB&lt;br /&gt;log4j.logger.com.bea.weblogic.*=INFO, DB&lt;br /&gt;&lt;br /&gt;log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender&lt;br /&gt;# Set JDBC URL&lt;br /&gt;log4j.appender.DB.URL=jdbc:oracle:thin:@mercury.blu.com:1521:FTSDB&lt;br /&gt;# Set Database Driver&lt;br /&gt;log4j.appender.DB.driver=oracle.jdbc.OracleDriver&lt;br /&gt;# Set database user name and password&lt;br /&gt;log4j.appender.DB.user=xyz&lt;br /&gt;log4j.appender.DB.password=xyz&lt;br /&gt;# Set the SQL statement to be executed.&lt;br /&gt;log4j.appender.DB.sql=INSERT INTO EXT_LOGS VALUES('%x','OSB_DOMAIN',sysdate,'%C','%p','%m')&lt;br /&gt;log4j.appender.DB.layout=org.apache.log4j.PatternLayout&lt;br /&gt;#log4j.appender.DB.layout.ConversionPattern=%d{dd.mm.yyyy HH:mm:ss.SSS} - %m%n&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3) Copy log4j-1.2.9.jar &amp;amp; wllog4j.jar and ojdbc14.jar under domain_root/lib folder.&lt;br /&gt;4) edit setDomainEnv.sh with following JAVA_OPTION parameter&lt;br /&gt;set JAVA_OPTIONS=-Dweblogic.log.Log4jLoggingEnabled=true&lt;br /&gt;which will active log4j for logging service&lt;br /&gt;5) Most critical tips, add following parameter after JAVA_OPTIONS&lt;br /&gt;set LOG4J_CONFIG_FILE=%DOMAIN_HOME%/log4j.properties&lt;br /&gt;which will force weblogic server to read the log4j configure file from the specified location.&lt;br /&gt;6) Restart the server and you should find all the log messages on database table.&lt;br /&gt;You may also use custom connection pool mechanism with a little effort with JDBCAppender.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-817583858206171619?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/817583858206171619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=817583858206171619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/817583858206171619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/817583858206171619'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/07/writing-weblogic-logs-to-database-table.html' title='Writing weblogic logs to database table'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2775139986901262377</id><published>2010-07-16T14:24:00.001+03:00</published><updated>2011-06-04T20:08:49.708+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache CXF'/><title type='text'>Configure apache CXF project to deploy on Weblogic server 10.3.2.0</title><content type='html'>Last week we have migrated our one of web service project on apache CXF. Apache CXF provides simplified security package to authentication and authorization for web services. As usual we decided to use Weblogic as our favorite application server to deploy and run migrated service. This blog post is consist of a few tips to configure properly Apache CXF project to deploy on Weblogic server. Most of all tips i have got from the following link &lt;a href="http://blog.xebia.com/2009/07/14/jax-ws-cxf-and-saaj-on-oracle-weblogic-103/"&gt;JAX-WS, CXF and SAAJ on Oracle Weblogic 10.3&lt;/a&gt;, but it was not sufficient to deploy successfully, a few additional task needed to deploy Apcahe CXF on Weblogic. This current post is all about this tips.&lt;br /&gt;&lt;br /&gt;First of all we must configure and prepare Apache CXF project to deploy.&lt;br /&gt;1) Add the following fragment of xml configuration to you weblogic.xml&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;container-descriptor&amp;gt;&lt;br /&gt;&amp;lt;prefer-web-inf-classes&amp;gt;true&amp;lt;/prefer-web-inf-classes&amp;gt;&lt;br /&gt;&amp;lt;/container-descriptor&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;which will force weblogic to use library from WEB-INF/lib. By default Apache CXF uses geronimo jax-ws implementations to execute webservices.&lt;br /&gt;2) Add javax.jws.* package name into prefer-application-packages as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;wls:prefer-application-packages&amp;gt;&lt;br /&gt;&amp;lt;wls:package-name&amp;gt;antlr.*&amp;lt;/wls:package-name&amp;gt;&lt;br /&gt;&amp;lt;wls:package-name&amp;gt;org.apache.*&amp;lt;/wls:package-name&amp;gt;&lt;br /&gt;&amp;lt;wls:package-name&amp;gt;org.joda.time.*&amp;lt;/wls:package-name&amp;gt;&lt;br /&gt;&amp;lt;wls:package-name&amp;gt;javax.jws.*&amp;lt;/wls:package-name&amp;gt;&lt;br /&gt;&amp;lt;/wls:prefer-application-packages&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3) Exclude a few libraries from WEB-INF/lib:&lt;br /&gt;saaj-api and it's implementation saaj-impl. Because of conflict with weblogic saaj-api-1.1.jar. You can exclude these two jars through maven dependencies exclusion feature or through maven-war-plugin.&lt;br /&gt;to avoid this following error&lt;br /&gt;"weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory"&lt;br /&gt;you should also exclude xml-apis-*.jar from WEB-INF/lib directory. &lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;webResources&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/webapp&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;true&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;/webResources&amp;gt;&lt;br /&gt;&amp;lt;attachClasses&amp;gt;true&amp;lt;/attachClasses&amp;gt;&lt;br /&gt;&amp;lt;packagingExcludes&amp;gt;WEB-INF/lib/saaj-api*.jar, WEB-INF/lib/xml-apis-*.jar&amp;lt;/packagingExcludes&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After archiving into ear archive it's time to configure Weblogic system properties to deploy.&lt;br /&gt;In a few words you should add the following system property &lt;br /&gt;"-Djavax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl" into Weblogic startup script or setDomainEnv.sh.&lt;br /&gt;This will enable the JSE6 saaj implementation for Weblogic server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2775139986901262377?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2775139986901262377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2775139986901262377' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2775139986901262377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2775139986901262377'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/07/configure-apache-cxf-project-to-deploy.html' title='Configure apache CXF project to deploy on Weblogic server 10.3.2.0'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6357783673260429351</id><published>2010-06-03T19:19:00.001+03:00</published><updated>2011-06-04T20:09:41.407+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JODConverter'/><title type='text'>JODReports is alive</title><content type='html'>Yesterday we got a requirement from our consumer to convert MS office document to Html as like a google feature "View as html" on portal. As always it was very urgent and with high priority task on Jira. At first i have tried to solve it on regular way but found that there is no straight forword way on java to manage the task. A few commercial product has available on the web to solve the task. One of them are &lt;a href="http://www.davisor.com/publishor/"&gt;Davisor&lt;/a&gt;, 1 cpu license is about 2400 euro. Another one is &lt;a href="http://www.aspose.com/categories/.net-components/aspose.pdf-for-.net/default.aspx"&gt;Aspose&lt;/a&gt;. Download their trail version and first of all i discover that Aspose has not support convert Pdf to Html. Davisor convert MS office document not very well, nested table couldn't convert to html at all.&lt;br /&gt;After a few googling i have found some information to use Open Office Org (ooo) to convert MS office documents to any format including PDF, html e.t.c. Also found a few fragment of code and API documents of OOO and &lt;a href="http://www.artofsolving.com/opensource"&gt;JODConvertor&lt;/a&gt; open source to convert MS office documents. With great surprise i found that JOdConverter implements OOO api and it's out of box api to convert documents.&lt;br /&gt;JODconverter library provides:&lt;br /&gt;1) CLI to convert documents from command line&lt;br /&gt;2) High level Java api&lt;br /&gt;3) Web service to convert documents&lt;br /&gt;4) Maven 2 plugin&lt;br /&gt;JodReports even provides very well documented user guide to quick start. All you have to need is to start Open office application as and service and you are ready to go.&lt;br /&gt;For starting OOO follow the command &lt;br /&gt;ip-95-221-157-44:~ samim$ /Applications/OpenOffice.org.app/Contents/MacOS/soffice -accept="socket,host=localhost,port=8100;urp;" -nologo -headless&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hB7TA2a94zk/TAfiH4ZJwXI/AAAAAAAAAXQ/2gkTX-uUoW8/s1600/Screen+shot+2010-06-03+at+9.09.30+PM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://2.bp.blogspot.com/_hB7TA2a94zk/TAfiH4ZJwXI/AAAAAAAAAXQ/2gkTX-uUoW8/s400/Screen+shot+2010-06-03+at+9.09.30+PM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5478596096744341874" /&gt;&lt;/a&gt;&lt;br /&gt;Now you are ready to make some experiment with MS office documents,&lt;br /&gt;&lt;pre class="brush: java"&gt;OpenOfficeConnection conn = new SocketOpenOfficeConnection(8100);&lt;br /&gt;try {&lt;br /&gt;conn.connect();&lt;br /&gt;DocumentConverter converter = new OpenOfficeDocumentConverter(conn);&lt;br /&gt;converter.convert(new File("/Users/samim/Downloads/big.doc"), new File("/Users/samim/Downloads/big.html"));&lt;br /&gt;} catch (ConnectException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} finally {&lt;br /&gt;conn.disconnect();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You could also customize your export options whenever convert to PDF documents. JOdConverter save my a lot of time and solve my task and satisfy our customer. Many thank't to the developers of the library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6357783673260429351?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6357783673260429351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6357783673260429351' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6357783673260429351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6357783673260429351'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/06/jodreports-is-alive.html' title='JODReports is alive'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hB7TA2a94zk/TAfiH4ZJwXI/AAAAAAAAAXQ/2gkTX-uUoW8/s72-c/Screen+shot+2010-06-03+at+9.09.30+PM.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3260008766877680998</id><published>2010-05-15T14:17:00.002+03:00</published><updated>2011-06-04T20:11:24.120+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ibatis'/><title type='text'>Playing with Ibatis *.*Provider to create dynamic query</title><content type='html'>Last week, in one of our project, which we decided to upgrade sql queries on ibatis needed dynamic sql query execution. As we decided to use annotations as much as possible on sql mapper - it's seems not a straight to build dynamic query. At first tried to do something as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;DONOT TRY THIS - IT'S WRONG WAY TO BUILD DYNAMIC QUERY&lt;br /&gt;@Update("update ${schemaName}.fdc_uf uf" +&lt;br /&gt;" set uf.reestr_date = #{reestDate}," +&lt;br /&gt;" uf.reestr_number = #{reestNum}" +&lt;br /&gt;" where uf.reestr_number IS NULL AND uf.reestr_date IS NULL and uf.id in " +&lt;br /&gt;" &amp;lt;foreach item="item" index="index" collection="list" open="(" separator="," close=")"&amp;gt;"+&lt;br /&gt;" #{item}"+&lt;br /&gt;" &amp;lt;/foreach&amp;gt;")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After some tries, read the user guide attentively, found there are another a few way to build dynamic query, one of them to use Select/Insert/UpdateProvider.&lt;br /&gt;These alternative SQL annotations allow you to specify a class name and a method that will return the SQL to run at execution time. Upon executing the mapped statement, iBATIS will instantiate the class, and execute the method, as specified by the provider.&lt;br /&gt;Here is the required steps to achieve the goals:&lt;br /&gt;1) First we will create the Builder to build the sql&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blue.ibatis.test.dao;&lt;br /&gt;&lt;br /&gt;import java.sql.Date;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Locale;&lt;br /&gt;import java.text.DateFormat;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;&lt;br /&gt;import static org.apache.ibatis.jdbc.SelectBuilder.*;&lt;br /&gt;//import static org.apache.ibatis.jdbc.SqlBuilder.*;&lt;br /&gt;public class SqlBuilder {&lt;br /&gt;&lt;br /&gt;public String simpleUpdate(final FdcUf fdcUf){&lt;br /&gt;final DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("ru"));&lt;br /&gt;String date = df.format(fdcUf.getReestrDate());&lt;br /&gt;StringBuilder sql= new StringBuilder("update fdc_uf uf " +&lt;br /&gt;" set uf.reestr_number = '"+fdcUf.getReestrNom()+"' ," +&lt;br /&gt;" uf.reestr_date = to_date('"+ date+"',"+" '"+getDatePattern()+"')"+&lt;br /&gt;" where uf.id in (") ;&lt;br /&gt;for(Long l : fdcUf.getIds()){&lt;br /&gt;sql.append(l);&lt;br /&gt;sql.append(",");&lt;br /&gt;}&lt;br /&gt;sql.deleteCharAt(sql.lastIndexOf(","));&lt;br /&gt;sql.append(")");&lt;br /&gt;System.out.println("Sql:"+ sql.toString());&lt;br /&gt;&lt;br /&gt;return sql.toString();&lt;br /&gt;}&lt;br /&gt;public String getufById(long id){&lt;br /&gt;return "select uf.nom_uf from fdc_uf uf where uf.id="+id;    &lt;br /&gt;}&lt;br /&gt;private String getDatePattern(){&lt;br /&gt;return ((SimpleDateFormat)DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("ru"))).toPattern();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ibatis user guide offers SelectBuilder and SqlBuilder class to build sql queries dynamical. I have found the SelectBuilder but couldn't found the SqlBuilder. For that reason uses Stringbuilder on above code fragment.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/S-6KydTFRjI/AAAAAAAAAXI/3OjWfeoH-qo/s1600/Screen+shot+2010-05-15+at+3.41.12+PM.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 420px; height: 150px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/S-6KydTFRjI/AAAAAAAAAXI/3OjWfeoH-qo/s320/Screen+shot+2010-05-15+at+3.41.12+PM.png" alt="" id="BLOGGER_PHOTO_ID_5471463196764489266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;See the screen shot from the user guide about SqlBuilder, but i havn't found it.&lt;br /&gt;Now we have to Edit Mapper class.&lt;br /&gt;&lt;pre class="brush: java"&gt;@UpdateProvider(type = com.blue.ibatis.test.dao.SqlBuilder.class, method = "simpleUpdate")&lt;br /&gt;void simpleUpdate(final FdcUf fdcUf);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and we are ready to invoke mapper.&lt;br /&gt;Here is the simple pojo of the FdcUf&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blue.ibatis.test.dao;&lt;br /&gt;&lt;br /&gt;import java.sql.Date;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;public class FdcUf {&lt;br /&gt;private long id;&lt;br /&gt;private String reestrNom;&lt;br /&gt;private Date reestrDate;&lt;br /&gt;private List &amp;lt;long&amp;gt; ids;&lt;br /&gt;public FdcUf() {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public long getId() {&lt;br /&gt;return id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setId(long id) {&lt;br /&gt;this.id = id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getReestrNom() {&lt;br /&gt;return reestrNom;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setReestrNom(String reestrNom) {&lt;br /&gt;this.reestrNom = reestrNom;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Date getReestrDate() {&lt;br /&gt;return reestrDate;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setReestrDate(Date reestrDate) {&lt;br /&gt;this.reestrDate = reestrDate;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public List &amp;lt;long&amp;gt; getIds() {&lt;br /&gt;return ids;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setIds(List&amp;lt;long&amp;gt; ids) {&lt;br /&gt;this.ids = ids;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Happy Coding&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3260008766877680998?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3260008766877680998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3260008766877680998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3260008766877680998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3260008766877680998'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/05/playing-with-ibatis-provider-to-create.html' title='Playing with Ibatis *.*Provider to create dynamic query'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/S-6KydTFRjI/AAAAAAAAAXI/3OjWfeoH-qo/s72-c/Screen+shot+2010-05-15+at+3.41.12+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3810296089088030796</id><published>2010-04-01T20:23:00.001+03:00</published><updated>2011-06-04T20:12:19.399+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ibatis'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Call pl/sql package by Ibatis 3</title><content type='html'>Last few weeks i have been working with a project ,where we decided to use &lt;a href="http://ibatis.apache.org/java.cgi"&gt;Ibatis&lt;/a&gt; for generating complex report. Ibatis is a very small smart ORM tools to execute complex query but, in version 3, developers made a vast change and it's difficult to migrate from version 2 to version 3. &lt;br /&gt;In this post i am going to describe how to call pl/sql package function from within Ibatis3.&lt;br /&gt;First of all we will create two small tables and a pl/sql package for demonstration:&lt;br /&gt;&lt;pre class="brush: sql"&gt;-- Create table&lt;br /&gt;create table ADDRESSES&lt;br /&gt;(&lt;br /&gt;ADR_ID      INTEGER not null,&lt;br /&gt;ADR_CITY    VARCHAR2(15),&lt;br /&gt;ADR_COUNTRY VARCHAR2(15) not null&lt;br /&gt;);&lt;br /&gt;alter table ADDRESSES&lt;br /&gt;add primary key (ADR_ID);&lt;br /&gt;create table PERSONS&lt;br /&gt;(&lt;br /&gt;PRS_ID         INTEGER not null,&lt;br /&gt;PRS_FATHER_ID  INTEGER,&lt;br /&gt;PRS_MOTHER_ID  INTEGER,&lt;br /&gt;PRS_ADR_ID     INTEGER,&lt;br /&gt;PRS_FIRST_NAME VARCHAR2(15),&lt;br /&gt;PRS_SURNAME    VARCHAR2(15)&lt;br /&gt;);&lt;br /&gt;/&lt;br /&gt;alter table PERSONS&lt;br /&gt;add constraint PRS_ADR_FK foreign key (PRS_ADR_ID)&lt;br /&gt;references ADDRESSES (ADR_ID);&lt;br /&gt;alter table PERSONS&lt;br /&gt;add constraint PRS_PRS_FATHER_FK foreign key (PRS_FATHER_ID)&lt;br /&gt;references PERSONS (PRS_ID);&lt;br /&gt;alter table PERSONS&lt;br /&gt;add constraint PRS_PRS_MOTHER_FK foreign key (PRS_MOTHER_ID)&lt;br /&gt;references PERSONS (PRS_ID);&lt;br /&gt;&lt;br /&gt;create or replace package IbatisTest is&lt;br /&gt;&lt;br /&gt;function getPersonsById(p_id integer) return varchar2;&lt;br /&gt;function addPerson(p_name varchar2, p_fname varchar2, p_add integer)return integer;&lt;br /&gt;&lt;br /&gt;end IbatisTest;&lt;br /&gt;/&lt;br /&gt;create or replace package body IbatisTest is&lt;br /&gt;&lt;br /&gt;function getPersonsById(p_id integer) return varchar2 is&lt;br /&gt;l_name varchar2(200);&lt;br /&gt;begin&lt;br /&gt;select &lt;br /&gt;p.prs_first_name&lt;br /&gt;into l_name       &lt;br /&gt;from persons p&lt;br /&gt;where p.prs_id = p_id;    &lt;br /&gt;&lt;br /&gt;return(l_name);&lt;br /&gt;end;&lt;br /&gt;function addPerson(p_name varchar2, p_fname varchar2, p_add integer)return integer &lt;br /&gt;is&lt;br /&gt;p_id integer;       &lt;br /&gt;begin&lt;br /&gt;select common_seq.nextval &lt;br /&gt;into p_id &lt;br /&gt;from dual;&lt;br /&gt;insert into persons(prs_id, prs_first_name, prs_surname, prs_adr_id) &lt;br /&gt;values (p_id, p_fname, p_name, p_add) returning prs_id into p_id;&lt;br /&gt;commit;       &lt;br /&gt;return (p_id);&lt;br /&gt;end;  &lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;null;&lt;br /&gt;end IbatisTest;&lt;br /&gt;/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;next we we will develop our *Mapper.xml &lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE mapper&lt;br /&gt;PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"&lt;br /&gt;"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"&amp;gt;&lt;br /&gt;&amp;lt;mapper namespace="com.blue.ibatis.test.dao.FooMapper"&amp;gt;&lt;br /&gt;&amp;lt;parameterMap id="parameters1" type="LRU"&amp;gt;&lt;br /&gt;&amp;lt;parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/&amp;gt;&lt;br /&gt;&amp;lt;parameter property="id" jdbcType="NUMERIC" javaType="java.lang.Long" mode="IN"/&amp;gt;&lt;br /&gt;&amp;lt;/parameterMap&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;parameterMap id="addParameters" type="LRU"&amp;gt;&lt;br /&gt;&amp;lt;parameter property="p_id" jdbcType="NUMERIC" javaType="java.lang.Long" mode="OUT"/&amp;gt;&lt;br /&gt;&amp;lt;parameter property="p_name" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/&amp;gt;&lt;br /&gt;&amp;lt;parameter property="p_fname" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/&amp;gt;&lt;br /&gt;&amp;lt;parameter property="p_add" jdbcType="NUMERIC" javaType="java.lang.Long" mode="IN"/&amp;gt;&lt;br /&gt;&amp;lt;/parameterMap&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select statementType="CALLABLE" id="getPersonsById" parameterMap="parameters1" resultType="String"&amp;gt;&lt;br /&gt;{ ? = call IbatisTest.getPersonsById( ? ) }&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select statementType="CALLABLE" id="addPerson" parameterMap="addParameters" resultType="Integer"&amp;gt;&lt;br /&gt;{ ? = call IbatisTest.addPerson( ?,?,? ) }&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;/mapper&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and on finish we have a few fragments of java code to call pl/sql package function&lt;br /&gt;&lt;pre class="brush: java"&gt;// query to addPersons&lt;br /&gt;Map pMap = new HashMap();&lt;br /&gt;pMap.put("p_name","Xyz");&lt;br /&gt;pMap.put("p_fname","qwe");&lt;br /&gt;pMap.put("p_add", Long.valueOf(11l));&lt;br /&gt;&lt;br /&gt;session.selectOne("com.blue.ibatis.test.dao.FooMapper.addPerson", pMap);&lt;br /&gt;pMap.get("p_id");&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3810296089088030796?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3810296089088030796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3810296089088030796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3810296089088030796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3810296089088030796'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2010/04/call-plsql-package-by-ibatis-3.html' title='Call pl/sql package by Ibatis 3'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-7011276009921451372</id><published>2009-06-01T19:55:00.001+03:00</published><updated>2011-06-04T20:13:00.848+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.0.0'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Resolve "(MARSHAL) Exception" when deploying osb project on web logic  through JMX client</title><content type='html'>Last week we decided to managing deployment of osb project on web logic cluster throw programmatic way. Throw simple JMX client, it's very easy to deploy and change the runtime configuration of the osb project. However the way to development of the simple client for deploying we got some confrontation, and the current post are all about these.&lt;br /&gt;First of all Weblogic(10g R3) JMX implemention classes are no longer exists on weblogic.jar file. Thus, creating new proxy instance for DomainRuntimeServiceMBean might be through java native JMX clasess. However you could use wlfullclient.jar to build all the proxy client, on version 10gR3 oracle transfer all the web logic JMX implemention classes on wlfullclient.jar. Whenever you compile the project successfully and run the client, we found another runtime error related with "(MARSHAL) Exception". The runtime error are as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;01.06.2009 13:21:44 com.sun.corba.se.impl.encoding.CDRInputStream_1_0 read_value&lt;br /&gt;&lt;br /&gt;WARNING: "IOP00810211: (MARSHAL) Exception from readValue on ValueHandler in CDRInputStream"&lt;br /&gt;&lt;br /&gt;org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe&lt;br /&gt;at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUti&lt;br /&gt;lSystemException.java:6500)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;1045)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327&lt;br /&gt;)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;1034)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;879)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStr&lt;br /&gt;eam_1_0.java:873)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStr&lt;br /&gt;eam_1_0.java:863)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.&lt;br /&gt;java:269)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:363)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:526)&lt;br /&gt;at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345)&lt;br /&gt;at java.util.HashMap.readObject(HashMap.java:1030)&lt;br /&gt;at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694&lt;br /&gt;)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327&lt;br /&gt;)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;1034)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327&lt;br /&gt;)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;1034)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)&lt;br /&gt;at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327&lt;br /&gt;)&lt;br /&gt;at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;1034)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:&lt;br /&gt;879)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:249)&lt;br /&gt;at com.sun.corba.se.impl.corba.TCUtility.unmarshalIn(TCUtility.java:269)&lt;br /&gt;at com.sun.corba.se.impl.corba.AnyImpl.read_value(AnyImpl.java:559)&lt;br /&gt;at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:73&lt;br /&gt;... 61 more&lt;br /&gt;IOException:CORBA MARSHAL 1398079699 Maybe; nested exception is:&lt;br /&gt;org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At first i tried to googling on internet and found that, it is JVM bug. On many forums developers suggest to use same version of JVM on both side , client and the server. I have tried a few JVM include Jrockit on both side but all in vain.&lt;br /&gt;&lt;br /&gt;After some experiment i discover that, my JMX client uses IIOP implemention of wlclient.jar instead of wlfullclient.jar. Therefore i delete the wlclient.jar from my classpath and vailo. Here are my POM.XML which i use to develop the JMX client.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;ru.fors.weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jmxClient&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jmxClient&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.bea&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;sb-kernel-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;D:\Osb10gR3\osb_10.3\lib\sb-kernel-api.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.bea.wli&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;sb-kernel-resources&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;D:\Osb10gR3\osb_10.3\lib\sb-kernel-resources.jar&amp;lt;/systemPath&amp;gt;    &lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.bea.wli&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;com.bea.common.configfwk_1.1.0.0&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;D:\Osb10gR3\modules\com.bea.common.configfwk_1.2.0.0.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;wlfullclient&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;D:\beaWL\wlserver_10.3\server\lib\wlfullclient.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.6&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.6&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;exec-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;lt;phase&amp;gt;compile&amp;lt;/phase&amp;gt;   &lt;br /&gt;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;exec&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;executable&amp;gt;java&amp;lt;/executable&amp;gt;&lt;br /&gt;&amp;lt;workingDirectory&amp;gt;/target/classes&amp;lt;/workingDirectory&amp;gt;&lt;br /&gt;&amp;lt;arguments&amp;gt;&lt;br /&gt;&amp;lt;argument&amp;gt;-classpath&amp;lt;/argument&amp;gt;&lt;br /&gt;&amp;lt;classpath/&amp;gt;&lt;br /&gt;&amp;lt;argument&amp;gt;ru.fors.weblogic.JMX.Client&amp;lt;/argument&amp;gt;&lt;br /&gt;&amp;lt;/arguments&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-7011276009921451372?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/7011276009921451372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=7011276009921451372' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/7011276009921451372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/7011276009921451372'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/06/resolve-marshal-exception-when.html' title='Resolve &quot;(MARSHAL) Exception&quot; when deploying osb project on web logic  through JMX client'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2664211371221695566</id><published>2009-05-24T20:43:00.000+03:00</published><updated>2009-05-25T11:39:42.328+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.0.0'/><title type='text'>Setting up Web logic clusters for GWT applications</title><content type='html'>Inspired by the following post &lt;a href="http://andrejusb.blogspot.com/2009/04/weblogic-load-balancing-for-oracle-adf.html"&gt;WebLogic Load Balancing for Oracle ADF Applications&lt;/a&gt; i have decided to make some agile test for GWT applications. &lt;br /&gt;First we will develop a simple hello world GWT application and configure load balancing cluster. Sample GWT application will be deployed on WebLogic cluster, Load Balancing domain or proxy domain will distribute user requests between cluster members.&lt;br /&gt;1) &lt;span style="font-weight:bold;"&gt;Develop sample GWT application&lt;/span&gt;&lt;br /&gt;It's a hello world web application with one text field and button on a web page. I use maven to develop the application. We can choose any web application to deploy on web logic cluster, any way our aim is to configure web logic cluster and we will go though all over the steps next.&lt;br /&gt;2) &lt;span style="font-weight:bold;"&gt;Configure cluster domain&lt;/span&gt;&lt;br /&gt;It's very easy to setup and configure cluster on web logic. Just start Configuration wizard and select customize installation.   &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho7GKA20CI/AAAAAAAAAQE/LnuiGuMII4w/s1600-h/1.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho7GKA20CI/AAAAAAAAAQE/LnuiGuMII4w/s320/1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339645285154344994" /&gt;&lt;/a&gt;&lt;br /&gt;Change port number of the Admin server, in my case it is 7002&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/Sho7iF7EOxI/AAAAAAAAAQM/9dXQ_DTuMNY/s1600-h/2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/Sho7iF7EOxI/AAAAAAAAAQM/9dXQ_DTuMNY/s320/2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339645765092653842" /&gt;&lt;/a&gt;&lt;br /&gt;On Configure Managed server page add two new managed server and change the port to 7003 and 7004.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho9c7cfxeI/AAAAAAAAAQU/cvKyMJG66hE/s1600-h/3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho9c7cfxeI/AAAAAAAAAQU/cvKyMJG66hE/s320/3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339647875403990498" /&gt;&lt;/a&gt;&lt;br /&gt;Configure cluster by default and we will change the multicast to unicast.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/Sho-B44AR1I/AAAAAAAAAQc/ybtEm01KoKg/s1600-h/4.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/Sho-B44AR1I/AAAAAAAAAQc/ybtEm01KoKg/s320/4.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339648510369220434" /&gt;&lt;/a&gt;&lt;br /&gt;On the next page assign all the managed servers to the cluster.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho-Y91fKMI/AAAAAAAAAQk/kUDJJPPdbN0/s1600-h/5.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho-Y91fKMI/AAAAAAAAAQk/kUDJJPPdbN0/s320/5.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339648906837829826" /&gt;&lt;/a&gt;&lt;br /&gt;On the configure machine page add one physical machine and address the listen address to localhost as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/Sho-2eXv7nI/AAAAAAAAAQs/rSEC0AnhWJ4/s1600-h/6.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/Sho-2eXv7nI/AAAAAAAAAQs/rSEC0AnhWJ4/s320/6.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339649413787676274" /&gt;&lt;/a&gt;&lt;br /&gt;On next page apply cluster with manged serves to physical machine:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho_MRxF9kI/AAAAAAAAAQ0/NSAcqXtBNtw/s1600-h/7.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/Sho_MRxF9kI/AAAAAAAAAQ0/NSAcqXtBNtw/s320/7.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339649788361438786" /&gt;&lt;/a&gt;&lt;br /&gt;And finally provide domain name and the location of the domain. In my case i have provide the domain name as cluster_domain.&lt;br /&gt;At this moment cluster is installed and ready to use. Start the cluster domain from program menu, and open the console by following url:&lt;br /&gt;http://localhost:7002/console&lt;br /&gt;Start node manager from the start menu to manage managed servers, go to the console home page-&gt;cluster-&gt;control and select all the managed servers and click to start. After a few moments states of the servers should be running mode. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/ShpE70nphyI/AAAAAAAAAQ8/Vnoz7uKzbT8/s1600-h/8.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 173px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/ShpE70nphyI/AAAAAAAAAQ8/Vnoz7uKzbT8/s320/8.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339656102729058082" /&gt;&lt;/a&gt;&lt;br /&gt;Now, it's time to deploy our GWT web application on cluster. Deploy the web application on cluster by web inteface as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/ShpF2jMw6pI/AAAAAAAAARE/MAQ84hLFV_E/s1600-h/9.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 303px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/ShpF2jMw6pI/AAAAAAAAARE/MAQ84hLFV_E/s320/9.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339657111665175186" /&gt;&lt;/a&gt;&lt;br /&gt;3) &lt;span style="font-weight:bold;"&gt;Set Up the HttpClusterServlet:&lt;/span&gt;&lt;br /&gt;Here we will describe how to develop and configure proxy plugin for load balancing. We will use a web logic domain as a proxy plugin and configure HttpClusterServlet on it. To use http cluster servlet, configure it as a default web application on proxy domain. The default web application will only contain a web.xml and weblogic.xml file on WEB-INF directory and nothing more. See the link to more about &lt;a href="http://e-docs.bea.com/wls/docs81/cluster/setup.html#684345"&gt;HttpClusterServlet.&lt;/a&gt; &lt;br /&gt;I have used sample web.xml and weblogic.xml available in documentation, just changed WebLogicCluster parameter value to:&lt;br /&gt;&lt;br /&gt;localhost:7003|localhost:7004&lt;br /&gt;&lt;br /&gt;and build an web application with war archive, name the archive as loadBalancer.war&lt;br /&gt;At this moment we will create another weblogic domain with standard configuration and name the domain as proxy_domain. Deploy the loadBalancer.war on the proxy domain as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/ShpK_ouF-nI/AAAAAAAAARM/f4nzLFIjcFs/s1600-h/10.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 162px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/ShpK_ouF-nI/AAAAAAAAARM/f4nzLFIjcFs/s320/10.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5339662765324106354" /&gt;&lt;/a&gt;&lt;br /&gt;4) &lt;span style="font-weight:bold;"&gt;Test the configuration.&lt;/span&gt;&lt;br /&gt;For now we have configured everything to test our web application running on cluster. Address you web applications home page on any browser, in my case it is as follows:&lt;br /&gt;http://localhost:7001/app-name/context-root/HelloGwt.html&lt;br /&gt;One of Managed Servers from Cluster environment will response. Go to the following location to check the output log from the server&lt;br /&gt;&lt;WL_HOME&gt;\user_projects\domains\cluster_domain\servers\ManagedServer_1\logs\ManagedServer_1.out&lt;br /&gt;In my case server 1 response in this time, if i have opened second session, by pointing to the same 7001 port and it was handled by seconed Managed Server and so on. It was because cluster server was configured with round-robin algorithm.&lt;br /&gt;The above configuration will consider for any web application not just fro GWT application. There are a lot of configuration left behind on httpServlet plugins.&lt;br /&gt;For more information please see following resource:&lt;br /&gt;&lt;a href="http://e-docs.bea.com/wls/docs81/cluster/load_balancing.html#1025517"&gt;Load Balancing with a Proxy Plug-in&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2664211371221695566?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2664211371221695566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2664211371221695566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2664211371221695566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2664211371221695566'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/05/setting-up-web-logic-clusters-for-gwt.html' title='Setting up Web logic clusters for GWT applications'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/Sho7GKA20CI/AAAAAAAAAQE/LnuiGuMII4w/s72-c/1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3157990705020279744</id><published>2009-05-19T20:20:00.000+03:00</published><updated>2009-05-20T13:47:21.080+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='DataService'/><title type='text'>Implementing DataServices with Oracle data service integrator</title><content type='html'>&lt;span style="font-weight:bold;"&gt;DataService:&lt;/span&gt; one kind of special service, which expose interface for data stored in sources such as relational databases, CSV files &amp; MS-Excel files. DataServices plays a vital role on IT strategy like SOA. Any organization have to have expose their master data to any enterprise application. Through data services a company enables to have high-quality, consistent data at the right place at the right time. &lt;br /&gt;In practical, data services exposes data, represented as Entity Data Model (EDM) objects, via web services accessed over HTTP. The data can be addressed using a REST-like URI. The Astoria service, when accessed via the HTTP GET method with such a URI, will return the data. The web service can be configured to return the data in either plain XML, JSON or RDF+XML. For more information see the following article about &lt;a href="http://www.oracle.com/technology/pub/articles/j_lawson_soa_data.html"&gt;data services&lt;/a&gt;.&lt;br /&gt;It's not hard to create and maintain data service on standard way, a lot of ORM framework like hibernate, iBatis, toplink even low level jdbc framework is good enough to built data services. Sometimes it's hard to maintain and governece this type of enterprise application, because life cycle of the development process is vital. For these reason, in this post i will give some overview of tools and frameworks to accelerates application development and deployment by simplifying the complex task of building and maintaining access to and from multiple external data sources. &lt;br /&gt;1) &lt;a href="http://www.xaware.org/"&gt;&lt;span style="font-weight:bold;"&gt;XAware Open Source Data Integration&lt;/span&gt;&lt;/a&gt;: It provides real-time, bi-directional data integration with a service-oriented flavor. XAware makes other tools and frameworks more productive by hiding data access complexity behind "XML views". XML views span any number of data sources, and can read data, write data, or transfer data between sets of sources, all within a distributed transaction.&lt;br /&gt;2) &lt;a href="http://wso2.org/projects/solutions/data-services/java"&gt;&lt;span style="font-weight:bold;"&gt;WSO2 Data Services&lt;/span&gt;:&lt;/a&gt; With WSO2 Data Services, data can be exposed and accessed in a secure (using WS-Security) and reliable (using WS-ReliableMessaging) manner; data is also made available for mashing-up with other Web services.&lt;br /&gt;3) &lt;a href="http://www.oracle-base.com/articles/11g/NativeOracleXmlDbWebServices_11gR1.php"&gt;&lt;span style="font-weight:bold;"&gt;Native Oracle XML DB Web Services&lt;/span&gt;:&lt;/a&gt; Oracle 11g Database makes the conversion of existing PL/SQL code into web services easier than ever by providing Native XML DB web services. With some simple configuration, this functionality exposes PL/SQL code code as web services.&lt;br /&gt;4) &lt;a href="http://www.oracle.com/products/middleware/odi/data-service-integrator.html"&gt;&lt;span style="font-weight:bold;"&gt;Oracle Data Service Integrato&lt;/span&gt;r:&lt;/a&gt;It brings a service-oriented architecture (SOA) approach to data access. Data Services Integrator enables organizations to consolidate, integrate, and transform as needed disparate data sources scattered throughout their enterprise, making enterprise data available as an easy-to-access, reusable commodity: a data service.&lt;br /&gt;Next we will implement a simple data service project to see how it's easy to develop on oracle data service integrator.&lt;br /&gt;For study purpose i decided to make the sample project as simple as possible. First we will create a table on Oracle data base and expose this table as a web service through oracle data service integrator. In conclusion you will get more resources links to follows. &lt;br /&gt;Following platforms will get on work:&lt;br /&gt;1) Oracle 10g data base.&lt;br /&gt;2) &lt;a href="http://www.oracle.com/technology/software/products/odsi/index.html"&gt;Oracle data service integrator 10g r3&lt;/a&gt;&lt;br /&gt;Download and install products on your local machine. I am going to use user scott to sample purpose.&lt;br /&gt;1) Create a table on user scott as follows:&lt;br /&gt;CREATE TABLE document ( doc_id VARCHAR2(200), doc_type_i VARCHAR2(200), vid_doc VARCHAR2(200), "COMMENT" VARCHAR2(200), num_doc VARCHAR2(200), dat_doc DATE );&lt;br /&gt;Insert some data on it.&lt;br /&gt;2) After installation of data service integrator create one domain, name the domain base_domain.&lt;br /&gt;3) Open the eclipse workshop of oracle data service integrator and create a new server based on domain base_domain.&lt;br /&gt;4) Open admin console, the link should be as follows:&lt;br /&gt;http://localhost:7001/console/console.portal?_nfpb=true&amp;_pageLabel=HomePage1&lt;br /&gt;5) Add a non XA data source on it. Provide all the necessary information as follows:&lt;br /&gt;database name: scott&lt;br /&gt;jndiName:nsiDataSource&lt;br /&gt;hostname:mercury&lt;br /&gt;database username:scott&lt;br /&gt;password:tiger&lt;br /&gt;now we are ready to create data service on workshop.&lt;br /&gt;6) Open the workshop and change the perspective to Oracle data service integrator.&lt;br /&gt;7) Create a dataspace project.&lt;br /&gt;8) Create one physical data service as follows:&lt;br /&gt;Data Source type: Reletional&lt;br /&gt;DataSource: nsiDataSource&lt;br /&gt;DataBase type: Oracle-&gt;9-&gt;Oracle 9.x and above&lt;br /&gt;Relational data base object: Tables and views &lt;br /&gt;and click next&lt;br /&gt;9) On SQL select source views, select schema Scott and expand it, also select table named "Document".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/ShOvGirTnZI/AAAAAAAAAOI/4bk3CtPryEA/s1600-h/1.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 295px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/ShOvGirTnZI/AAAAAAAAAOI/4bk3CtPryEA/s320/1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337802510286691730" /&gt;&lt;/a&gt;&lt;br /&gt;10) On operation page select check box public and click next button.&lt;br /&gt;11) Put the data service name as getNsiDocument and click finish.&lt;br /&gt;This will create file getNsiDocument.ds and open a overview window as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/ShOwMR8q-NI/AAAAAAAAAOQ/uBOYvajqxMI/s1600-h/2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 203px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/ShOwMR8q-NI/AAAAAAAAAOQ/uBOYvajqxMI/s320/2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337803708386965714" /&gt;&lt;/a&gt;&lt;br /&gt;12) On the above page go to the tab TEST and select operation getNsiDocument and click run. This will show you some result. &lt;br /&gt;13) Now we will create logical data service over physical service. Click new-&gt; New logical service.&lt;br /&gt;DataService Name: getNsiDocument_l&lt;br /&gt;Select logical data service type: Entity data service&lt;br /&gt;and click finish. This will create a new logical service named getNsiDocument_l and now the project has error, don't worry we will make up it very soon.&lt;br /&gt;14) Right click on the overview tab and select add operation. Select it as a public service as a kind of read and name the service as getNsiDocumentL.&lt;br /&gt;15) Click on the tab Query Map. Expand the node getNsiDocument.ds and drag getNsiDocument() to the Query map. &lt;br /&gt;16) Select the getNsiDocument*, press crtl and drag the element over Return box. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/ShO0L5UAgTI/AAAAAAAAAOY/bg_pUr2A3l4/s1600-h/3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/ShO0L5UAgTI/AAAAAAAAAOY/bg_pUr2A3l4/s320/3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337808099820470578" /&gt;&lt;/a&gt;&lt;br /&gt;17) Right click on the return box and select save and Associate xml type.&lt;br /&gt;18) just change the namespace as ld:Physical/getNsiDocumentL and click ok.&lt;br /&gt;19) For now the project should be valid and we can test the logical data service.&lt;br /&gt;Click tab TEST and click the button run. &lt;br /&gt;20) Now we will add a where clause on our logical service. Click query Map, select getNsiDocument() box and the condition editor will highlighted. Click on add where clause, select element vid_doc and add ="14" in my cause. See the following illustration.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/ShO2hveDBCI/AAAAAAAAAOg/C5-TCX542PQ/s1600-h/4.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/ShO2hveDBCI/AAAAAAAAAOg/C5-TCX542PQ/s320/4.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337810674158601250" /&gt;&lt;/a&gt;&lt;br /&gt;21) Save all the work and test again - now the result should be filtered by where clause.&lt;br /&gt;Here we have done most of the work. Now we will create a web service witch will wrap the logical service.&lt;br /&gt;22) Create new web service map, name nsiDocumantWs and drag the logical service named getNsiDocumentL over the web service map. &lt;br /&gt;Just now we have finished all our work. We have create physical data service and a logical data service over it, at last create a web service map for the logical service.&lt;br /&gt;Now we can test our data service, for these copy the following url and open it on any web browser:&lt;br /&gt;http://localhost.fors.ru:7001/wls_utc/begin.do?  &lt;br /&gt;Right click on the nsiDocumentWs.ws and click copy wsdl url. Paste the url on weblogic test client and click on getNsiDocumentL button. You should see some result on page as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/ShO5OOT9QLI/AAAAAAAAAOo/8Ti4DLNcmNM/s1600-h/5.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/ShO5OOT9QLI/AAAAAAAAAOo/8Ti4DLNcmNM/s320/5.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337813637375279282" /&gt;&lt;/a&gt;&lt;br /&gt;In conclusion, we able to understand how easy it is to create data service in oracle data service workshop on declarative way. For more information see following pages:&lt;br /&gt;1) &lt;a href="http://e-docs.bea.com/aldsp/docs30/datasrvc/Create%20Your%20First%20Data%20Services.html#CreateYourFirstDataServices-CreatingPhysicalDataServices"&gt;Tutorial.&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://edocs.bea.com/aldsp/docs30/datasrvc/Generate%20a%20Web%20Service%20Map%20from%20a%20Data%20Service.html"&gt;Generate web service from data services.&lt;/a&gt;&lt;br /&gt;On the next post i will demonstrate a simple example to use DSP protocol on OSB 10gR3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3157990705020279744?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3157990705020279744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3157990705020279744' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3157990705020279744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3157990705020279744'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/05/implementing-dataservices-with-oracle.html' title='Implementing DataServices with Oracle data service integrator'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/ShOvGirTnZI/AAAAAAAAAOI/4bk3CtPryEA/s72-c/1.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3619964612477786006</id><published>2009-05-09T21:29:00.000+03:00</published><updated>2009-05-09T22:04:23.165+03:00</updated><title type='text'>Solving xcb_xlib.c:50: xcb_xlib_unlock: Assertion 'c-&gt;xlib.lock' failed. on fedora 8</title><content type='html'>Yesterday i decided to upgrade osb 3.0 to OSB 10gr3 on my linux box. During installation i have first locate the famous error "xcb_xlib.c:50: xcb_xlib_unlock: Assertion 'c-&gt;xlib.lock' failed.". Through google, i have found a few solution to solve the problem but all the solutions gone in vain.&lt;br /&gt;I have had following configuration:&lt;br /&gt;[recon@localhost home]$ cat /etc/redhat-release&lt;br /&gt;Fedora release 8 (Werewolf)&lt;br /&gt;[recon@localhost home]$ java -version&lt;br /&gt;java version "1.5.0_14"&lt;br /&gt;Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)&lt;br /&gt;Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_14-b03, mixed mode)&lt;br /&gt;[recon@localhost home]$ rpm -q libxcb libX11&lt;br /&gt;libxcb-1.0-3.fc8&lt;br /&gt;libX11-1.1.3-4.fc8&lt;br /&gt;First of all, i have tried to patch the library libmawt.so by sed -i 's/XINERAMA/FAKEEXTN/g' of my current JVM, but it was not help me to run the installer to install OSB 10gR3. Even i installed latest 1.6 JDK and patch the libmawt.so but in vain.&lt;br /&gt;From one of linux forum, i found a suggestion to upgrade libxcb file and try again. Here is my all the step to resolve the problem:&lt;br /&gt;1) upgrade yum install (nothing updated)&lt;br /&gt;2) update libxcb&lt;br /&gt;[recon@localhost home]$ sudo yum update libxcv&lt;br /&gt;[recon@localhost tmp]$ rpm -q libxcb&lt;br /&gt;libxcb-1.1-1.1.fc8&lt;br /&gt;which will upgrade my libxcb to version 1.1&lt;br /&gt;3) patch the libmawt.so for current JVM (it was unnecessary, because i have done it before)&lt;br /&gt;4) run installer and all goes well.&lt;br /&gt;For more information, you can visit the following post on oracle &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=2437891&amp;tstart=0"&gt;forum.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3619964612477786006?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3619964612477786006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3619964612477786006' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3619964612477786006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3619964612477786006'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/05/solving-xcbxlibc50-xcbxlibunlock.html' title='Solving xcb_xlib.c:50: xcb_xlib_unlock: Assertion &apos;c-&gt;xlib.lock&apos; failed. on fedora 8'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-9165506092904779231</id><published>2009-04-26T12:19:00.000+03:00</published><updated>2009-04-26T12:34:47.387+03:00</updated><title type='text'>Google Analytics api released</title><content type='html'>Finally googles long waited analytics api released on last week. Api will help you to write client for gathering and analyze data for your web site. Now through client we could analyze data from our standalone java client and no longer need to logon to our Google Analytics site. Api released with three flavour:&lt;br /&gt;1) Java Script;&lt;br /&gt;2) Java;&lt;br /&gt;3) Http&lt;br /&gt;&lt;br /&gt;Along with client libraries there are also reference document and Sample codes to start coding and test api. Also there are brief explanation of account, profile, metrics and dimensions related to google analytics. It will take a couple of minutes to write down your code or just run sample code distributed by google to get the action. The best part: this sophisticated, full-featured web analytics package is free.&lt;br /&gt;&lt;br /&gt;For getting started &lt;a href="http://code.google.com/apis/analytics/"&gt;see here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-9165506092904779231?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/9165506092904779231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=9165506092904779231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/9165506092904779231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/9165506092904779231'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/04/google-analytics-api-released.html' title='Google Analytics api released'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3443932087231376738</id><published>2009-04-21T19:43:00.001+03:00</published><updated>2011-06-04T20:16:29.004+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MTOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Attachment'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>Upgrade osb project with new advance feature of MTOM support  on version 10gR3</title><content type='html'>Last week we decided to upgrade all our OSB project from OSB3 to OSB10GR3. A few of our project worked with attachment's which failed on new version of OSB. In this post we will explain briefly all the necessary step to upgrade project working with attachments to version 10g release 3.&lt;br /&gt;&lt;br /&gt;Assume that, we have a proxy service which will get arbitrary MTOM attachment. First of all, after exporting the project on workspace we must enable mtom support on proxy properties page. When XOP/MTOM Support is enabled, you can further select how to handle binary data in the $header and $body message context variables from among the following options:&lt;br /&gt;&lt;br /&gt;* Include Binary Data by Reference: (Default) In an inbound request message, replace xop:Include elements with ctx:binary-content elements when setting up the $header and $body message context variables.&lt;br /&gt;* Include Binary Data by Value: In an inbound request message, replace xop:Include elements with Base64-encoded text versions of corresponding binary data when setting up the $header and $body message context variables.&lt;br /&gt;&lt;br /&gt;You can use Include Binary Data by Reference when you need direct access to binary data, for example to pass data to a Java callout or Message Format Language (MFL) transform.&lt;br /&gt;&lt;br /&gt;You can use Include Binary Data by Value in the following cases:&lt;br /&gt;&lt;br /&gt;* To bridge between MTOM and non-MTOM services. For example, consider an MTOM-enabled proxy service that receives a request that is then routed to a non-MTOM-enabled service. You could use this option to comply with existing standards for sending binary data in XML in Base64-encoded form.&lt;br /&gt;* To validate the contents of the message against an XML schema that requires a base64binary element to be used in place of binary data&lt;br /&gt;&lt;br /&gt;Note that if XOP/MTOM Support is enabled for a proxy service, it is not required that every inbound message be in the MTOM format. Instead, this setting specifies that when an MTOM-formatted message arrives, the proxy service should handle it accordingly. Note also that when proxy services not enabled for XOP/MTOM Support receive an MTOM-formatted message, the service rejects the message and issues a runtime error. &lt;br /&gt;When XOP/MTOM support enable on proxy service, the variable $attachment will no longer active. For example on version OSB3 we could define total attachment by following xpath statement as follows:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;fn:count($attachment/attachments)&lt;/span&gt;&lt;br /&gt;Above frugment of xpath will return 0, because on version 10gR3, MTOM attachment will no longer available in variable $attachment.&lt;br /&gt;When the Binary by Reference option is selected, Oracle Service Bus parses the root of the message checking for the presence of xop:Include tags. These tags, when found, are converted to ctx:binary-content elements with a reference pointing to the corresponding source in binary repository. The resulting document is represented by the $body message context variable.&lt;br /&gt;This means that when pipeline actions access the contents of the $body message context variable, the actions do not encounter xop:Include elements, but instead work with ctx:binary-content elements. &lt;br /&gt;As example:&lt;br /&gt;Guess, from the client side we have sent following soap message with attachment&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;br /&gt;&amp;lt;S:Body&amp;gt;&lt;br /&gt;&amp;lt;ns2:SubmitAttachmentRequestEle xmlns:ns2="http://www.ru.fors.nsi/SOAPwithAttachment/"&amp;gt;&lt;br /&gt;&amp;lt;messageId&amp;gt;messageId&amp;lt;/messageId&amp;gt;&lt;br /&gt;&amp;lt;senderAppName&amp;gt;fts NSI&amp;lt;/senderAppName&amp;gt;&lt;br /&gt;&amp;lt;receiver&amp;gt;rtu-1&amp;lt;/receiver&amp;gt;&lt;br /&gt;&amp;lt;department&amp;gt;department&amp;lt;/department&amp;gt;&lt;br /&gt;&amp;lt;attaches&amp;gt;&lt;br /&gt;&amp;lt;Attach&amp;gt;&lt;br /&gt;&amp;lt;documentName&amp;gt;test.doc&amp;lt;/documentName&amp;gt;&lt;br /&gt;&amp;lt;zipFile&amp;gt;&lt;br /&gt;&amp;lt;xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:83842c6c-2dbc-459d-98b1-f185f89ce9ec@example.jaxws.sun.com"/&amp;gt;&lt;br /&gt;&amp;lt;/zipFile&amp;gt;&lt;br /&gt;&amp;lt;comment&amp;gt;comment&amp;lt;/comment&amp;gt;&lt;br /&gt;&amp;lt;/Attach&amp;gt;&lt;br /&gt;&amp;lt;Attach&amp;gt;&lt;br /&gt;&amp;lt;documentName&amp;gt;README.txt&amp;lt;/documentName&amp;gt;&lt;br /&gt;&amp;lt;zipFile&amp;gt;&lt;br /&gt;&amp;lt;xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:ea1779f1-4477-46b5-8364-9a525f49c734@example.jaxws.sun.com"/&amp;gt;&lt;br /&gt;&amp;lt;/zipFile&amp;gt;&lt;br /&gt;&amp;lt;comment&amp;gt;comment2&amp;lt;/comment&amp;gt;&lt;br /&gt;&amp;lt;/Attach&amp;gt;&lt;br /&gt;&amp;lt;/attaches&amp;gt;&lt;br /&gt;&amp;lt;/ns2:SubmitAttachmentRequestEle&amp;gt;&lt;br /&gt;&amp;lt;/S:Body&amp;gt;&lt;br /&gt;&amp;lt;/S:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In Osb $body variable you will get following transformed of code:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;attaches xmlns:ns2="http://www.ru.fors.nsi/SOAPwithAttachment/" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;br /&gt;&amp;lt;Attach&amp;gt;&lt;br /&gt;&amp;lt;documentName&amp;gt;test.doc&amp;lt;/documentName&amp;gt;&lt;br /&gt;&amp;lt;zipFile&amp;gt;&lt;br /&gt;&amp;lt;con:binary-content ref="cid:1c6b1828:120c78cd5fd:-7fd4" xmlns:con="http://www.bea.com/wli/sb/context"/&amp;gt;&lt;br /&gt;&amp;lt;/zipFile&amp;gt;&lt;br /&gt;&amp;lt;comment&amp;gt;comment1&amp;lt;/comment&amp;gt;&lt;br /&gt;&amp;lt;/Attach&amp;gt;&lt;br /&gt;&amp;lt;Attach&amp;gt;&lt;br /&gt;&amp;lt;documentName&amp;gt;README.txt&amp;lt;/documentName&amp;gt;&lt;br /&gt;&amp;lt;zipFile&amp;gt;&lt;br /&gt;&amp;lt;con:binary-content ref="cid:1c6b1828:120c78cd5fd:-7fd3" xmlns:con="http://www.bea.com/wli/sb/context"/&amp;gt;&lt;br /&gt;&amp;lt;/zipFile&amp;gt;&lt;br /&gt;&amp;lt;comment&amp;gt;comment2&amp;lt;/comment&amp;gt;&lt;br /&gt;&amp;lt;/Attach&amp;gt;&lt;br /&gt;&amp;lt;/attaches&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;con:binary-content element will hold the reference of the binary data on hash table. We can easily get the content of the binary data and send it to save on file or drive it to ftp or email attachment. For&lt;a href="http://frommyworkshop.blogspot.com/2009/04/send-e-mail-with-attachment-through-osb.html"&gt; more information &lt;/a&gt;see my previous post.&lt;br /&gt;See &lt;a href="http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html"&gt; for detail information.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3443932087231376738?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3443932087231376738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3443932087231376738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3443932087231376738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3443932087231376738'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/04/upgrade-osb-project-with-new-advance.html' title='Upgrade osb project with new advance feature of MTOM support  on version 10gR3'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-7943273203154998249</id><published>2009-04-08T20:01:00.001+03:00</published><updated>2011-06-04T20:17:25.649+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Attachment'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>Send e-mail with attachment through OSB</title><content type='html'>Oracle Service Bus (OSB) contains a good collection of adapter to integrate with any legacy application, including ftp, email, MQ, tuxedo. However e-mail still recognize as a stable protocol to integrate with any application asynchronously. Send e-mail with attachment is a common task of any business process. Inbound e-mail adapter which, integrated with OSB support attachment but outbound adapter doesn't. This post is all about sending attachment though JavaCallout action.&lt;br /&gt;There are two ways to handle attachment in OSB:&lt;br /&gt;1) Use JavaCallout action to pass the binary data for further manipulation. It means write down a small java library which will get the attachment and send the e-mail.&lt;br /&gt;2) Use integrated outbound e-mail adapter to send attachment, here you have to add a custom variable named attachment and assign the binary data to the body of the attachment variable.&lt;br /&gt;First option is very common and easy to implement through javax.mail api, however a much more developer manage to send the binary attachment by second option but i couldn't figure out it yet.&lt;br /&gt;Here, we are going to describe all the necessary step to implement the first option describe above.&lt;br /&gt;First of all we will develop a small java library to send the mail. Java class will be contain one static method with all the necessary parameter to send mail, including smtp server address and the receptions address, moreover it will have one byte array parameter (byte[]) to get the binary data. The java class is as follows:&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.nsi.transport;&lt;br /&gt;&lt;br /&gt;import javax.mail.*;&lt;br /&gt;import javax.mail.internet.*;&lt;br /&gt;import javax.activation.DataHandler;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.mail.Multipart;&lt;br /&gt;&lt;br /&gt;public class MailClient {&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* public method that will invoked by business service to send mail&lt;br /&gt;* */&lt;br /&gt;public static void  sendMail(String smtpServer,&lt;br /&gt;String from,&lt;br /&gt;String to,&lt;br /&gt;String subject,&lt;br /&gt;String body,&lt;br /&gt;String fileName,&lt;br /&gt;byte[] zipFile) throws Exception&lt;br /&gt;{&lt;br /&gt;java.util.Properties props = System.getProperties();&lt;br /&gt;&lt;br /&gt;props.setProperty("mail.smtp.host", smtpServer);&lt;br /&gt;Session session = Session.getInstance(props);&lt;br /&gt;Message message = new MimeMessage(session);&lt;br /&gt;message.setFrom( new InternetAddress(from));&lt;br /&gt;message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));&lt;br /&gt;message.setSubject(subject);&lt;br /&gt;message.setSentDate(new java.util.Date());&lt;br /&gt;message.setHeader("X-Mailer", "MailClient");&lt;br /&gt;&lt;br /&gt;//Set content to the mime body&lt;br /&gt;MimeBodyPart messagePart = new MimeBodyPart();&lt;br /&gt;messagePart.setText(body);&lt;br /&gt;MimeBodyPart messageAttach = new MimeBodyPart();&lt;br /&gt;String fName = fileName.substring(fileName.lastIndexOf("\\")+1);&lt;br /&gt;&lt;br /&gt;MailDataSource dataSource = new MailClient.MailDataSource();&lt;br /&gt;dataSource.setContentType("application/x-zip-compressed");&lt;br /&gt;dataSource.setData(zipFile);&lt;br /&gt;dataSource.setName(fName);&lt;br /&gt;&lt;br /&gt;messageAttach.setDataHandler(new DataHandler(dataSource));&lt;br /&gt;messageAttach.setFileName(fName);&lt;br /&gt;messageAttach.addHeader("charset", "windows-1251");&lt;br /&gt;&lt;br /&gt;// add multipart&lt;br /&gt;Multipart multiPart = new MimeMultipart();&lt;br /&gt;multiPart.addBodyPart(messagePart);&lt;br /&gt;multiPart.addBodyPart(messageAttach);&lt;br /&gt;// add to message&lt;br /&gt;message.setContent(multiPart);&lt;br /&gt;&lt;br /&gt;Transport.send(message);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;static class MailDataSource implements javax.activation.DataSource{&lt;br /&gt;private byte[] data;&lt;br /&gt;private String contentType;&lt;br /&gt;private String name;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void setContentType(String contentType) {&lt;br /&gt;this.contentType = contentType;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setData(byte[] data) {&lt;br /&gt;this.data = data;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setName(String name) {&lt;br /&gt;this.name = name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getContentType() {&lt;br /&gt;&lt;br /&gt;return contentType;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public InputStream getInputStream() throws IOException {&lt;br /&gt;&lt;br /&gt;return new java.io.ByteArrayInputStream(data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getName() {&lt;br /&gt;&lt;br /&gt;return name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public OutputStream getOutputStream() throws IOException {&lt;br /&gt;&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now we are ready to develop project in OSB to send the attachment. First we will create a wsdl to send the soap message with attachment to proxy service. The wsdl file contain only one port and binding will be the style with rpc/literal. Only rpc style could define multipart message. The wsdl file is as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&lt;br /&gt;xmlns:tns="http://www.com.blu/SOAPwithAttachment/"&lt;br /&gt;xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"&lt;br /&gt;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&lt;br /&gt;xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"&lt;br /&gt;name="SOAPwithAttachment"&lt;br /&gt;targetNamespace="http://www.com.blu/SOAPwithAttachment/"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:types&amp;gt;&lt;br /&gt;&amp;lt;xsd:schema targetNamespace="http://www.com.blu/SOAPwithAttachment/"&amp;gt;&lt;br /&gt;&amp;lt;xsd:complexType name="SubmitAttachmentResponseType"&amp;gt;&lt;br /&gt;&amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="response" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&amp;lt;xsd:complexType name="SubmitAttachmentRequestType"&amp;gt;&lt;br /&gt;&amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="smtpserver" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="to" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="from" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="subject" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="body" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="fileName" type="xsd:string" /&amp;gt;&lt;br /&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="submitAttachmentRequest" type="tns:SubmitAttachmentRequestType" /&amp;gt;&lt;br /&gt;&amp;lt;xsd:element name="zipFile" type="xsd:base64Binary" /&amp;gt;&lt;br /&gt;&amp;lt;/xsd:schema&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;wsdl:message name="submitAttachmentRequest"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:part name="submitAttachment" type="tns:SubmitAttachmentRequestType"  /&amp;gt;&lt;br /&gt;&amp;lt;wsdl:part name="zipFile" type="xsd:base64Binary" /&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;wsdl:message name="submitAttachmentResponse"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:part name="submitAttachmentResponse" type="tns:SubmitAttachmentResponseType" /&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;&amp;lt;wsdl:portType name="SOAPwithAttachmentPort"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:operation name="submitAttachment"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:input message="tns:submitAttachmentRequest" /&amp;gt;&lt;br /&gt;&amp;lt;wsdl:output message="tns:submitAttachmentResponse" /&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;wsdl:binding name="SOAPwithAttachmentSOAP"&lt;br /&gt;type="tns:SOAPwithAttachmentPort"&amp;gt;&lt;br /&gt;&amp;lt;soap:binding style="rpc"&lt;br /&gt;transport="http://schemas.xmlsoap.org/soap/http" /&amp;gt;&lt;br /&gt;&amp;lt;wsdl:operation name="submitAttachment"&amp;gt;&lt;br /&gt;&amp;lt;soap:operation&lt;br /&gt;soapAction="http://www.com.blu/SOAPwithAttachment/submitAttachment" /&amp;gt;&lt;br /&gt;&amp;lt;wsdl:input&amp;gt;&lt;br /&gt;&amp;lt;mime:multipartRelated&amp;gt;&lt;br /&gt;&amp;lt;mime:part&amp;gt;&lt;br /&gt;&amp;lt;soap:body parts="submitAttachment" use="literal" namespace="http://www.com.blu/SOAPwithAttachment/"/&amp;gt;&lt;br /&gt;&amp;lt;/mime:part&amp;gt;&lt;br /&gt;&amp;lt;mime:part&amp;gt;&lt;br /&gt;&amp;lt;mime:content part="zipFile" type="application/zip"/&amp;gt;&lt;br /&gt;&amp;lt;/mime:part&amp;gt;&lt;br /&gt;&amp;lt;/mime:multipartRelated&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:input&amp;gt;&lt;br /&gt;&amp;lt;wsdl:output&amp;gt;&lt;br /&gt;&amp;lt;soap:body parts="submitAttachmentResponse" use="literal" namespace="http://www.com.blu/SOAPwithAttachment/"/&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:output&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:operation&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;wsdl:service name="SOAPwithAttachment"&amp;gt;&lt;br /&gt;&amp;lt;wsdl:port binding="tns:SOAPwithAttachmentSOAP"&lt;br /&gt;name="SOAPwithAttachmentSOAP"&amp;gt;&lt;br /&gt;&amp;lt;soap:address location="http://localhost:7001/SOAPwithAttachment_WS/SOAPwithAttachment" /&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:port&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now we will create a proxy service based on this wsdl file and import the jar file in the project.&lt;br /&gt;Add one pipeline node on the proxy and add one stage node on the request pipeline.&lt;br /&gt;In the stage node add one assign action and set the following xpath expression &lt;br /&gt;$attachments/ctx:attachment/ctx:body/ctx:binary-content&lt;br /&gt;and set the name for variable for example attachData, where $attachments is the variable of the attachment. binary-content element hold the reference of the binary data to hash table. binary-content element looks like this:&lt;br /&gt;&amp;lt;binary-content ref="ccid:2321f-fa-edf21"/&amp;gt;&lt;br /&gt;XML and text attachments are represented as XML and text, respectively, and can be manipulated directly with XQuery or XSLT. Binary attachment data can be manipulated only by passing the binary data to a Javacallout for processing. Remember you should send the content of the binary-content element not its reference id.&lt;br /&gt;Add a JavaCallout action in the stage node and assaign it to the jar file. Fill up all the expression from the $body variable as follows:&lt;br /&gt;$body/soap:submitAttachment/submitAttachment/subject/text()&lt;br /&gt;also set the variable named attachData to byte[] parameter of the java class method.&lt;br /&gt;&lt;br /&gt;Add one stage node on the response pipeline and add one replace and delete action. In the response pipleline we will make up the following response:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;ns0:submitAttachmentResponse xmlns:ns0="http://www.alsb.com/SOAPwithAttachment/"&amp;gt;&lt;br /&gt;&amp;lt;submitAttachmentResponse&amp;gt;&lt;br /&gt;&amp;lt;response&amp;gt;OK&amp;lt;/response&amp;gt;&lt;br /&gt;&amp;lt;/submitAttachmentResponse&amp;gt;&lt;br /&gt;&amp;lt;/ns0:submitAttachmentResponse&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the replace action set the variable to the body element and xpath as ./*, also set the above xml fragment. It means we will replace the content of body element with this fragment of xml.&lt;br /&gt;Now in the properties of the delete action, set the attachment variable to delete.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SdzohByoUrI/AAAAAAAAANo/C92qGWCta3Q/s1600-h/sendAttachment.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 276px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SdzohByoUrI/AAAAAAAAANo/C92qGWCta3Q/s320/sendAttachment.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5322384513759204018" /&gt;&lt;/a&gt;&lt;br /&gt;Here, you have just complete the tutorial and are ready to deploy it on the server. After that you have to generate stab or proxy java class from the proxy service wsdl and test the service.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Resources:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://edocs.bea.com/alsb/docs30/userguide/context.html#wp1104506"&gt;See additional information about OSB message context model.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-7943273203154998249?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/7943273203154998249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=7943273203154998249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/7943273203154998249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/7943273203154998249'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/04/send-e-mail-with-attachment-through-osb.html' title='Send e-mail with attachment through OSB'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/SdzohByoUrI/AAAAAAAAANo/C92qGWCta3Q/s72-c/sendAttachment.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2318907810026613433</id><published>2009-04-01T20:39:00.001+03:00</published><updated>2011-06-04T20:18:19.792+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>Apply dynamic routing on Oracle service bus</title><content type='html'>Last year on one of our project we applied oracle enteprise service (SOA suite 10.1.3.1) to integrate with a few legacy system through IBM MQ. This year we have a plan to migrate this integration on OSB (Oracle service bus) previously known Aqua logic service bus from company BEA. Today i simplify one of our integration by using dynamic routing action.&lt;br /&gt;&lt;br /&gt;Usecase: We have a few queue predefined on MQ manager to send messages for different purpose. Messages should route by according to their message content.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hB7TA2a94zk/SdRgiTBx7xI/AAAAAAAAANg/_EU4DF1uLpo/s1600-h/DynamicRouting.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://1.bp.blogspot.com/_hB7TA2a94zk/SdRgiTBx7xI/AAAAAAAAANg/_EU4DF1uLpo/s320/DynamicRouting.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5319983202170957586" /&gt;&lt;/a&gt;&lt;br /&gt;By using dynamic routing action and routing table we can easily publish messages to  proper destination. The input xml file is as follows&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;TaxDiclaration id="uuid:62fa5eac-3df4-448d-a576-916dd5b432f2"&amp;gt;&lt;br /&gt;&amp;lt;destination&amp;gt;&lt;br /&gt;rtu-chanel-2&lt;br /&gt;&amp;lt;/destination&amp;gt;&lt;br /&gt;&amp;lt;gtd&amp;gt;&lt;br /&gt;&amp;lt;id&amp;gt;13421&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;person&amp;gt;&lt;br /&gt;&amp;lt;type&amp;gt;physical&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;Jhone&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;lastname&amp;gt;dow&amp;lt;/lastname&amp;gt;&lt;br /&gt;&amp;lt;tid&amp;gt;co-321478&amp;lt;/tid&amp;gt;&lt;br /&gt;&amp;lt;date&amp;gt;01-11-2009&amp;lt;/date&amp;gt;&lt;br /&gt;&amp;lt;/person&amp;gt;&lt;br /&gt;&amp;lt;/gtd&amp;gt;&lt;br /&gt;&amp;lt;/TaxDiclaration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;by the content of the destination tag we will route entire message to his physical destination queue. Whole process is as follows:&lt;br /&gt;&lt;br /&gt;1) Create three business service according to the destination of MQ.&lt;br /&gt;2) Define the routing table xml as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;routing&amp;gt;&lt;br /&gt;&amp;lt;row&amp;gt;&lt;br /&gt;&amp;lt;logical&amp;gt;rtu-chanel-2&amp;lt;/logical&amp;gt;&lt;br /&gt;&amp;lt;physical&amp;gt;rtu_SB/rtu_2_Biz&amp;lt;/physical&amp;gt;&lt;br /&gt;&amp;lt;/row&amp;gt;&lt;br /&gt;&amp;lt;row&amp;gt;&lt;br /&gt;&amp;lt;logical&amp;gt;rtu-chanel-3&amp;lt;/logical&amp;gt;&lt;br /&gt;&amp;lt;physical&amp;gt;rtu_SB/rtu_3_Biz&amp;lt;/physical&amp;gt;&lt;br /&gt;&amp;lt;/row&amp;gt;&lt;br /&gt;&amp;lt;row&amp;gt;&lt;br /&gt;&amp;lt;logical&amp;gt;rtu-chanel-4&amp;lt;/logical&amp;gt;&lt;br /&gt;&amp;lt;physical&amp;gt;rtu_SB/rtu_4_Biz&amp;lt;/physical&amp;gt;&lt;br /&gt;&amp;lt;/row&amp;gt;&lt;br /&gt;&amp;lt;/routing&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;where logical name is the name of the service, which will get from the input xml file. Physical tag contain the qualified name of the business services.&lt;br /&gt;3) Create a proxy service with file transport and configure it with proper system folder to receive file.&lt;br /&gt;3.1) Add one pipeline node and two stage node on request pipeline.&lt;br /&gt;3.2) Add one assign action to collect the file from the inbound transport.&lt;br /&gt;3.3) On 2nd stage node, add one assign action and add the routing table xml to the Expression. Give the variable name as routingTable.&lt;br /&gt;3.4) Add one more assign action which will define the destination content from the xml body as follows:&lt;br /&gt;$body/TaxDiclaration/destination/text()&lt;br /&gt;and give the variable name as like logicalDestination.&lt;br /&gt;3.5)Add one more assign action with following xpath:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;ctx:route&amp;gt;&lt;br /&gt;&amp;lt;ctx:service&amp;gt;{$routingTable/row[logical/text()=$logicalDestination]/physical/text()}&amp;lt;/ctx:service&amp;gt;&lt;br /&gt;&amp;lt;/ctx:route&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;name the variable as physicalService.&lt;br /&gt;3.6) Add a route node on the proxy and put a dynamic routing action on it.&lt;br /&gt;3.7.) On expression properties put the following variable named $physicalService.&lt;br /&gt;Now the service bus is ready for dynamic routing. For testing purpose just put some proper xml file with logical destination, service bus will apply dynamic routing according to the content of the entire xml.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2318907810026613433?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2318907810026613433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2318907810026613433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2318907810026613433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2318907810026613433'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/04/apply-dynamic-routing-on-oracle-service.html' title='Apply dynamic routing on Oracle service bus'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hB7TA2a94zk/SdRgiTBx7xI/AAAAAAAAANg/_EU4DF1uLpo/s72-c/DynamicRouting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3260205936628730181</id><published>2009-03-25T19:42:00.002+02:00</published><updated>2011-06-04T20:21:32.355+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='MDB'/><category scheme='http://www.blogger.com/atom/ns#' term='JCA'/><title type='text'>Develop your custom resource adapter with maven</title><content type='html'>The goal of the post is to publish a complete tutorial of developing a resource adapter using maven2. On the web we could found a few complete tutorial about developing resource adapter which will also help to understand the &lt;a href="http://java.sun.com/j2ee/connector/download.html"&gt;JCA&lt;/a&gt; specification. This current post may help the developer to agile development of JCA adapter. On the developing process we are going to use &lt;a href="http://maven.apache.org/"&gt;maven2&lt;/a&gt; software managment tool and oc4j container to deploy the adpater and MDB client as consumer of the adapter.&lt;br /&gt;For simlicity, we will going to build a inbound file adapter, which will get file periodically from some drive. An MDB (Message driven bean) will subscribe to the adapter to get file and manipulate the content of the file.&lt;br /&gt;1)&lt;span style="font-weight:bold;"&gt; Building the resource adapter&lt;/span&gt;:&lt;br /&gt;1.1)FileActivationSpec.java&lt;br /&gt;JCA activation specification for the inbound JCA resource adapter. This activation specification contains the following configuration items:&lt;br /&gt;- filePath&lt;br /&gt;- fileExt&lt;br /&gt;- pollingInterval&lt;br /&gt;These configuration items are used at runtime by the JCA resource adapter to connect to the file system. An JCA activation specification must adhere to the JavaBean standards.&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.jca.file;&lt;br /&gt;&lt;br /&gt;import javax.resource.spi.ActivationSpec;&lt;br /&gt;import javax.resource.spi.InvalidPropertyException;&lt;br /&gt;import javax.resource.spi.ResourceAdapter;&lt;br /&gt;import javax.resource.ResourceException;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class FileActivationSpec implements Serializable, ActivationSpec {&lt;br /&gt;private static Logger logger = Logger.getLogger(FileActivationSpec.class.getName());&lt;br /&gt;&lt;br /&gt;private ResourceAdapter resourceAdapter;&lt;br /&gt;private String filePath;&lt;br /&gt;private String fileExt;&lt;br /&gt;private int pollingInterval;&lt;br /&gt;&lt;br /&gt;public FileActivationSpec() {&lt;br /&gt;logger.info("[Start] FileActivationSpec");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void validate() throws InvalidPropertyException {&lt;br /&gt;logger.info("[start] validation");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public ResourceAdapter getResourceAdapter() {&lt;br /&gt;return resourceAdapter;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setResourceAdapter(ResourceAdapter resourceAdapter) throws ResourceException {&lt;br /&gt;this.resourceAdapter = resourceAdapter;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getFilePath() {&lt;br /&gt;return filePath;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setFilePath(String filePath) {&lt;br /&gt;this.filePath = filePath;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getFileExt() {&lt;br /&gt;return fileExt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setFileExt(String fileExt) {&lt;br /&gt;this.fileExt = fileExt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getPollingInterval() {&lt;br /&gt;return pollingInterval;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setPollingInterval(int pollingInterval) {&lt;br /&gt;this.pollingInterval = pollingInterval;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;1.2)FileResourceAdapter.java: Custom JCA File Resource Adapter implementation.&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.jca.file;&lt;br /&gt;&lt;br /&gt;import javax.resource.spi.ResourceAdapter;&lt;br /&gt;import javax.resource.spi.BootstrapContext;&lt;br /&gt;import javax.resource.spi.ResourceAdapterInternalException;&lt;br /&gt;import javax.resource.spi.ActivationSpec;&lt;br /&gt;import javax.resource.spi.work.WorkManager;&lt;br /&gt;import javax.resource.spi.endpoint.MessageEndpointFactory;&lt;br /&gt;import javax.resource.spi.endpoint.MessageEndpoint;&lt;br /&gt;import javax.resource.ResourceException;&lt;br /&gt;import javax.resource.cci.MessageListener;&lt;br /&gt;import javax.transaction.xa.XAResource;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;&lt;br /&gt;public class FileResourceAdapter implements ResourceAdapter {&lt;br /&gt;private static Logger logger = Logger.getLogger(FileResourceAdapter.class.getName());&lt;br /&gt;&lt;br /&gt;private WorkManager workManager;&lt;br /&gt;public FileResourceAdapter() {&lt;br /&gt;logger.info("[Start] FileResourceAdapter()");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {&lt;br /&gt;logger.info("[Start] start()");&lt;br /&gt;workManager = bootstrapContext.getWorkManager();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void stop() {&lt;br /&gt;logger.info("[stop] stop()");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void endpointActivation(MessageEndpointFactory messageEndpointFactory, ActivationSpec activationSpec) throws ResourceException {&lt;br /&gt;logger.info("[start] endpointActivation");&lt;br /&gt;MessageEndpoint endPoint =  messageEndpointFactory.createEndpoint(null);&lt;br /&gt;if(endPoint instanceof MessageListener){&lt;br /&gt;FileWork fileWork = new FileWork(activationSpec, endPoint);&lt;br /&gt;workManager.scheduleWork(fileWork);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void endpointDeactivation(MessageEndpointFactory messageEndpointFactory, ActivationSpec activationSpec) {&lt;br /&gt;logger.info("[start] endpointDeactivation");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public XAResource[] getXAResources(ActivationSpec[] activationSpecs) throws ResourceException {&lt;br /&gt;return new XAResource[0];&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;1.3)FileWork.java: A Work instance implementation for this JCA resource adapter that would be executed by a WorkManager upon submission.&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.jca.file;&lt;br /&gt;&lt;br /&gt;import com.blu.jca.bean.FileMessageBean;&lt;br /&gt;&lt;br /&gt;import javax.resource.spi.work.Work;&lt;br /&gt;import javax.resource.spi.ActivationSpec;&lt;br /&gt;import javax.resource.spi.endpoint.MessageEndpoint;&lt;br /&gt;import javax.resource.cci.MessageListener;&lt;br /&gt;import javax.resource.ResourceException;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;import java.util.logging.Level;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class FileWork implements Work {&lt;br /&gt;private static Logger logger = Logger.getLogger(FileWork.class.getName());&lt;br /&gt;&lt;br /&gt;private FileActivationSpec activationSpec;&lt;br /&gt;//private MessageListener messageListener;&lt;br /&gt;private FileMessageListener messageListener;&lt;br /&gt;private boolean released;&lt;br /&gt;public FileWork(ActivationSpec activationSpec, MessageEndpoint messageEndpoint) {&lt;br /&gt;logger.info("[start] FileWork()");&lt;br /&gt;this.activationSpec = (FileActivationSpec) activationSpec;&lt;br /&gt;this.messageListener = (FileMessageListener) messageEndpoint;&lt;br /&gt;this.released = false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void release() {&lt;br /&gt;this.released = true;                            &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean isReleased() {&lt;br /&gt;return released;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void run() {&lt;br /&gt;logger.info("[start] run()");&lt;br /&gt;int pollingInterval = activationSpec.getPollingInterval();&lt;br /&gt;//set polling interval in ms&lt;br /&gt;if(pollingInterval &lt; 5){&lt;br /&gt;pollingInterval = 5000;&lt;br /&gt;}else{&lt;br /&gt;pollingInterval *=1000;&lt;br /&gt;}&lt;br /&gt;logger.info("[Set Polling interval in ms:]"+pollingInterval);&lt;br /&gt;while(!isReleased()){&lt;br /&gt;//start read file from directory&lt;br /&gt;try {&lt;br /&gt;logger.info("[Start reading from folder]");&lt;br /&gt;File folder = new File(activationSpec.getFilePath());&lt;br /&gt;if(folder.exists()&amp;&amp; folder.isDirectory()){&lt;br /&gt;File[] files = folder.listFiles();&lt;br /&gt;// process file&lt;br /&gt;for(File file:files){&lt;br /&gt;FileMessageBean fBean = new FileMessageBean();&lt;br /&gt;fBean.setRecordName("Jca Standard file record");&lt;br /&gt;fBean.setFileName("[fileName]:"+file.getName());&lt;br /&gt;fBean.setRecordShortDescription("JCA file record which wrappes the file data");&lt;br /&gt;FileMessage message = new FileMessage();&lt;br /&gt;message.setFileMesssageBean(fBean);&lt;br /&gt;logger.info("Read file data to wrap");&lt;br /&gt;FileInputStream fis = null;&lt;br /&gt;try {&lt;br /&gt;fis = new FileInputStream(file);&lt;br /&gt;BufferedReader bf = new BufferedReader(new InputStreamReader(fis));&lt;br /&gt;String data;&lt;br /&gt;StringBuffer sbuffer = new StringBuffer();&lt;br /&gt;while( (data = bf.readLine())!= null ){&lt;br /&gt;sbuffer.append(data);&lt;br /&gt;}&lt;br /&gt;fBean.setData(sbuffer.toString());&lt;br /&gt;messageListener.onMessage(message);&lt;br /&gt;// sleep&lt;br /&gt;Thread.currentThread().sleep(pollingInterval);&lt;br /&gt;} catch (FileNotFoundException e) {&lt;br /&gt;logger.log(Level.SEVERE,e.getMessage(),e);&lt;br /&gt;throw new RuntimeException("FileNotFoundException:"+e.getMessage());&lt;br /&gt;} catch(IOException e){&lt;br /&gt;logger.log(Level.SEVERE,e.getMessage(),e);&lt;br /&gt;throw new RuntimeException("Error on reading file:"+e.getMessage());&lt;br /&gt;}finally {&lt;br /&gt;try {&lt;br /&gt;fis.close();&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;logger.log(Level.SEVERE,e.getMessage(),e);&lt;br /&gt;throw new RuntimeException("Error on reading file:"+e.getMessage());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;} catch (InterruptedException e) {&lt;br /&gt;logger.info("[Eroor on Run]"+ e.getMessage());&lt;br /&gt;throw new RuntimeException("error in Run"+e.getMessage());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;1.4) FileMessageBean: Bean serves as standardized data wrapper for the EIS data. In this case this record wraps a message from a file system.&lt;pre class="brush: java"&gt;package com.blu.jca.bean;&lt;br /&gt;&lt;br /&gt;public class FileMessageBean {&lt;br /&gt;private String fileName;&lt;br /&gt;private String data;&lt;br /&gt;private String recordName;&lt;br /&gt;private String recordShortDescription;&lt;br /&gt;&lt;br /&gt;public String getFileName() {&lt;br /&gt;return fileName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setFileName(String fileName) {&lt;br /&gt;this.fileName = fileName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getData() {&lt;br /&gt;return data;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setData(String data) {&lt;br /&gt;this.data = data;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getRecordName() {&lt;br /&gt;return recordName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setRecordName(String recordName) {&lt;br /&gt;this.recordName = recordName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getRecordShortDescription() {&lt;br /&gt;return recordShortDescription;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setRecordShortDescription(String recordShortDescription) {&lt;br /&gt;this.recordShortDescription = recordShortDescription;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean equals(Object o) {&lt;br /&gt;if (this == o) return true;&lt;br /&gt;if (o == null || getClass() != o.getClass()) return false;&lt;br /&gt;&lt;br /&gt;FileMessageBean that = (FileMessageBean) o;&lt;br /&gt;&lt;br /&gt;if (data != null ? !data.equals(that.data) : that.data != null) return false;&lt;br /&gt;if (fileName != null ? !fileName.equals(that.fileName) : that.fileName != null) return false;&lt;br /&gt;&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int hashCode() {&lt;br /&gt;int result;&lt;br /&gt;result = (fileName != null ? fileName.hashCode() : 0);&lt;br /&gt;result = 31 * result + (data != null ? data.hashCode() : 0);&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;1.5) FileMessage.java: Also a wrpper bean to FileMessageBean.&lt;pre class="brush: java"&gt;package com.blu.jca.file;&lt;br /&gt;&lt;br /&gt;import com.blu.jca.bean.FileMessageBean;&lt;br /&gt;&lt;br /&gt;public class FileMessage {&lt;br /&gt;private FileMessageBean fileMesssageBean;&lt;br /&gt;&lt;br /&gt;public FileMessageBean getFileMesssageBean() {&lt;br /&gt;return fileMesssageBean;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setFileMesssageBean(FileMessageBean fileMesssageBean) {&lt;br /&gt;this.fileMesssageBean = fileMesssageBean;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;1.6) FileMessageListener.java: It's a message listner for adapter. &lt;pre class="brush: java"&gt;package com.blu.jca.file;&lt;br /&gt;&lt;br /&gt;import javax.resource.cci.MessageListener;&lt;br /&gt;&lt;br /&gt;public interface FileMessageListener extends MessageListener {&lt;br /&gt;void onMessage(FileMessage message);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;1.7) pom.xml:&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.file&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-adapter&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jca-adapter&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.resource&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;connector15&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;&amp;lt;BPEL_Home&amp;gt;\lib\connector15.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;1.8) Generate rar file with deployment descriptors:1.8.1) ra.xml&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;connector xmlns="http://java.sun.com/xml/ns/j2ee"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"&lt;br /&gt;version="1.5"&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;File JCA Resource Adapter&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;vendor-name&amp;gt;Blue mountain international&amp;lt;/vendor-name&amp;gt;&lt;br /&gt;&amp;lt;eis-type&amp;gt;File Server&amp;lt;/eis-type&amp;gt;&lt;br /&gt;&amp;lt;resourceadapter-version&amp;gt;1.0&amp;lt;/resourceadapter-version&amp;gt;&lt;br /&gt;&amp;lt;resourceadapter&amp;gt;&lt;br /&gt;&amp;lt;resourceadapter-class&amp;gt;com.blu.jca.file.FileResourceAdapter&amp;lt;/resourceadapter-class&amp;gt;&lt;br /&gt;&amp;lt;inbound-resourceadapter&amp;gt;&lt;br /&gt;&amp;lt;messageadapter&amp;gt;&lt;br /&gt;&amp;lt;messagelistener&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;messagelistener-type&amp;gt;javax.resource.cci.MessageListener&amp;lt;/messagelistener-type&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;messagelistener-type&amp;gt;com.blu.jca.file.FileMessageListener&amp;lt;/messagelistener-type&amp;gt;&lt;br /&gt;&amp;lt;activationspec&amp;gt;&lt;br /&gt;&amp;lt;activationspec-class&amp;gt;com.blu.jca.file.FileActivationSpec&amp;lt;/activationspec-class&amp;gt;&lt;br /&gt;&amp;lt;required-config-property&amp;gt;&lt;br /&gt;&amp;lt;config-property-name&amp;gt;filePath&amp;lt;/config-property-name&amp;gt;&lt;br /&gt;&amp;lt;/required-config-property&amp;gt;&lt;br /&gt;&amp;lt;required-config-property&amp;gt;&lt;br /&gt;&amp;lt;config-property-name&amp;gt;fileExt&amp;lt;/config-property-name&amp;gt;&lt;br /&gt;&amp;lt;/required-config-property&amp;gt;&lt;br /&gt;&amp;lt;required-config-property&amp;gt;&lt;br /&gt;&amp;lt;config-property-name&amp;gt;pollingInterval&amp;lt;/config-property-name&amp;gt;&lt;br /&gt;&amp;lt;/required-config-property&amp;gt;&lt;br /&gt;&amp;lt;/activationspec&amp;gt;&lt;br /&gt;&amp;lt;/messagelistener&amp;gt;&lt;br /&gt;&amp;lt;/messageadapter&amp;gt;&lt;br /&gt;&amp;lt;/inbound-resourceadapter&amp;gt;&lt;br /&gt;&amp;lt;/resourceadapter&amp;gt;&lt;br /&gt;&amp;lt;/connector&amp;gt;&lt;br /&gt;&lt;/pre&gt;1.8.2) oc4j-ra.xml:&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="windows-1252" ?&amp;gt;&lt;br /&gt;&amp;lt;oc4j-connector-factories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:noNamespaceSchemaLocation="http://www.oracle.com/technology/oracleas/schema/oc4j-connector-factories-10_0.xsd"&lt;br /&gt;schema-major-version="10" schema-minor-version="0"&amp;gt;&lt;br /&gt;&amp;lt;!-- When deployed the adapter you must define the name as FileResourceAdapter otherwise client will not found it--&amp;gt;&lt;br /&gt;&amp;lt;connector-factory location="eis/FileResourceAdapter" connector-name="FileResourceAdapter"&amp;gt;&lt;br /&gt;&amp;lt;connection-pooling use="none"&amp;gt;&amp;lt;/connection-pooling&amp;gt;&lt;br /&gt;&amp;lt;security-config use="none"&amp;gt;&amp;lt;/security-config&amp;gt;&lt;br /&gt;&amp;lt;/connector-factory&amp;gt;&lt;br /&gt;&amp;lt;/oc4j-connector-factories&amp;gt;&lt;br /&gt;&lt;/pre&gt;1.8.3) pom.xml&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.file&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-rar&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;rar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jca-rar&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.file&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-adapter&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-rar-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;includeJar&amp;gt;false&amp;lt;/includeJar&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;raXmlFile&amp;gt;src/main/resources/ra.xml&amp;lt;/raXmlFile&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;2) &lt;span style="font-weight:bold;"&gt;Deployment:&lt;/span&gt; During adapter deployment, the application server creates a new instance of ResourceAdapter and calls the start() method. ResourceAdapter may initialize any resources required for processing later. In the start() method, ResourceAdapter receives the BootStrapContext object, which can be used to retrieve the WorkManager. ResourceAdapter can use WorkManager to submit work, which in turn starts the work thread. The stop() method of ResourceAdapter is invoked when either the application server is shutting down or the resource adapter is being undeployed.following sequence diagram show even during resource adapter deployment.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/Sc38-KOsV-I/AAAAAAAAANY/2-bLTwaM_94/s1600-h/AdapterSequence.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 146px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/Sc38-KOsV-I/AAAAAAAAANY/2-bLTwaM_94/s320/AdapterSequence.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5318184879822493666" /&gt;&lt;/a&gt;Deployment process is easy in oc4j, through web interface deploy the jca-rar-1.0.rar, during deployment provide resource adapter name as follows FileResourceAdapter.3) Developing MDB client:3.1) FileResourceAdapterClientMDBBean.java: EJB 3.0 Message Driven Bean (MDB) that acts as client for the File JCA Resource Adapter.&lt;pre class="brush: java"&gt;package com.blu.jca.client;&lt;br /&gt;&lt;br /&gt;import oracle.j2ee.ejb.MessageDrivenDeployment;&lt;br /&gt;&lt;br /&gt;import javax.resource.cci.MessageListener;&lt;br /&gt;import javax.resource.cci.Record;&lt;br /&gt;import javax.resource.ResourceException;&lt;br /&gt;import javax.ejb.MessageDriven;&lt;br /&gt;import javax.ejb.ActivationConfigProperty;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;&lt;br /&gt;import com.blu.jca.file.FileMessageListener;&lt;br /&gt;import com.blu.jca.file.FileMessage;&lt;br /&gt;import com.blu.jca.bean.FileMessageBean;&lt;br /&gt;@MessageDriven(&lt;br /&gt;messageListenerInterface=FileMessageListener.class,&lt;br /&gt;activationConfig = {&lt;br /&gt;@ActivationConfigProperty(&lt;br /&gt;propertyName="filePath", propertyValue="D:\\JcaFolder"),&lt;br /&gt;@ActivationConfigProperty(&lt;br /&gt;propertyName="fileExt", propertyValue="*.*"),&lt;br /&gt;@ActivationConfigProperty(&lt;br /&gt;propertyName="pollingInterval", propertyValue="10")&lt;br /&gt;})&lt;br /&gt;/**&lt;br /&gt;* Resource adapter name during deployment by web&lt;br /&gt;* */&lt;br /&gt;@MessageDrivenDeployment(resourceAdapter = "FileResourceAdapter")&lt;br /&gt;public class FileResourceAdapterClientMDBBean implements  FileMessageListener {&lt;br /&gt;private static Logger logger = Logger.getLogger(FileResourceAdapterClientMDBBean.class.getName());&lt;br /&gt;&lt;br /&gt;public FileResourceAdapterClientMDBBean() {&lt;br /&gt;logger.info("[start] FileResourceAdapterClientMDBBean");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Record onMessage(Record record) throws ResourceException {&lt;br /&gt;return record;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void onMessage(FileMessage message) {&lt;br /&gt;logger.info("[start]:File client MDB fileMessage OnMessage");&lt;br /&gt;FileMessageBean fBean = message.getFileMesssageBean();&lt;br /&gt;&lt;br /&gt;logger.info("[Record Name]:"+fBean.getRecordName());&lt;br /&gt;logger.info("[Description:]:"+fBean.getRecordShortDescription());&lt;br /&gt;logger.info("[File Name:]:"+fBean.getFileName());&lt;br /&gt;logger.info("[File Data:]:"+fBean.getData());        &lt;br /&gt;logger.info("[End:] On Message");        &lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;3.2) pom.xml for generate ejb&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.ejb&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-ejb&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;ear&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jca-ejb&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.client&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;type&amp;gt;ejb&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.file&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-adapter&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;finalName&amp;gt;jcaEjb-client&amp;lt;/finalName&amp;gt;&lt;br /&gt;&amp;lt;defaultGoal&amp;gt;package&amp;lt;/defaultGoal&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-ear-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;displayName&amp;gt;JCA ejb client&amp;lt;/displayName&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;Client for JCA file adapter&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;version&amp;gt;1.3&amp;lt;/version&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;modules&amp;gt;&lt;br /&gt;&amp;lt;ejbModule&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.client&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-client&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;bundleFileName&amp;gt;jca-client-1.0-SNAPSHOT.jar&amp;lt;/bundleFileName&amp;gt;&lt;br /&gt;&amp;lt;/ejbModule&amp;gt;&lt;br /&gt;&amp;lt;jarModule&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.jca.file&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jca-adapter&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;bundleFileName&amp;gt;jca-adapter-1.0-SNAPSHOT.jar&amp;lt;/bundleFileName&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;includeInApplicationXml&amp;gt;false&amp;lt;/includeInApplicationXml&amp;gt;&lt;br /&gt;&amp;lt;/jarModule&amp;gt;&lt;br /&gt;&amp;lt;/modules&amp;gt;&lt;br /&gt;&amp;lt;resourcesDir&amp;gt;${basedir}/target/classes&amp;lt;/resourcesDir&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/resources&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;targetPath&amp;gt;META-INF&amp;lt;/targetPath&amp;gt;&lt;br /&gt;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*.xml&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;false&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;/resources&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;after generating ejb package, we will also deploy it on oc4j container. During deployment of MDB client, if following errors will occure, please check the resource adapter name during deployement and mdb client target adpater name. They must be same.No ResourceAdapterWrapper instance found at the specified resource-adapter(&lt;resource-adapter-name&gt;) ...4) Test: Just put any text file on inbound file directory and wait some time. Adapter will collect the file and send it's content to the MDB. All the event will see from the oc4j console.In the conclusion, for further reading see JCA1.5 specification. A much more ideas will get from the follwing resource during writing the post.&lt;ul&gt;&lt;li&gt;http://www.oracle.com/technology/pub/articles/luttikhuizen-adapters.doc&lt;/li&gt;&lt;li&gt;Have your application call my application, Part 3: The resource adapter&lt;br /&gt;Geronimo message-driven beans, JCA resource adapters, and e-mail. http://www.ibm.com/developerworks/opensource/edu/os-dw-os-ag-callme1.html?S_TACT=105AGX44&amp;S_CMP=GRNMO &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3260205936628730181?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3260205936628730181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3260205936628730181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3260205936628730181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3260205936628730181'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/03/develop-your-custom-resource-adapter.html' title='Develop your custom resource adapter with maven'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/Sc38-KOsV-I/AAAAAAAAANY/2-bLTwaM_94/s72-c/AdapterSequence.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2194624297880043347</id><published>2009-02-12T19:52:00.001+02:00</published><updated>2011-06-04T20:22:07.655+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic server 10.3.0.0'/><title type='text'>Correct dependency configuration  for maven-weblogic-plugin to deploy in Weblogic server 10.3.0.0</title><content type='html'>&lt;a href="http://mojo.codehaus.org/weblogic-maven-plugin/installation.html"&gt;Mojo weblogic plugin&lt;/a&gt; version 2.9.0 is not stable for Weblogic server 10.3.0.0. Configuration which suggest on the mojo documentation is not working for current Weblogic server version and produce some hopeless error. Seems installed weblogic.jar and webservices.jar on local repository is not using properly on plug ins life cycle. However it's easy to fix the error through system scope dependency which i will demonstrate below:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;ru.fors.test.gwt.core&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;core-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;core-web&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://www.fors.ru&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;parent&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;ru.fors.test.gwt.core&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;app&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/parent&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;weblogic.version&amp;gt;1.0&amp;lt;/weblogic.version&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;gwt-servlet&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;${gwtVersion}&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;${basedir}/src/main/webapp/WEB-INF/lib/gwt-servlet.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;gwt-user&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;${gwtVersion}&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;${GWT_HOME}/gwt-user.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;    &lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.google.gwt&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;gwt-dev-windows&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;${gwtVersion}&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;${basedir}/src/main/webapp/WEB-INF/lib/gwt-dev-windows.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;  &lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;finalName&amp;gt;core-web&amp;lt;/finalName&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;!-- maven googletoolkit plugin--&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.totsp.gwt&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-googlewebtoolkit2-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.0-beta6&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;extraJvmArgs&amp;gt;-Xmx512m&amp;lt;/extraJvmArgs&amp;gt;&lt;br /&gt;&amp;lt;runTarget&amp;gt;HelloGWT.html&amp;lt;/runTarget&amp;gt;&lt;br /&gt;&amp;lt;compileTargets&amp;gt;&lt;br /&gt;&amp;lt;param&amp;gt;ru.fors.test.gwt.core.HelloGWT&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;lt;/compileTargets&amp;gt;&lt;br /&gt;&amp;lt;webXml&amp;gt;src/main/webapp/WEB-INF/web.xml&amp;lt;/webXml&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;mergewebxml&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;compile&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;webXml&amp;gt;target/web.xml&amp;lt;/webXml&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;!-- maven weblogic plugin configuration --&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;weblogic-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.9.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;adminServerHostName&amp;gt;localhost&amp;lt;/adminServerHostName&amp;gt;&lt;br /&gt;&amp;lt;adminServerPort&amp;gt;7001&amp;lt;/adminServerPort&amp;gt;&lt;br /&gt;&amp;lt;adminServerProtocol&amp;gt;t3&amp;lt;/adminServerProtocol&amp;gt;&lt;br /&gt;&amp;lt;userId&amp;gt;weblogic&amp;lt;/userId&amp;gt;&lt;br /&gt;&amp;lt;password&amp;gt;weblogic&amp;lt;/password&amp;gt;&lt;br /&gt;&amp;lt;upload&amp;gt;false&amp;lt;/upload&amp;gt;&lt;br /&gt;&amp;lt;remote&amp;gt;false&amp;lt;/remote&amp;gt;&lt;br /&gt;&amp;lt;verbose&amp;gt;false&amp;lt;/verbose&amp;gt;&lt;br /&gt;&amp;lt;debug&amp;gt;false&amp;lt;/debug&amp;gt;&lt;br /&gt;&amp;lt;targetNames&amp;gt;AdminServer&amp;lt;/targetNames&amp;gt;&lt;br /&gt;&amp;lt;exploded&amp;gt;false&amp;lt;/exploded&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;lt;phase&amp;gt;install&amp;lt;/phase&amp;gt;&lt;br /&gt;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;deploy&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tools&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;${java.home}/../lib/tools.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;weblogic&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;${weblogic.version}&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;PATH_TO_LIBRARY/weblogic.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;weblogic&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;webservices&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;${weblogic.version}&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;system&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;systemPath&amp;gt;PATH_TO_LIBRARY/webservices.jar&amp;lt;/systemPath&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/java&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*.html&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*.xml&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*.css&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;false&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/resources&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;false&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;/resources&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2194624297880043347?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2194624297880043347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2194624297880043347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2194624297880043347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2194624297880043347'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/02/correct-dependency-configuration-for.html' title='Correct dependency configuration  for maven-weblogic-plugin to deploy in Weblogic server 10.3.0.0'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-562014042831651135</id><published>2009-02-10T19:33:00.000+02:00</published><updated>2009-02-11T10:03:28.674+02:00</updated><title type='text'>Oracle develop roadshow in Moscow, 4-5 th february</title><content type='html'>Last week Oracle corporation demonstrated their roadshow in Moscow. The roadshow started with the sparkling presentation of Larry Cable. Within an hour he could manage to demonstrate the Oracle Big Fussion middleware, focused on Oracle WebLogic Server and related (Java based) standards technologies. It was very interesting to listen JAVA/RICH ENTERPRISE APPLICATIONS TRACK and enjoy the ability of Oracle JDeveloper. I always against Oracle strategy to make JDeveloper as a main IDE to develop all the java related technology on Oracle platform, because it's seems all the eggs in one basket. But while Larry go through all the the ADF rich client with some mouse click, i started believe that may be JDeveloper already got maturity to use seriously.&lt;br /&gt;There were three main Track:&lt;br /&gt;DataBase Track and hands on lab;&lt;br /&gt;Java/Rich enterprise Application track and hands on lab;&lt;br /&gt;Service oriented architecture track and hands on lab.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SZHGvHAb0CI/AAAAAAAAAM4/SpwzOAplUHY/s1600-h/SP_A0291.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SZHGvHAb0CI/AAAAAAAAAM4/SpwzOAplUHY/s320/SP_A0291.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301236749028806690" /&gt;&lt;/a&gt;&lt;br /&gt;I was very interested on SOA track, specially on BEA products. This track covers all things service-oriented architecture (SOA), from basics to best practices. Also covers architecture role on small and large enterprise application. This track also focused on emerging trends such as business process management (BPM) and event-driven architecture. I love the technical deep drive on BPM suite and BPA suite and the Oracle Business Rules engine. The overview of SCA was very interesting, now Oracle has their own implementation of SCA on their basket.&lt;br /&gt;One of my friend convince me to attend on Database track named "Doing SQL from PL/SQL: Best and Worse Practices", it was wonder full to learn about the new features of PL/SQL and the worst practices.&lt;br /&gt;In the conclusion i can only say that, i was satisfied and be sorry for those who missed the roadshow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-562014042831651135?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/562014042831651135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=562014042831651135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/562014042831651135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/562014042831651135'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/02/oracle-develop-roadshow-in-moscow-4-5.html' title='Oracle develop roadshow in Moscow, 4-5 th february'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/SZHGvHAb0CI/AAAAAAAAAM4/SpwzOAplUHY/s72-c/SP_A0291.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6159956646060398516</id><published>2009-02-03T18:49:00.002+02:00</published><updated>2011-06-04T20:23:35.281+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax-ws'/><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><category scheme='http://www.blogger.com/atom/ns#' term='Decision services'/><title type='text'>Wrapping business rules rmi clients with JAX-WS</title><content type='html'>Most often after deploying new business rules in BRES, we have to redeploy IlrSession beans with our custom beans(XOM). Also developing new client for the business rules is time consuming work. Bres(Business rules execution server) provide rmi protocol and some web service support(Decision service) to invoke rules in bres. Deployed rules will be exposed only when you add your domain class(XOM) in the jrules-bres-ootbds.ear and redeploy it again in application server. All the life cycle is too time consuming to manage the whole project. However, often business analyst (Most of time, project mangers require such thing to fulfill customers demand) requires expose business rules through web service for solving business requirement with customer. In today's post i will show a agile way to expose business rules through web service and run it into jdk 6 embedded http server.&lt;br /&gt;We have one web service with a few methods, every method expose one business rules as a web method. For developing i have use jdk 6 and OAS 10.1.3.3 (where installed and deployed ours business rules).&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Web service Class:BusinessRulesServices&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;package ru.fors.test.rules.project;&lt;br /&gt;&lt;br /&gt;import ru.fors.pak.jrules.bom.Result;&lt;br /&gt;&lt;br /&gt;import javax.jws.WebService;&lt;br /&gt;import javax.jws.WebMethod;&lt;br /&gt;import javax.jws.soap.SOAPBinding;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.wsdl.extensions.soap.SOAPBinding;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;&lt;br /&gt;import ilog.rules.bres.session.*;&lt;br /&gt;import ilog.rules.xml.model.IlrXsdXomProcessor;&lt;br /&gt;import ilog.rules.data.IlrSourceStructure;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Package: ru.fors.test.rules.project&lt;br /&gt;* Author: sahmed&lt;br /&gt;* Date: 03.02.2009&lt;br /&gt;*/&lt;br /&gt;@WebService(name = "BusinessRulesServices",&lt;br /&gt;serviceName="BusinessRulesServices",&lt;br /&gt;targetNamespace = "http://com.blu.rules/services")&lt;br /&gt;@SOAPBinding(style = SOAPBinding.Style.DOCUMENT,&lt;br /&gt;use = SOAPBinding.Use.LITERAL,&lt;br /&gt;parameterStyle = SOAPBinding.ParameterStyle.BARE)&lt;br /&gt;public class BusinessRulesServices {&lt;br /&gt;private static Log log = LogFactory.getLog(BusinessRulesServices.class);&lt;br /&gt;&lt;br /&gt;private static final String UFTP_RULESPATH = "/UFTPNRuleAppS/1.0/rmReportUPFT/1.0";&lt;br /&gt;private static IlrStatelessRuleSession session;&lt;br /&gt;&lt;br /&gt;static{&lt;br /&gt;IlrSourceStructure.Properties jndi = new Properties();&lt;br /&gt;jndi.put(IlrXsdXomProcessor.Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.rmi.RMIInitialContextFactory");&lt;br /&gt;jndi.put(Context.PROVIDER_URL,"ormi://Host:12402/NAME_OF_IRLRULESSESION");&lt;br /&gt;jndi.put(Context.SECURITY_PRINCIPAL,"bres");&lt;br /&gt;jndi.put(IlrXsdXomProcessor.Context.SECURITY_CREDENTIALS,"bres");&lt;br /&gt;try {&lt;br /&gt;IlrRuleSessionProvider rsProvider = new IlrRuleSessionProviderFactory.Builder(jndi).build();&lt;br /&gt;session = rsProvider.createStatelessRuleSession();&lt;br /&gt;if(log.isInfoEnabled()){&lt;br /&gt;log.info("[Session Initilized.]");&lt;br /&gt;}&lt;br /&gt;} catch (IlrRuleSessionCreationException e) {&lt;br /&gt;log.error("["+e.getMessage()+"]");&lt;br /&gt;} &lt;br /&gt;}&lt;br /&gt;@WebMethod(operationName = "uftpRules")&lt;br /&gt;public Result callUftpRules(Long paramOperation){&lt;br /&gt;IlrSessionRequest request = new IlrSessionRequest(UFTP_RULESPATH);&lt;br /&gt;IlrSessionExecutionSettings sessionExecutionSettings = request.getExecutionSettings();&lt;br /&gt;IlrSessionParameters inputParameters = sessionExecutionSettings.getInputParameters();&lt;br /&gt;inputParameters.setParameter("paramOperation", paramOperation);&lt;br /&gt;// enable trace&lt;br /&gt;request.getSessionDescriptor().enableTrace();&lt;br /&gt;Result  result = null;&lt;br /&gt;try {&lt;br /&gt;IlrSessionResponse response = session.executeRules(request);&lt;br /&gt;IlrSessionExecutionResult executionResult = response.getExecutionResult();&lt;br /&gt;//System.out.println("FiredRule:"+ executionResult.getNumRulesFired());&lt;br /&gt;result = (Result)executionResult.getOutputParameters().getObjectValue("paramOutput");&lt;br /&gt;} catch (RemoteException e) {&lt;br /&gt;log.error("["+e.getMessage()+"]");&lt;br /&gt;} catch (IlrRuleSessionException e) {&lt;br /&gt;log.error("["+e.getMessage()+"]");&lt;br /&gt;}&lt;br /&gt;if(log.isInfoEnabled()){&lt;br /&gt;log.info("[Request completed.]");&lt;br /&gt;}&lt;br /&gt;return result;&lt;br /&gt;}&lt;br /&gt;// more web methods goes here.&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now we will create the agent to start embedded http server and run the web service.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Agent:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;package ru.fors.test.rules.project;&lt;br /&gt;&lt;br /&gt;import javax.jws.WebService;&lt;br /&gt;import javax.jws.soap.SOAPBinding;&lt;br /&gt;import javax.xml.ws.Endpoint;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Package: ru.fors.test.rules.project&lt;br /&gt;* Author: sahmed&lt;br /&gt;* Date: 03.02.2009&lt;br /&gt;*/&lt;br /&gt;public class TestWs {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;Endpoint.publish("http://localhost:8080/invokeRules",new BusinessRulesServices());&lt;br /&gt;System.out.println("Server start...");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you can run the class TestWs and the wsdl of the web service will be available on the following url: http://localhost:8080/invokeRules?wsdl&lt;br /&gt;Actually it's a simple well known wrapping pattern to expose legacy code as web service.&lt;br /&gt;To run successes fully the agent, you need following libraries in your classpath:&lt;br /&gt;bcel.jar&lt;br /&gt;jrules-engine.jar&lt;br /&gt;oc4jclient.jar&lt;br /&gt;ilrsession.jar&lt;br /&gt;jrules-bres-execution.jar&lt;br /&gt;log4j.jar&lt;br /&gt;commons-logging.jar&lt;br /&gt;commons-discovery.jar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6159956646060398516?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6159956646060398516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6159956646060398516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6159956646060398516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6159956646060398516'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/02/wrapping-business-rules-rmi-clients.html' title='Wrapping business rules rmi clients with JAX-WS'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6815427898693430280</id><published>2009-02-01T18:55:00.001+02:00</published><updated>2011-06-04T20:25:03.082+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax-ws'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='SCA'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><category scheme='http://www.blogger.com/atom/ns#' term='Tuscany'/><category scheme='http://www.blogger.com/atom/ns#' term='Decision services'/><title type='text'>Agile development of apache tucsany SCA with Ilog jrules decision services</title><content type='html'>Apache tucsany provides a framework for developing SOA solution that is based on Service Component Architecture (SCA) standard. Tucsany offers following advantages:&lt;br /&gt;1) Provides a model for creating composite applications by defining the services in the fabric and their relationships with one another.&lt;br /&gt;2) Enables service developers to create reusable services that only contain business logic.&lt;br /&gt;3) Existing applications can work with new SCA compositions. This allows for incremental growth towards a more flexible architecture, outsourcing or providing services to others. &lt;br /&gt;&lt;br /&gt;Tucsany implemented in java and c++ programming language. For more information visit &lt;a href="http://tuscany.apache.org/home.html"&gt;apache tucsany site&lt;/a&gt;. &lt;br /&gt;In the growing uses of business rules in SOA, on the current post i decide to make a laboratory work to show how to use business rules in SCA SOA solution.&lt;br /&gt;For more information to get benifit from business rules please consider my some previous post about Ilog business rules.&lt;br /&gt;On the current tutorial we are going to use following tools and libraries:&lt;br /&gt;1) &lt;a href="http://maven.apache.org/"&gt;Maven 2.0.9&lt;/a&gt;&lt;br /&gt;2) &lt;a href="https://jax-ws.dev.java.net/"&gt;JAX-WS 2.1.5&lt;/a&gt;&lt;br /&gt;3) Tucsany SCA 1.4&lt;br /&gt;4) &lt;a href="http://www.ilog.com"&gt;Ilog Jrules 6.0.7&lt;/a&gt;&lt;br /&gt;All the information to download and install of all tools and frameworks should be found on their home site.&lt;br /&gt;For developing the tutorial i preferred to use Intelli Idea 7. But you can use your own IDE because we uses maven to manage the project and you can easily create any particullar project by maven tools.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Create composite service application:&lt;/span&gt;&lt;br /&gt;The following shows the composition diagram for the composite service application we are about to create.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/SYX1cy1hAuI/AAAAAAAAAMw/abcL8ZZjCZE/s1600-h/sca.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 311px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/SYX1cy1hAuI/AAAAAAAAAMw/abcL8ZZjCZE/s320/sca.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5297910411702633186" /&gt;&lt;/a&gt;&lt;br /&gt;The composite stock agent component consist of two services and one decision service. There is Customer agent service, from where you might get all the necessary information of customer by customer id. From the otder service we will get product information and sned all the information to decision service for some validation. If outgoing status approved, then stock agent generate products bill. Actually example used here to only show the jax-ws binding to ilog decision service. &lt;br /&gt;Now we start developing from the scratch by using maven tools. First we will start ilog jrules server and deploy the example decision service provide with the jrules installation. If you deploy it's properly, you should get the wsdl in the folowing location&lt;br /&gt;http://localhost:8080/DecisionService/ws/PreTradeChecksRuleApp/1.0/PreTradeChecks/1.0?WSDL&lt;br /&gt;For more information develop and deploy decesion service on Jrules, please refer to the following &lt;a href="http://frommyworkshop.blogspot.com/2009/01/simplify-developying-decision-services.html"&gt;post&lt;/a&gt;.&lt;br /&gt;Now it's time to create the pom.xml file as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.blu.sca.simple&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;sca-simple&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;sca-simple&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;repositories&amp;gt;&lt;br /&gt;&amp;lt;repository&amp;gt;&lt;br /&gt;&amp;lt;id&amp;gt;apache.incubator&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://people.apache.org/repo/m2-incubating-repository&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;/repository&amp;gt;&lt;br /&gt;&amp;lt;/repositories&amp;gt;    &lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-node-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-node-impl&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-implementation-java-runtime&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-domain-manager&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-binding-sca&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-binding-sca-axis2&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.tuscany.sca&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;tuscany-host-embedded&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.xml.ws&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxws-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;javax.xml.bind&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxb-api&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun.xml.ws&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxws-rt&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxws-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;phase&amp;gt;process-resources&amp;lt;/phase&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;wsimport&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;packageName&amp;gt;com.blu.sca.dservice&amp;lt;/packageName&amp;gt;&lt;br /&gt;&amp;lt;keep&amp;gt;true&amp;lt;/keep&amp;gt;&lt;br /&gt;&amp;lt;sourceDestDir&amp;gt;${basedir}/src/main/java&amp;lt;/sourceDestDir&amp;gt;&lt;br /&gt;&amp;lt;wsdlDirectory&amp;gt;${basedir}/src/main/resources&amp;lt;/wsdlDirectory&amp;gt;&lt;br /&gt;&amp;lt;wsdlFiles&amp;gt;&lt;br /&gt;&amp;lt;wsdlFile&amp;gt;pretrade.wsdl&amp;lt;/wsdlFile&amp;gt;&lt;br /&gt;&amp;lt;/wsdlFiles&amp;gt;            &lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;com.sun.xml.ws&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;jaxws-tools&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;2.1.5&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;encoding&amp;gt;UTF-8&amp;lt;/encoding&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;exec-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.1&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;lt;goal&amp;gt;java&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;lt;mainClass&amp;gt;com.blu.sca.simple.agent.decision&amp;lt;/mainClass&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;&amp;lt;resource&amp;gt;&lt;br /&gt;&amp;lt;directory&amp;gt;src/main/resources&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;lt;include&amp;gt;**/*&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;lt;filtering&amp;gt;true&amp;lt;/filtering&amp;gt;&lt;br /&gt;&amp;lt;/resource&amp;gt;&lt;br /&gt;&amp;lt;/resources&amp;gt;&lt;br /&gt;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First of all we build the project name sca-simple by maven tools and append all the necessary dependency on it. Download the wsdl file to the src\main\resources folder to generate proxy releated class from the decesion service. In the current project i use latest version of JAX-WS which you probably need to download and install manually on the local maven repositories.&lt;br /&gt;Here is the command to install libraries manually on the maven local repositories.&lt;br /&gt;&lt;pre class="brush: xml"&gt;mvn install:install-file -Dfile=D:\Distributors\java\webservice\jax-ws\jaxws-ri\lib\jaxws-rt.jar -DgroupId=com.sun.xml.ws -DartifactId=jaxws-rt -Dversion=2.1.5 -Dpackaging=jar -DgeneratePom=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Project is now ready to coding. If we will run the following command in console,&lt;br /&gt;$mvn clean compile&lt;br /&gt;the maven will first generate all the stub class from the wsdl and compile the project. This may take a few minutes because maven will download a lot of tuscany modules and files to your local repositories.&lt;br /&gt;For simplicity we will only take a look to the main parts of the project. Anyway the source code the project will be downlodable.&lt;br /&gt;First we will create interface for the decision service as follows:&lt;br /&gt;&lt;pre class="brush: java"&gt;package com.blu.sca.simple.services;&lt;br /&gt;&lt;br /&gt;import org.osoa.sca.annotations.Remotable;&lt;br /&gt;@Remotable&lt;br /&gt;public interface IRulesService {&lt;br /&gt;String lookup(Customer customer, Product product);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and also the implemention:&lt;br /&gt;&lt;pre name="code" class="java"&gt;package com.blu.sca.simple.impl;&lt;br /&gt;&lt;br /&gt;import com.blu.sca.simple.services.IRulesService;&lt;br /&gt;import com.blu.sca.rules.*;&lt;br /&gt;import com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;&lt;br /&gt;import org.osoa.sca.annotations.Reference;&lt;br /&gt;import org.osoa.sca.annotations.AllowsPassByReference;&lt;br /&gt;import org.osoa.sca.annotations.Service;&lt;br /&gt;import org.osoa.sca.ServiceRuntimeException;&lt;br /&gt;&lt;br /&gt;import javax.xml.datatype.XMLGregorianCalendar;&lt;br /&gt;import javax.xml.bind.JAXBContext;&lt;br /&gt;import javax.xml.bind.Marshaller;&lt;br /&gt;import java.io.StringWriter;&lt;br /&gt;&lt;br /&gt;@Service(IRulesService.class)&lt;br /&gt;@AllowsPassByReference&lt;br /&gt;public class RulesService implements IRulesService {&lt;br /&gt;@Reference&lt;br /&gt;protected DecisionServicePreTradeChecks dsrService;&lt;br /&gt;&lt;br /&gt;public String lookup(Customer customer, Product product) {&lt;br /&gt;// create request  &lt;br /&gt;DecisionServiceRequest request = new DecisionServiceRequest();&lt;br /&gt;CustomerParameter customarP = new CustomerParameter();&lt;br /&gt;&lt;br /&gt;customarP.setCustomer(customer);&lt;br /&gt;OrderParameter orderP = new OrderParameter();&lt;br /&gt;&lt;br /&gt;orderP.setOrder(product);&lt;br /&gt;&lt;br /&gt;request.setCustomerParameter(customarP);&lt;br /&gt;request.setOrderParameter(orderP);&lt;br /&gt;&lt;br /&gt;DecisionServiceResponse response = null;&lt;br /&gt;String str="";&lt;br /&gt;ReportParameter report=null;&lt;br /&gt;try{&lt;br /&gt;response = dsrService.executeDecisionService(request);&lt;br /&gt;report = response.getReportParameter();&lt;br /&gt;str = report.getOrder().getStatus();&lt;br /&gt;}catch(DecisionServiceSoapFault fault){&lt;br /&gt;str = fault.getMessage());&lt;br /&gt;}&lt;br /&gt;return str;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally we will create composite xml file to compose all the component.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"&lt;br /&gt;targetNamespace="http://scadecision"&lt;br /&gt;xmlns:sample="http://scadecision"&lt;br /&gt;name="Decisionservice"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;component name="BookingAgentServiceComponent"&amp;gt;&lt;br /&gt;&amp;lt;implementation.java class="com.blu.sca.simple.impl.BookingAgentServiceComponent"/&amp;gt;&lt;br /&gt;&amp;lt;reference name="customerService" target="CustomerServiceComponent" /&amp;gt;&lt;br /&gt;&amp;lt;reference name="orderService" target="OrderServiceComponent" /&amp;gt;&lt;br /&gt;&amp;lt;reference name="rulesService" target="RulesServiceComponent" /&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;component name="RulesServiceComponent"&amp;gt;&lt;br /&gt;&amp;lt;implementation.java class="com.blu.sca.simple.impl.RulesService"/&amp;gt;&lt;br /&gt;&amp;lt;reference name="dsrService"&amp;gt;&lt;br /&gt;&amp;lt;binding.ws uri="http://localhost:8080/DecisionService/ws/PreTradeChecksRuleApp/1.0/PreTradeChecks/1.0?WSDL" /&amp;gt;&lt;br /&gt;&amp;lt;/reference&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;component name="CustomerServiceComponent"&amp;gt;&lt;br /&gt;&amp;lt;implementation.java class="com.blu.sca.simple.impl.CustomerService"/&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;component name="OrderServiceComponent"&amp;gt;&lt;br /&gt;&amp;lt;implementation.java class="com.blu.sca.simple.impl.OrderService"/&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/composite&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At these moment all the component is ready to compose. You can build and run the program by maven as follows:&lt;br /&gt;$mvn clean compile&lt;br /&gt;$mvn exec:java&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6815427898693430280?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6815427898693430280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6815427898693430280' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6815427898693430280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6815427898693430280'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/02/agaile-development-of-apcahe-tucsany.html' title='Agile development of apache tucsany SCA with Ilog jrules decision services'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/SYX1cy1hAuI/AAAAAAAAAMw/abcL8ZZjCZE/s72-c/sca.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3527093094137306107</id><published>2009-01-29T09:47:00.000+02:00</published><updated>2009-01-29T11:32:30.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><category scheme='http://www.blogger.com/atom/ns#' term='Decision services'/><title type='text'>Simplify developying decision services in Ilog jrules</title><content type='html'>Ilog Jrules define decision service as a ordinary web service with management capabilities using JMX MBeans. Through protocol SOAP, it's easy to invoke business rules rather than any other protocol like rmi. More information about decision services should find &lt;a href="http://www.ilog.com/products/jrules/documentation/jrules67/rsexecution/rs_exe_execserver6.html"&gt;here.&lt;/a&gt;&lt;br /&gt;From the view of ilog jrules, there are two types of decision services:&lt;br /&gt;1) Hosted transparent decision services&lt;br /&gt;2) Monitored transparent decision services&lt;br /&gt;&lt;br /&gt;All of them drives rule execution and enables users to access Rule Execution Server through a Web service, rather than accessing it directly.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Hosted transparent decision services:&lt;/span&gt; Using a hosted transparent decision service, Rule Execution Server automatically exposes any deployed rule set as web services, that uses an XML schema or a Java XOM with simple types. The decision service automatically generates Web Services Description Language (WSDL) file for each deployed ruleset archive and the decision service MBean is able to retrieve execution statistics. These rulesets can be exposed as a Web service without passing through code deployment.&lt;br /&gt;The hosted transparent decision service supports all primitive java type automatically. To use hosted transparent decision service, you should deploy transparent decision service archive in the same server where installed RES. &lt;br /&gt;Now installed business rules with &lt;span style="font-style:italic;"&gt;simple data type&lt;/span&gt; in RES will automatically exposes as web services. You can access wsdl from the rule set view of the installed business rules.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hB7TA2a94zk/SYFyye_dKJI/AAAAAAAAAMQ/qqCC2OdNJao/s1600-h/ruleset+view.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_hB7TA2a94zk/SYFyye_dKJI/AAAAAAAAAMQ/qqCC2OdNJao/s320/ruleset+view.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5296640848402655378" /&gt;&lt;/a&gt;&lt;br /&gt;Whenever user click the link to get wsdl, component transparent decision service automatically generate the web service and a new decision service will found in the navigator.&lt;br /&gt;If rule set contains custom java data types, the xom of the rule set must append to the jrules-bres-ootbds-JBOSS40.ear-&gt;jrules-bres-ootbds-JBOSS40.war\WEB-INF\lib directory and redeploy. &lt;br /&gt;Through WSDL it's simple to create java proxy class to test the decision service. Most of the time, i use Xml spy editor to test soap service quickly. XML spy editor has options to create soap request and send it to the server.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Monitored transparent decision services:&lt;/span&gt;&lt;br /&gt;Unlike a hosted transparent decision service, a monitored transparent decision service manages rulesets that use an XML schema or any Java XOM with simple types. XML parameters are represented by a String in the WSDL file.&lt;br /&gt;Using the Client Project for RuleApps wizard, you can create the following projects:&lt;br /&gt;    1) A monitored transparent decision service project from your RuleApp project. The code generator generates two projects: the decision (or Web) service project, and the client project, which can be used to test the code generated in the decision service project. After the ruleset has been executed by this client, the transparent decision service can be monitored by the Rule Execution Server Console. Note that client generated by wizard is not well generating most of all time, it's better to generate client from the wsdl manually.&lt;br /&gt;    2) A Web service project from your rule project. The code generator generates a client project that can be used to test the code generated in the Web service project. This project cannot be detected by the Rule Execution Server management model, so the Rule Execution Server Console does not monitor rulesets executed by the client provided, or any other client. &lt;br /&gt;Monitored transparent decision services created by RuleApps wizard execute rule set archive locally. Actually they never invoke rule set deployed in RES. So there will no execution statistics for the rule set will found in RES. &lt;br /&gt;Generated decision services implements JAX-WS and only support jboss and tomcat.&lt;br /&gt;&lt;br /&gt;Another effective way to invoke business rules are creating a web service as client to call business rules through J2EE provider. Here web service is the mediator of the business rules and client, web service encapsulate all the boilerplate code to call business rules in RES.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3527093094137306107?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3527093094137306107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3527093094137306107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3527093094137306107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3527093094137306107'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/simplify-developying-decision-services.html' title='Simplify developying decision services in Ilog jrules'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hB7TA2a94zk/SYFyye_dKJI/AAAAAAAAAMQ/qqCC2OdNJao/s72-c/ruleset+view.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-9207583308082279977</id><published>2009-01-24T21:34:00.001+02:00</published><updated>2011-06-04T20:26:01.208+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><title type='text'>Best practice for writing effective business rules on Ilog Jrules</title><content type='html'>Documentation which supplied with Ilog Jrules is very much helpfull to write business rules. However, to write better business rules on Ilog Jrules, we might follow some best practice, which will help us to write and manage our rules. In the current post i would like to share my experince with Ilog Jrules as a best practice guide:&lt;br /&gt;1) Follow java naming conventions when creating java class which will converted to BOM. Best approach will be create class with all its functionality.&lt;br /&gt;2) Use rule packages, because on ruleflow you can use rule packages to contol running business rules effectively. However by default all rules under one package will run, you can use dynamic rule selection to select and run any particular business rules.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hB7TA2a94zk/SXuDlRfj-II/AAAAAAAAALw/MHYVug07T_0/s1600-h/ruleFlow.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 269px; height: 320px;" src="http://2.bp.blogspot.com/_hB7TA2a94zk/SXuDlRfj-II/AAAAAAAAALw/MHYVug07T_0/s320/ruleFlow.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5294970463278332034" /&gt;&lt;/a&gt;&lt;br /&gt;3) Use ruleflow task to initialize any global variables, it's not good idea to auto generate variable for any bom.&lt;br /&gt;4) Also it's very usefull to use task for rule packages to intialize bom which will prticipate in the current package.&lt;br /&gt;5) In many cases it's very use full to use task of ruleflow to define metadata which will take part of all business rules over the project. It's may be load any extra data from database tables or from ftp. However task of ruleflow only support java 1.4.&lt;br /&gt;6) Use custom java class with static methods over virtual methods. Becuase it's a huge trouble to manage whole BOM with virtual methods in any extrem projects. During update of BOM you could lost your all virtual methods.&lt;br /&gt;7) In BAL, when working with collections, use clause &lt;where&gt; to filter as much element of collections as possible.&lt;br /&gt;&lt;pre class="brush: java"&gt;set 'personAddress' to serviceUtils . getAddressesFV ( the id of paramPerson )&lt;br /&gt;where each IDWAddress FV is not null&lt;br /&gt;and ( the city of each IDWAddress FV is not null&lt;br /&gt;and the city of each IDWAddress FV is not empty&lt;br /&gt;and utils.upperCase(the city of each IDWAddress FV) contains cityLookedFor ) ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;8) To use collection properly in BAL, you must use Collection interface rather then any implemented class. In version 6.7.2 there are also some bugs related with collections. One of the bug as follows, when calling any xom method with two collection parameters, Jrules mixed the two collections elements on first collection.&lt;br /&gt;9) Write java utility class with static methods to use in BAL, for example compare two collections, check empty collections, check null values. Utility methods help you to write better effective business rules.&lt;br /&gt;10) Use category filter to filter your boms, when you have a lot of classes with similar methods.&lt;br /&gt;11) When using decision tables or decision tree, use precondition to check variable or paramerters which will take part of that rules, because it's realy hard to debug decision tables and tree.&lt;br /&gt;12) In case of similar business rules, i prefared to use tempate for creating rules. It not only help to create rules from the scrach but also you can define category filter effectively for different users.&lt;br /&gt;13) Use documentation field of any business rules to document the rules. I found it very help full when explains ours analyst to create similar rules in team server.&lt;br /&gt;14) Use maven or ant script to create or update IrlSessionBean with your custom java libraries to invoke business rules in execution server.&lt;br /&gt;15) Use j2se client to test the business rules before deploy it in execution server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-9207583308082279977?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/9207583308082279977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=9207583308082279977' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/9207583308082279977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/9207583308082279977'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/best-practice-for-ilog-jrules.html' title='Best practice for writing effective business rules on Ilog Jrules'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hB7TA2a94zk/SXuDlRfj-II/AAAAAAAAALw/MHYVug07T_0/s72-c/ruleFlow.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-5774861889506072604</id><published>2009-01-20T20:56:00.000+02:00</published><updated>2009-01-21T10:59:39.904+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>What will be the future of Oracle SOA suite?</title><content type='html'>Already last year company oracle defined thier fusion middleware strategy. You can find the webcast from &lt;a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=81641&amp;src=6652055&amp;src=6652055&amp;Act=32"&gt;here.&lt;/a&gt; Now at the moment in fusion middleware we got products as BPM suite and &lt;a href="http://www.oracle.com/technologies/soa/bpa-suite.html"&gt;BPA suite.&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.oracle.com/technologies/bpm/bpm-suite.html"&gt;BPM suite&lt;/a&gt; consists former Aqualogic products for BPM. BPM suite contains following products:&lt;br /&gt;* Oracle BPM&lt;br /&gt;* Oracle BPEL Process Manager&lt;br /&gt;* Oracle Business Activity Monitoring&lt;br /&gt;* Oracle Business Rules&lt;br /&gt;* Oracle WebCenter Suite&lt;br /&gt;Now we have two BPEL process manager product in two different suite such as SOA suite and BPM suite. From the documentation of BPM suite, seems it's a good road map to create model business process -&gt; xpdl -&gt; BPEL process.&lt;br /&gt;What we will do with our favorite SOA suite?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-5774861889506072604?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/5774861889506072604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=5774861889506072604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5774861889506072604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/5774861889506072604'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/what-will-be-future-of-oracle-soa-suite.html' title='What will be the future of Oracle SOA suite?'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6403688439131106793</id><published>2009-01-20T13:47:00.001+02:00</published><updated>2011-06-04T20:27:08.273+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><category scheme='http://www.blogger.com/atom/ns#' term='OAS'/><title type='text'>Complete installation of Ilog Jrules on Oracle application server 10.1.3.3.0</title><content type='html'>With Ilog Jrules default distribution, Jboss application sever is default. But customers might choose any application server to use Jrules. In these circumstances, customers should deploy all the necessary components manually. The task is not so straight forward because Jrules consists of a few independent web components. In the following i will describe briefly how to install Ilog Jrules in OAS 10.1.3.3.   &lt;br /&gt;&lt;br /&gt;Jrules consists of following three main web components:&lt;br /&gt;1) RES &lt;br /&gt;2) TEAM SERVER&lt;br /&gt;3) SCENARIO MANAGER&lt;br /&gt;We follow step by step to install and deploy all the components in the OAS.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1) Install RES:&lt;/span&gt;&lt;br /&gt;1.1) First we should create data base user and schema in Oracle DB for component Res. &lt;br /&gt;1.2) Run the script in sqlplus or any other oracle sql client to create new data base objects from the following place&lt;br /&gt;&amp;lt;ILOG_HOME&amp;gt;\JRules672\executionserver\databases\oracle\schema_oracle.sql&lt;br /&gt;1.3)Create a new oc4j instance in the OAS named Ilog_bres&lt;br /&gt;1.4)Create new connection pool and data source for RES as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;connection-pool name="bresdatasourcePool"&amp;gt;&lt;br /&gt;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"&lt;br /&gt;user="bres"&lt;br /&gt;password="bres"&lt;br /&gt;url="jdbc:oracle:thin:@hostname:1521:dbname"&amp;gt;&lt;br /&gt;&amp;lt;/connection-factory&amp;gt;&lt;br /&gt;&amp;lt;/connection-pool&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;managed-data-source name="bresdatasource"&lt;br /&gt;connection-pool-name="bresdatasourcePool"&lt;br /&gt;jndi-name="jdbc/bresdatasource"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;1.5) Add new roles and users by web interfaces as follows&lt;br /&gt;1.5.1) Add role named bres_admin, which will extends from oc4j-administrator and also selects Grant RMI Login и Grant Administration realms for the role.&lt;br /&gt;1.5.2) Add new user named bres and grant him the role bres_admin&lt;br /&gt;1.6) Install all the following components manually in the oc4j instance Ilog_bres:&lt;br /&gt;jrules-bres-management-OC4J1013.ear;&lt;br /&gt;jrules-bres-ootbds-OC4J1013.ear;&lt;br /&gt;jrules-bres-xu-OC4J1013.rar;&lt;br /&gt;jrules-ssp-OC4J1013.ear.&lt;br /&gt;All components will be found in the following directory &amp;lt;ILOG_HOME&amp;gt;\JRules672\executionserver\applicationservers\oracle10g&lt;br /&gt;Installed RES should be found on following url:&lt;br /&gt;http://HOST_NAME:PORT/APPLICATION NAME DEFINED FOR BRES ON THE INSTALLAION&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2) Install Team server:&lt;/span&gt;&lt;br /&gt;2.1) Create two data base schema and user in the oracle DB.&lt;br /&gt;2.2) From default installation of team server in JBOSS, we could generate sql script to create schema objects.&lt;br /&gt;2.3) Run the sql script to create new objects in the data base schema&lt;br /&gt;2.4) Create a new oc4j instance named ilog_ts.&lt;br /&gt;2.5) Increase perm size memory for the container through web interface or add it to opmn.xml file as follows:&lt;br /&gt;perm memory size: 128М, max memory size: 1024М, initial memory size: 512М (it's my configuration - you should calculate your ability)&lt;br /&gt;2.6) Create connections pools and data sources for the container ilog_ts as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;connection-pool name="ilogDataSourcePool"&amp;gt;&lt;br /&gt;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"&lt;br /&gt;user="rts"&lt;br /&gt;password="rts"&lt;br /&gt;url="jdbc:oracle:thin:@hostname:1521:dbname"&amp;gt;&lt;br /&gt;&amp;lt;/connection-factory&amp;gt;&lt;br /&gt;&amp;lt;/connection-pool&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;managed-data-source name=" ilogDataSource"&lt;br /&gt;connection-pool-name="ilogDataSourcePool"&lt;br /&gt;jndi-name="jdbc/ilogDataSource"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;connection-pool name="serverextendedbrmPool"&amp;gt;&lt;br /&gt;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"&lt;br /&gt;user="rtsext"&lt;br /&gt;password="rtsext"&lt;br /&gt;url="jdbc:oracle:thin:@hostname:1521:dbname"&amp;gt;&lt;br /&gt;&amp;lt;/connection-factory&amp;gt;&lt;br /&gt;&amp;lt;/connection-pool&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;managed-data-source name="serverextendedbrm"&lt;br /&gt;connection-pool-name="serverextendedbrmPool"&lt;br /&gt;jndi-name="jdbc/serverextendedbrm"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.7) Add following roles and users:&lt;br /&gt;Roles: rtsAdministrator extends from oc4j-administrator with realms Grant RMI Login , Grant Administration, rtsInstaller and rtsUser&lt;br /&gt;Users: rtsAdmin, which assign all the above roles.&lt;br /&gt;2.8) Deploy the following application into the container:&lt;br /&gt;jrules-teamserver-OC4J10.ear, which will found in the following directory&lt;br /&gt;&amp;lt;ILOG_HOME&amp;gt;\JRules672\teamserver\applicationservers\oracle10g\jrules-teamserver-OC4J10.ear&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3) Install RSM:&lt;/span&gt;&lt;br /&gt;Actually for Scenario manager it's not necessary to create another oc4j container, it will be to install it with res.&lt;br /&gt;3.1) Create one more db schema and user in the oracle database.&lt;br /&gt;3.2) No need to run any script to create data base objects, during installation of the application by data source, rsm will create data base objects need for him.&lt;br /&gt;3.2) Add one more connection pool and data source in the container ilog_bres as follows:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;connection-pool name="rsmdatasourcePool"&amp;gt;&lt;br /&gt;&amp;lt;connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"&lt;br /&gt;user="rsm"&lt;br /&gt;password="rsm"&lt;br /&gt;url="jdbc:oracle:thin:@hostname:1521:dbname"&amp;gt;&lt;br /&gt;&amp;lt;/connection-factory&amp;gt;&lt;br /&gt;&amp;lt;/connection-pool&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;managed-data-source name="rsmdatasource"&lt;br /&gt;connection-pool-name=" rsmdatasourcePool"&lt;br /&gt;jndi-name="jdbc/rsmdatasource"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3.3) Create one role named rsm_user and add a user named rsm. Assign the role to the user rsm.&lt;br /&gt;3.4) Deploy the following application in the container:&lt;br /&gt;jrules-rsm-OC4J1013.ear, which will be found in the following directory &amp;lt;ILOG_HOME&amp;gt;\JRules672\scenariomanager\applicationservers\oracle10g\jrules-rsm-OC4J1013.ear&lt;br /&gt;it's all what you need to install Jrules in the OAS.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Now some additional note:&lt;/span&gt;&lt;br /&gt;1) If any problems will occurs for library commons-logging during installation, it should be better to update it with newer version. You should have find the library in the following directory: webservices/lib.&lt;br /&gt;2) Delete the library commons-cli.jar from the shared library.&lt;br /&gt;3)&lt;span style="font-weight:bold;"&gt;***&lt;/span&gt; Fix the rmi port for all the above defined containers,&lt;br /&gt;3.1) Open the ORACLE_HOME/opmn/conf/opmn.xml file with vi editor or any text editor. &lt;br /&gt;3.2) Locate the &amp;lt;port id="rmi" range="12401-12500"/&amp;gt; entry for the instances ilog_bres and ilog_ts.&lt;br /&gt;3.2) Choose one of the ports for RMI within the range of 12401 and 12500.&lt;br /&gt;For example:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;port id="rmi" range="12402"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now rmi ports are fixed for the containers and during restart or startups of OAS rmi ports will never change.&lt;br /&gt;4) JMX services will be accessible by following url:&lt;br /&gt;service:jmx:rmi:///opmn://HOST:6003/CONTAINER_NAME&lt;br /&gt;5) For solving transaction manager time out problem by rmi protocol do as follows:&lt;br /&gt;add more seconds in transaction-timeout option as like 100 in the transaction-manager.xml file for every container, default is 30 seconds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6403688439131106793?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6403688439131106793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6403688439131106793' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6403688439131106793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6403688439131106793'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/complete-installation-of-ilog-jrules-in.html' title='Complete installation of Ilog Jrules on Oracle application server 10.1.3.3.0'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-1502793561558216991</id><published>2009-01-17T18:06:00.001+02:00</published><updated>2011-06-04T20:28:08.068+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>Apply Business Rules engine to Message Broking in Oracle Service Bus</title><content type='html'>Material of this post was published on oracle magazine (russian edition), see the following link to read the &lt;a href="http://www.oracle.com/global/ru/oramag/mar2009/russia_fors_osb.html"&gt;article&lt;/a&gt;.&lt;br /&gt;From the last few weeks i am working with Oracle OSB. In this post i want to share my some experince to apply Business rules engine to message broking in OSB. The full article has been written in Russian language for Oracle Magazine and will add the link soon after publish.&lt;br /&gt;From the few years we have been familliar with Business rules and java rules engine API(JSR-94) and successfully usees business rules on many project. From the view of OSB - sometimes it's very important to separate the business logic or policy implementions from the OSB proxy service. In any corporate business logic or business policy could change often, specially in tele-communication sector and stock exchanges.&lt;br /&gt;This post is not to discuss about when and why to use Business rules engine rather than how to use it with OSB to implement and separate business policy for message broking.&lt;br /&gt;Here i will discuss about ilog Jrules and it's funtionallity to integrate with OSB.&lt;br /&gt;In the market of BRMS - Ilog Jrules is one of the best and costly implementation of business rules, however open source Drools or Jess is not a toy at all.&lt;br /&gt;Ilog Jrules gave opportunaty to call business rules via web service or ormi protocol (Also jboss t3 and much more).&lt;br /&gt;Actually it's very easy to develop web service as a client which will invoke business rules or rule set. &lt;br /&gt;Ilog jrules offeres plugin in eclipse to create and deploy business rules  as web service.&lt;br /&gt;Here below is fragment of code to invoke business rules for web service.&lt;br /&gt;&lt;pre class="brush: java"&gt;Properties jndi = new Properties();&lt;br /&gt;jndi.put(Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.rmi.RMIInitialContextFactory");&lt;br /&gt;jndi.put(Context.PROVIDER_URL,"ormi://172.24.10.74:12401/paksession");&lt;br /&gt;jndi.put(Context.SECURITY_PRINCIPAL,"bres");&lt;br /&gt;jndi.put(Context.SECURITY_CREDENTIALS,"bres");&lt;br /&gt;&lt;br /&gt;/* Jboss configuration&lt;br /&gt;System.setProperty("java.naming.provider.url","jnp://172.24.10.74");&lt;br /&gt;System.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");&lt;br /&gt;*/&lt;br /&gt;try {&lt;br /&gt;IlrRuleSessionProvider rsProvider = new IlrRuleSessionProviderFactory.Builder(jndi).build();&lt;br /&gt;IlrStatelessRuleSession session = rsProvider.createStatelessRuleSession();&lt;br /&gt;// prepare a new request&lt;br /&gt;String rulesPath = "/UFTPNRuleAppS/1.0/RosFinMonitoringReportUPFT/1.0";&lt;br /&gt;IlrSessionRequest request = new IlrSessionRequest(rulesPath);&lt;br /&gt;// Set the input parameters for the execution of the rules&lt;br /&gt;IlrSessionExecutionSettings sessionExecutionSettings = request.getExecutionSettings();&lt;br /&gt;IlrSessionParameters inputParameters = sessionExecutionSettings.getInputParameters();&lt;br /&gt;inputParameters.setParameter("paramOperation", 1429691l);&lt;br /&gt;request.getSessionDescriptor().enableTrace();&lt;br /&gt;//set the rule Set parameter in the request&lt;br /&gt;IlrSessionResponse response = null;&lt;br /&gt;IlrSessionExecutionResult executionResult = null;&lt;br /&gt;response = session.executeRules(request);&lt;br /&gt;&lt;br /&gt;executionResult = response.getExecutionResult();&lt;br /&gt;&lt;br /&gt;System.out.println("FiredRule:"+ executionResult.getNumRulesFired());&lt;br /&gt;ArrayList firedRules = executionResult.getRulesFired();&lt;br /&gt;for(int i=0, cnt=firedRules.size(); i &lt; cnt; i++){&lt;br /&gt;//ilog.rules.engine.IlrRule rule = (IlrRule) firedRules.get(i);&lt;br /&gt;System.out.println("Fired Rule Name:"+firedRules.get(i));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} catch (IlrRuleSessionCreationException e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} catch(RemoteException e){&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} catch(IlrRuleSessionException e){&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} /*catch(NamingException e){&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}*/&lt;br /&gt;&lt;/pre&gt;In the part of OSB, have a severel way to use Business rules in proxy service.1) Define a business service with the WSDL of the web service of business rules, which will have higher level of abstraction of the buseiness rule.Assaign the input message and invoke the service and assaign the result in any local variable for further using.Here is nothing special than any other call of service.2) Create a java project first to invoke j2ee call to Business rule. Implements the invoke such as above in any static method.Compile and create artifact(a jar file) from the project and import or copy the jar file into the OSB project.Define a java call out node in proxy service of OSB and prepare input and output message to call the business service.In the such way we can use business rule or policy in OSB.In Ilog there is another type of service named decision service, it's simply a web service with JMX manegment.In the following see the rules engine invocation in action:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SXM-lELdlgI/AAAAAAAAALQ/7A6Sf38f1_s/s1600-h/Rules+callout.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 303px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SXM-lELdlgI/AAAAAAAAALQ/7A6Sf38f1_s/s320/Rules+callout.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5292642793588364802" /&gt;&lt;/a&gt;Also follow the following articles to know much more about business rules invocation:&lt;a href="http://www.oracle.com/technology/pub/articles/bpel_cookbook/geminiuc.html"&gt;http://www.oracle.com/technology/pub/articles/bpel_cookbook/geminiuc.html&lt;/a&gt;&lt;a href="http://www-128.ibm.com/developerworks/java/library/j-drools"&gt;http://www-128.ibm.com/developerworks/java/library/j-drools/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-1502793561558216991?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/1502793561558216991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=1502793561558216991' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1502793561558216991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/1502793561558216991'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/apply-business-rules-engine-to-message.html' title='Apply Business Rules engine to Message Broking in Oracle Service Bus'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/SXM-lELdlgI/AAAAAAAAALQ/7A6Sf38f1_s/s72-c/Rules+callout.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2833578040756571350</id><published>2009-01-13T09:54:00.001+02:00</published><updated>2011-06-04T20:29:12.587+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Method for avoiding error ORABPEL-100010 in design time</title><content type='html'>Error ORABPEL-100010 occures in design time when user add any user defined xml schema in order to define any element. Seems this design time bug was not fixed since 10.1.3.1.&lt;br /&gt;&lt;br /&gt;A handy method was found recently to avoid the above error.&lt;br /&gt;&lt;br /&gt;Step 1: Add the user defined xsd file in the following catalog to access it through application server %BPEL_HOME%/bpel/system/xmllib&lt;br /&gt;&lt;br /&gt;step 2: import the xsd file in any wsdl file of the project as follows&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;import namespace="http://xxx.com/xxx" location="http://your_localhost:8888/orabpel/xmllib/XXXX.xsd"/&amp;gt;&lt;/pre&gt;&lt;br /&gt;step 3: add the following namespace in your *.bpel process file&lt;br /&gt;&lt;br /&gt;xmlns:ns3="http://xxx.com/xxx"&lt;br /&gt;&lt;br /&gt;Use command line tool to compile the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2833578040756571350?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2833578040756571350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2833578040756571350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2833578040756571350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2833578040756571350'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/method-for-avoiding-error-orabpel.html' title='Method for avoiding error ORABPEL-100010 in design time'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4146541337047917421</id><published>2009-01-13T09:38:00.000+02:00</published><updated>2009-01-20T13:22:46.457+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='second level(L2) cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Configure Oracle Coherence as a second level(L2) cache</title><content type='html'>It's republish of my blog from another domain. The post was published at May 13 2008. &lt;br /&gt;A few weeks before Oracle corporation bought company tangosol, which have a caching framework for enterprise application. Coherence might be used as a second level cache or as Cache store in any enterprise solution. How to use coherence as a Cache store would be found in the following URL:http://www.oracle.com/technology/pub/articles/vohra-coherence.html&amp;nbsp . In the current blog we will configure a coherence L2 cache using Hibernate (Hibernate - a well known ORM framework).&lt;br /&gt;&lt;br /&gt;First, download oracle Coherence from the following URL http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html&lt;br /&gt;&lt;br /&gt;Using Coherence as L2 cache we only need 3 libraries out of others: coherence.jar, coherence-hibernate.jar, tangosol.jar.&lt;br /&gt;&lt;br /&gt;Install them in local maven2 repositories. Now we have to configure hibernate.cfg.xml which should be in application classPath as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/SWxGar0_KjI/AAAAAAAAAKo/wu2f3xMgAa4/s1600-h/hibernate-cfg.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 165px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/SWxGar0_KjI/AAAAAAAAAKo/wu2f3xMgAa4/s320/hibernate-cfg.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5290681086509001266" /&gt;&lt;/a&gt;&lt;br /&gt;By default Coherence will use configuration from coherence-hibernate.jar/coherence-config.xml. We may override the configuration by providing a new configuration file relaid in classpath named coherence-cache-config.xml. A simple coherence-cache-config provide in the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SWxHwOh09YI/AAAAAAAAAKw/zs8i3qCyPSM/s1600-h/cache.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 275px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SWxHwOh09YI/AAAAAAAAAKw/zs8i3qCyPSM/s320/cache.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5290682556112762242" /&gt;&lt;/a&gt;&lt;br /&gt;If logging is enable for the application, we would see log messages as follows:&lt;br /&gt;2008-05-12 10:56:19,079 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Second-level cache: enabled&gt;&lt;br /&gt;2008-05-12 10:56:19,079 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Query cache: enabled&gt;&lt;br /&gt;2008-05-12 10:56:19,079 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Cache provider: com.tangosol.coherence.hibernate.CoherenceCacheProvider&gt;&lt;br /&gt;2008-05-12 10:56:19,266 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Optimize cache for minimal puts: enabled&gt;&lt;br /&gt;2008-05-12 10:56:19,266 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Structured second-level cache entries: disabled&gt;&lt;br /&gt;2008-05-12 10:56:19,266 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Query cache factory: org.hibernate.cache.StandardQueryCacheFactory&gt;&lt;br /&gt;2008-05-12 10:56:19,282 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Echoing all SQL to stdout&gt;&lt;br /&gt;2008-05-12 10:56:19,282 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Statistics: disabled&gt;&lt;br /&gt;2008-05-12 10:56:19,282 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Deleted entity synthetic identifier rollback: disabled&gt;&lt;br /&gt;2008-05-12 10:56:19,282 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Default entity-mode: pojo&gt;&lt;br /&gt;2008-05-12 10:56:19,282 INFO [org.hibernate.cfg.SettingsFactory] - &lt;Named query checking : enabled&gt;&lt;br /&gt;2008-05-12 10:56:19,329 INFO [org.hibernate.impl.SessionFactoryImpl] - &lt;building session factory&gt;&lt;br /&gt;2008-05-12 10:56:19.547 Oracle Coherence 3.3.1/389 &lt;Info&gt; (thread=main, member=n/a): Loaded operational configuration from resource "jar:file:/C:/Documents%20and%20Settings/sahmed/.m2/repository/com/tangosol/coherence/coherence/1.0/coherence-1.0.jar&amp;#33;/tangosol-coherence.xml"&lt;br /&gt;2008-05-12 10:56:19.547 Oracle Coherence 3.3.1/389 &lt;Info&gt; (thread=main, member=n/a): Loaded operational overrides from resource "jar:file:/C:/Documents%20and%20Settings/sahmed/.m2/repository/com/tangosol/coherence/coherence/1.0/coherence-1.0.jar&amp;#33;/tangosol-coherence-override-dev.xml"&lt;br /&gt;2008-05-12 10:56:19.547 Oracle Coherence 3.3.1/389 &lt;D5&gt; (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified&lt;br /&gt;&lt;br /&gt;Oracle Coherence Version 3.3.1/389&lt;br /&gt; Grid Edition: Development mode&lt;br /&gt;Copyright (c) 2000-2007 Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;2008-05-12 10:56:20.954 Oracle Coherence GE 3.3.1/389 &lt;D5&gt; (thread=Cluster, member=n/a): Service Cluster joined the cluster with senior service member n/a&lt;br /&gt;2008-05-12 10:56:24.204 Oracle Coherence GE 3.3.1/389 &lt;Info&gt; (thread=Cluster, member=n/a): Created a new cluster with Member(Id=1, Timestamp=2008-05-12 10:56:20.625, Address=172.24.11.226:8088, MachineId=49122, Location=process:3396@s-ahmed, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) UID=0xAC180BE200000119DBEA6091BFE21F98&lt;br /&gt;2008-05-12 10:56:24.250 Oracle Coherence GE 3.3.1/389 &lt;Info&gt; (thread=main, member=1): Loaded cache configuration from resource "jar:file:/C:/Documents%20and%20Settings/sahmed/.m2/repository/com/tangosol/coherence/hibernate/coherence-hibernate/1.0/coherence-hibernate-1.0.jar&amp;#33;/config/hibernate-cache-config.xml"&lt;br /&gt;2008-05-12 10:56:24.532 Oracle Coherence GE 3.3.1/389 &lt;D5&gt; (thread=ReplicatedCache:HibernateReplicatedCache, member=1): Service HibernateReplicatedCache joined the cluster with senior service member 1&lt;br /&gt;2008-05-12 10:56:25,000 INFO [org.hibernate.impl.SessionFactoryObjectFactory] - &lt;Not binding factory to JNDI, no JNDI name configured&gt;&lt;br /&gt;2008-05-12 10:56:25,016 INFO [org.hibernate.cache.UpdateTimestampsCache] - &lt;starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache&gt;&lt;br /&gt;2008-05-12 10:56:25,016 INFO [org.hibernate.cache.StandardQueryCache] - &lt;starting query cache at region: org.hibernate.cache.StandardQueryCache&gt;&lt;br /&gt;2008-05-12 10:56:25.157 Oracle Coherence GE 3.3.1/389 &lt;Info&gt; (thread=main, member=1): Loaded cache configuration from resource "file:/E:/WorkSpace/MyProjects/Coherence/coherence-test/target/classes/coherence-cache-config.xml"&lt;br /&gt;entity cache items:SafeNamedCache: CacheHandler&lt;br /&gt;&lt;br /&gt;A much more configurations detailed in the user guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4146541337047917421?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4146541337047917421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4146541337047917421' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4146541337047917421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4146541337047917421'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/using-oracle-coherence-as-second.html' title='Configure Oracle Coherence as a second level(L2) cache'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/SWxGar0_KjI/AAAAAAAAAKo/wu2f3xMgAa4/s72-c/hibernate-cfg.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-583931180111489425</id><published>2009-01-12T20:50:00.000+02:00</published><updated>2009-01-13T16:32:27.377+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>My first glance to Oracle Service Bus and compare with it Oracle SOA suite ESB</title><content type='html'>Recently Oracle gave access to download their new product Oracle ESB (formally known Aqua Logic ESB). Last year one of my project was related with SOA suite ESB. However, there were a few bugs with it, but we completed our project successfully with satisfaction.&lt;br /&gt;When the times came to use Oracle OSB, i wondered with his functionality, a lot of Nodes and Actions pleased me well. At first it seems to be on workspace of BPEL but it's only for using on ESB. All these nodes made easy of ESB development. See the design template at a glance&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hB7TA2a94zk/SWuVQZ9RG-I/AAAAAAAAAKY/UFijeT-v_vQ/s1600-h/Templatedesign.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 308px;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/SWuVQZ9RG-I/AAAAAAAAAKY/UFijeT-v_vQ/s320/Templatedesign.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5290486296355085282" /&gt;&lt;/a&gt;&lt;br /&gt;However i have also found a cons in OSB is that, it haven't contains any built in JCA compatible adapter to connect with another resource. Throw proxy service OSB can use any type of protocol include FTP, SMTP, TUX. OSB defines these type of services SOAP without WSDL and XML without WSDL service. Take a look at the built in adapters in SOA suite ESB.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hB7TA2a94zk/SWuW6f-o_9I/AAAAAAAAAKg/2rW3upUEJnw/s1600-h/SoaSuiteESBAdapters.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 268px; height: 320px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SWuW6f-o_9I/AAAAAAAAAKg/2rW3upUEJnw/s320/SoaSuiteESBAdapters.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5290488119037591506" /&gt;&lt;/a&gt;&lt;br /&gt;However, OSB hasn't contain any adapter, through proxy service OSB can integrate with any kind of legacy system and resources.&lt;br /&gt;It would be better to take a glance in the following overall architecture of the OSB:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SWyl3y3poaI/AAAAAAAAALA/E3cUgVFfUOM/s1600-h/ESB_arch.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 190px; height: 200px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SWyl3y3poaI/AAAAAAAAALA/E3cUgVFfUOM/s200/ESB_arch.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5290786040220066210" /&gt;&lt;/a&gt;&lt;br /&gt;Link for download &lt;a href="http://www.oracle.com/technology/software/products/osb/index.html"&gt;OSB&lt;/a&gt;.&lt;br /&gt;A good book to learn OSB out here &lt;a href="http://apress.com/book/view/1430210575"&gt;The Definitive Guide to SOA: Oracle® Service Bus, Second Edition&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-583931180111489425?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/583931180111489425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=583931180111489425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/583931180111489425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/583931180111489425'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/my-first-glance-to-oracle-service-bus.html' title='My first glance to Oracle Service Bus and compare with it Oracle SOA suite ESB'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/SWuVQZ9RG-I/AAAAAAAAAKY/UFijeT-v_vQ/s72-c/Templatedesign.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6032915808443802453</id><published>2009-01-09T12:54:00.000+02:00</published><updated>2009-01-09T14:14:36.325+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><title type='text'>Using JPA with ilog Jrules project</title><content type='html'>Last couple of months i have worked with Ilog Jrules. These BRMS has lot of functionality to use business rules effectively in any project. Sometimes it's very usefull to get some additional meta data from database to execute business rules. In Ilog jrules documentation is not so useful to know how to use JPA, however in documentation you should found a few information with bunch of code. This post will explain how to use JPA in ilog jrules project and save a couple of hours for new comm er in BRMS.&lt;br /&gt;At first in jrules we have to build XOM(Execution object model), which will execute all the business logic. After that we define BOM (Business object model) from XOM to write business logic's in project.&lt;br /&gt;For using JPA we will make a class which will get all the CRUD operations and delegate every thing to the DAO layer. &lt;br /&gt;Class diagram is as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hB7TA2a94zk/SWcz-xQiH2I/AAAAAAAAAJo/Pz3ePF6OGb4/s1600-h/classDiagram.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 138px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SWcz-xQiH2I/AAAAAAAAAJo/Pz3ePF6OGb4/s320/classDiagram.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289253440837525346" /&gt;&lt;/a&gt;&lt;br /&gt;Here implemention of the IDAOService interface is a basic implemention of the DAO pattern and initialize session manager to manage all the CRUD operations. I guess explanation of the DAO pattern is redundant.&lt;br /&gt;Now at these moment we can create BOM from the XOM and define only the JPAService. JPAService operations will be available for writting buseinss rules.&lt;br /&gt;After creating BOM we have to initilize the JPAService class to use. &lt;br /&gt;In Jrules there are two ways to do that.&lt;br /&gt;1) In the class verbalization of JPAService in BOM we can select the check box named &lt;Generate Automatic varable&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hB7TA2a94zk/SWc4XC3MEHI/AAAAAAAAAJw/N1EfmteJO1U/s1600-h/aut.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 124px;" src="http://2.bp.blogspot.com/_hB7TA2a94zk/SWc4XC3MEHI/AAAAAAAAAJw/N1EfmteJO1U/s320/aut.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289258255926431858" /&gt;&lt;/a&gt;&lt;br /&gt;2) Most effective method and which i preffered is to initialize the JPAService class in the initial task of the rule flow as follows:&lt;br /&gt; first we will create a global variable named serviceUtils of the type of JPAService, and then initilize the valiable in the initial action of the rule flow.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hB7TA2a94zk/SWc4hi2CvmI/AAAAAAAAAJ4/PPITQL-FCuA/s1600-h/task.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 189px;" src="http://2.bp.blogspot.com/_hB7TA2a94zk/SWc4hi2CvmI/AAAAAAAAAJ4/PPITQL-FCuA/s320/task.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5289258436310253154" /&gt;&lt;/a&gt;&lt;br /&gt;Now we are ready to use these variable in BAL, decesion Tree, decesion Table even in the IRL construction.&lt;br /&gt;In following i put some frugment of BAL code,&lt;br /&gt;&lt;b&gt;definitions&lt;br /&gt;    set 'partners' to serviceUtils . getPartners ( the id of paramPerson )&lt;br /&gt;            where each IDWPerson recepients is not null&lt;br /&gt;            and (the person type sys name of each IDWPerson recepients is not empty and the person type sys name of each IDWPerson recepients contains "UL")&lt;br /&gt;            and ( the fact address of each IDWPerson recepients is not empty&lt;br /&gt;            and ( utils .upperCase(the fact address of each IDWPerson recepients) contains "Delhi"&lt;br /&gt;            or utils .upperCase(the fact address of each IDWPerson recepients) contains "Kanpur" ) ) ;&lt;br /&gt;    set 'partnersId' to serviceUtils . getPersonsId ( partners ) ;&lt;br /&gt;if&lt;br /&gt;    buffer . isEmptyCollection ( partnersId ) is false&lt;br /&gt;then&lt;br /&gt; add partnersId to the frst collections of varBuffer ;&lt;br /&gt;    print "partners found" ;&lt;/b&gt;&lt;br /&gt;Some additional information:&lt;br /&gt;You must supply all the necessary libraries of JPA to J2eeruleSession.ear to invoke business rules remotly. Also must add all the libraries in the jrules-rsm-ssp.war file to use in scenario manager.&lt;br /&gt;P.S. I assume all the information will help somebody to save couple of hours to develop business rules with JPA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6032915808443802453?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6032915808443802453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6032915808443802453' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6032915808443802453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6032915808443802453'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/using-jpa-with-ilog-jrules-project.html' title='Using JPA with ilog Jrules project'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/SWcz-xQiH2I/AAAAAAAAAJo/Pz3ePF6OGb4/s72-c/classDiagram.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4755119107386705569</id><published>2009-01-08T16:13:00.001+02:00</published><updated>2011-06-04T20:30:47.414+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='Continuum'/><title type='text'>Configure POM to build maven project in continuum</title><content type='html'>If you are using SVN for version control with username password credential, it is not srtaigh forward to add new project with multiple modules. Server continuum couldnot save the user name and password defined on the add project forms. These bug only occured when using SVN as version control, with CVS these bugs not found yet. With minimum change on pom.xml of multiple module could resolve these problem. Just define username and password in the pom.xml for authentification. I define a pom.xml as follows to show the configuration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hB7TA2a94zk/SWYmOozcNuI/AAAAAAAAAHI/lKFDNKlis1M/s1600-h/ScmConfiguration.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://3.bp.blogspot.com/_hB7TA2a94zk/SWYmOozcNuI/AAAAAAAAAHI/lKFDNKlis1M/s320/ScmConfiguration.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5288956845306427106" /&gt;&lt;/a&gt;&lt;br /&gt;Now continuum will add project sucessfully, even you could use following commands from your terminal:&lt;br /&gt;mvn scm:update&lt;br /&gt;mvn scm:validate&lt;br /&gt;Following link show all avaliable scm commands:&lt;br /&gt;&lt;a href="http://maven.apache.org/scm/maven-scm-plugin/plugin-info.html"&gt;maven scm commands&lt;/a&gt;&lt;br /&gt;But these way we have also a cons here, everybody from your developer group of these project will know your username and password. Anyway, we could use single number of user credential to build project on the Continumm server.&lt;br /&gt;Continuum project build notifier can be also configured by following fragment code.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;ciManagement&amp;gt;&lt;br /&gt;&amp;lt;system&amp;gt;Continuum&amp;lt;/system&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://sunny.fors.ru/continuum&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;notifiers&amp;gt;&lt;br /&gt;&amp;lt;notifier&amp;gt;&lt;br /&gt;&amp;lt;type&amp;gt;mail&amp;lt;/type&amp;gt;&lt;br /&gt;&amp;lt;address&amp;gt;xyz@fors.ru&amp;lt;/address&amp;gt;&lt;br /&gt;&amp;lt;/notifier&amp;gt;&lt;br /&gt;&amp;lt;/notifiers&amp;gt;&lt;br /&gt;&amp;lt;/ciManagement&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4755119107386705569?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4755119107386705569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4755119107386705569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4755119107386705569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4755119107386705569'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2009/01/configure-pom-to-build-maven-project-in.html' title='Configure POM to build maven project in continuum'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hB7TA2a94zk/SWYmOozcNuI/AAAAAAAAAHI/lKFDNKlis1M/s72-c/ScmConfiguration.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-2509326970326711910</id><published>2008-12-28T18:03:00.000+02:00</published><updated>2009-01-07T18:14:23.321+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Using ws-jmx-connector for cross platform agent to interoperate with JMX Agent</title><content type='html'>Now a connecter named ws-jmx-connector has realesed to use for calling JMX agent. This connector uses soap call to connect with JMX agent.&lt;br /&gt;See the project link for more information.&lt;br /&gt;I have download the realease and install. Tried samples delivered with artifact and wondered. it's simple implements of JSR 262.&lt;br /&gt;&lt;br /&gt;If you have all ready wiseman worked - this connector will help you to make your development easy.&lt;br /&gt;I have used jax-ws library delivered with wiseman and wise library to compile and run the samples.&lt;br /&gt;&lt;br /&gt;Some additional information will be very usefull to run samples under 64bit version of java. I tried java 1.5_014 64 bit version on fedora and got following class not found exception:&lt;br /&gt; java.lang.NoClassDefFoundError: com/sun/xml/ws/developer/MemberSubmissionAddressing$Validation&lt;br /&gt;Download and install JAX-WS RI 2.1.5 which contains the right library jaxws-rt.jar to run all the samples under 64 bit version of JVM.&lt;br /&gt;&lt;br /&gt;In the holyday i will make a try to use this connector in our projects. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See also following links:&lt;br /&gt;http://marxsoftware.blogspot.com/2008/05/first-look-at-jmx-web-services.html&lt;br /&gt;http://marxsoftware.blogspot.com/2008/06/second-look-at-jmx-web-services.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-2509326970326711910?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/2509326970326711910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=2509326970326711910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2509326970326711910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/2509326970326711910'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2008/12/using-ws-jmx-connector-for-cross.html' title='Using ws-jmx-connector for cross platform agent to interoperate with JMX Agent'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4425908118408653289</id><published>2008-12-22T20:13:00.001+02:00</published><updated>2009-05-21T09:53:51.627+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>New SOA certification announced from Oracle Corporation</title><content type='html'>Yesterday Oracle announced new certification on Oracle SOA architecture. Test code is 1Z0-114, cost Only $125.&lt;br /&gt;I created a yahoo groups named oraclesoa 1Z0-114 to discuss about the certification. Everybody welcome on group.&lt;br /&gt;&lt;a href="http://tech.groups.yahoo.com/group/oraclesoa/"&gt;Here is the link of the group.&lt;/a&gt;&lt;br /&gt;Follow the following links to meet with exam topics and much more.&lt;a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&amp;p_org_id=1080544&amp;lang=US&amp;p_exam_id=1Z0_114#3"&gt; Click here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some new files were recently added on group, specially a few exam dumps to get prepare for the exam. However the new exam migrated from old bea SOA architect exam and recommended read study guide or get training from oracle university. Overview of the training guide "SOA Architectural Concepts and Design Principles" already uploaded on the groups file system. Code for the training is D70926GC10 from company BEA, training guide (powerpoint presentation about 823 pages) contains most of all exam topic. Another training guide named "Organization, Planning, and Architectural Considerations for SOA" code:D70924GC10 also recommended from oracle to prepare for the certification.&lt;br /&gt;"SOA Architectural Concepts and Design Principles" training guide cover following topics:&lt;br /&gt;- Services and service reuse concepts&lt;br /&gt;- Services infrastructure requirements and design principles&lt;br /&gt;- The BEA SOA six-domain model&lt;br /&gt;- SOA organizational governance models&lt;br /&gt;- Business and IT SOA initiatives&lt;br /&gt;- SOA cost/benefit analysis concerns&lt;br /&gt;- The principles of design using a layered services architecture&lt;br /&gt;- The issues associated with Web services design implementations&lt;br /&gt;- SOA-enabling BEA product mappings.&lt;br /&gt;"Organization, Planning, and Architectural Considerations for SOA" training guide cover following topics:&lt;br /&gt;- Services and service reuse concepts&lt;br /&gt;- Services infrastructure requirements&lt;br /&gt;- The BEA SOA six-domain model&lt;br /&gt;- SOA governance issues&lt;br /&gt;- Business and IT SOA initiatives&lt;br /&gt;- SOA cost/benefit analysis concerns&lt;br /&gt;- Reference architecture principles&lt;br /&gt;- SOA-enabling BEA product mappings.&lt;br /&gt;Join and share your experience with all of us.&lt;br /&gt;&lt;a href="http://groups.yahoo.com/group/oraclesoa/join"&gt;&lt;br /&gt;  &lt;img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/i/us/ui/join.gif"/&gt;&lt;br /&gt;  &lt;p&gt;Click to join oraclesoa&lt;/p&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4425908118408653289?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4425908118408653289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4425908118408653289' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4425908118408653289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4425908118408653289'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2008/12/new-soa-certification-from-oracle.html' title='New SOA certification announced from Oracle Corporation'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-4883069603168653619</id><published>2008-12-17T20:14:00.000+02:00</published><updated>2008-12-17T20:18:46.603+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><title type='text'>Using JMX Mbeans for BRES managements</title><content type='html'>Business Rules execution server allowed management throw JMX. All the bres functionality could invoked by JMX. See jmx client sample code for getting help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-4883069603168653619?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/4883069603168653619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=4883069603168653619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4883069603168653619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/4883069603168653619'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2008/12/using-jmx-mbeans-for-bres-managements.html' title='Using JMX Mbeans for BRES managements'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-3531947181675659152</id><published>2008-12-17T19:41:00.000+02:00</published><updated>2009-01-20T13:28:45.773+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ilog Jrules'/><title type='text'>Configure Ilog Jrules In Oracle Application Server</title><content type='html'>Last week we configured Ilog jrules version 6.7.2 in the OAS version 10.1.3.3.&lt;br /&gt;Ilog Jrules consist of three main web components as follows:&lt;br /&gt;1)Rules execution server&lt;br /&gt;2)Team server&lt;br /&gt;3)Scenario manager&lt;br /&gt;First we had to define the number of oc4j instance to create and fix all the data sources.&lt;br /&gt;We created 1 extra oc4j instance for team server, create datasources and deploy the teamserver. One classloader problem occurred for commons-logging.jar. Just edit application.xml to unregistered shared library.&lt;br /&gt;Next we defined another two data source for the BRES, SCM and deploy these application on home. IrlSessionRule session bean we also deployed in home along with BRES.&lt;br /&gt;&lt;br /&gt;Next we have to define all the role and user on home instance and on the instance for the teamserver.&lt;br /&gt;Just never forget to assign rmi role in the user bres.&lt;br /&gt;&lt;br /&gt;Next our mission to use identity management for authorization and authentication.&lt;br /&gt;We also plan to clustered all the oc4j instance to solve load balancing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-3531947181675659152?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/3531947181675659152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=3531947181675659152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3531947181675659152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/3531947181675659152'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2008/12/configure-ilog-jrules-in-oracle.html' title='Configure Ilog Jrules In Oracle Application Server'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-8067459025561763117</id><published>2007-09-05T13:20:00.000+03:00</published><updated>2008-12-17T20:26:08.841+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MQAdaptor'/><title type='text'>using MQAdaptor in BPEL</title><content type='html'>First of all using MQAdaptor in BPEL is not so straight Forward. I will discuss here all the necessary step to deploy and run the orchestration with MQAdaptor.&lt;br /&gt;1. Must read the tutorials named MQAdaptor&lt;br /&gt;2. copy the com.ibm.mq.jar on application server form where the class loader can load all the required class&lt;br /&gt;3. add a connection-factory on the file named oc4j-ra.xml which path should be $APP_server_HOME\OracleAS_1\j2ee\home\application-deployments\default\MQSeriesAdapter\&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hB7TA2a94zk/Rt6Grn61dpI/AAAAAAAAAAs/jdATheQgYxo/s1600-h/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_hB7TA2a94zk/Rt6Grn61dpI/AAAAAAAAAAs/jdATheQgYxo/s320/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5106667111492974226" /&gt;&lt;/a&gt;&lt;br /&gt;4. edit the MQAdaptor WSDL used in the project, in my case it's named MQConsumer.WSDL&lt;br /&gt;   delete the property name SecondaryMQManager from element operation&lt;br /&gt;5. deploy and run&lt;br /&gt;6. For more debug option, enable debug level from info to debug&lt;br /&gt; manage BPEL domain-&gt;Logging-&gt;changeAll -&gt; debug&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-8067459025561763117?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/8067459025561763117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=8067459025561763117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8067459025561763117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/8067459025561763117'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2007/09/using-mqadaptor-in-bpel.html' title='using MQAdaptor in BPEL'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hB7TA2a94zk/Rt6Grn61dpI/AAAAAAAAAAs/jdATheQgYxo/s72-c/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5532809073984928150.post-6672926562579326804</id><published>2007-06-02T15:05:00.000+03:00</published><updated>2009-01-08T21:40:55.735+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MQSAgent2'/><title type='text'>Configure MQSagent2 on machine where installed MQ Server</title><content type='html'>Today's morning at last i have complete configured MQSAgent2 configuration. Seems the fact was that MSDTC on Machine where installed IBM MQ Server was not configured properly. MSDTC must given access to client machine. See the Microsoft MSDN&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa561858.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa561858.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5532809073984928150-6672926562579326804?l=frommyworkshop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frommyworkshop.blogspot.com/feeds/6672926562579326804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5532809073984928150&amp;postID=6672926562579326804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6672926562579326804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5532809073984928150/posts/default/6672926562579326804'/><link rel='alternate' type='text/html' href='http://frommyworkshop.blogspot.com/2007/06/configure-mqsagent2-on-machine-where.html' title='Configure MQSagent2 on machine where installed MQ Server'/><author><name>Shamim Ahmed Bhuiyan</name><uri>http://www.blogger.com/profile/03808724353011932377</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_hB7TA2a94zk/ShbbSOi7TrI/AAAAAAAAAPk/QRbE_Ov8M14/S220/4440_1146050217583_1417350690_30378604_7582136_n.jpg'/></author><thr:total>0</thr:total></entry></feed>
