Showing posts with label jms. Show all posts
Showing posts with label jms. Show all posts

Thursday, June 26, 2014

WEBLOGIC JMS: "The persistent file store", "cannot open file"

It is well known that the way to have a persistence store on you JMS Configuration is a good habit on your development mainly if we are talking about of Cluster Enviroment, having a configuration with dat file sored on a filesystem is done by doing asignation on your JMS Server, but what-if something happen with DAT file, perhaps you could even imagine a situation can produce this event, for example a bad configuration throught a unknown familiar user on your server, a kind of application trying to access to DAT file, there some situations could happend, on my experience i have list some specific expection related above:

  • The persistence store ... Cannot open file ...
  • Cannot find ... DAT File
  • GXA... read exception

If you are on this kind of situation my advice to you should please make a backup of your persistence store and follow the next steps:

1. BackUp Persistence Store  on a new folder under your filesystem
2. Delete Components on your weblogic likes: Module JMS, Server JMS and Persistence Store.
3. Shutdown all servers involver, including adminserver
4. Start All Servers, please be sure that no one could have any failed exception related.
5. Make your JMS Configuration Again.
6. Most common problems may be resolve by doing this, if there is another problem by creating a JMS Server please try to change the type of writing to save with cache and File locked to false, this is because the time of saving to DAT probably do a mess with another process.

Please take care about situation likes because someone or something on your operating system try to do a connection  with your DAT file.

Best Regards,

Monday, June 9, 2014

Back-Up FileStore of a JMS Weblogic Configuration

Main reasons you could be benefits of doing this, are a backup, delete, compress or replace .dat file.

  • Shutdown servers, cluster, nodeManager  or coherence (cluster or server) who is occupied the JMS Configuration.

  • Having access as a root or weblogic user, you  should execute the following script  shell:

  1. setWLSEnv.sh: Located on  /opt/weblogic/XXXX/wlserver_10.3/server/bin or wherever is installed weblogic, maybe /root/Oracle/wlserver_10.3/server/bin is another possible location.
  2. wlst.sh: Located on  /opt/weblogic/XXXX/wlserver_10.3/common/bin or wherever is installed weblogic, maybe /root/Oracle/wlserver_10.3/common/bin is another possible location.
  • Now, what we have just done?, well setWLSEnv.sh configure on your enviroment several jar  that are part of the neccesary running to calling method or classes for doing changes in weblogic without a web console, at the last one is a script which is necessary for doing python/ironpython o command execution,

  • After running wlst.sh, you will have a prompt just like this:  wls:/offline> with the weblogic password, user and ip/port the possibilites are unlimted to whatever your imagination could do.

  1. Execute: 
wls:/offline> compactstore('<LOCATION_FILESTOREORIGINAL>','<LOCATION_COPYONFAIL>')
  •  Depends on your dat size is the time that you will be waiting, may I say that for a 5 files amout of 2GB takes me about 1 hour, please waiting after the execution is complete.

  1. In your LOCATION_FILESTOREORIGINAL(ex:/root/jms/filestore) you must a found a compressend file, in my case the size reduce about a 20% per file. 
  2. In your LOCATION_COPYONFAIL(ex:/root/jms/backup), you must found the original file with the same size of the original file.

Now, what we have in mind?, perhaps you could limite the size of  your persistence store in the way that you could make a backup for auditing process as I said this could be benifit for each part of development.

Best regards,



Monday, September 30, 2013

How I do implement Request/Response pattern using SpringFramework and Weblogic?

Spring Framework has a lot of modules that could be implemented on several projects, On common questions in any projects is how to used it, The first factor that I could see is to Application Server well know, obviously your web application has to be deployed on an Web Application Server, we have to check the version and supporting jars to run your application, If your Application Server run up 1.5 JEE, a good choice will be Spring Framework, This small article try to getting started to first used spring jms module.

First you have to configure your Application Context:

After configurate your xml file you will have to inject a browser of Message Queue:


Now you can Inject the Request/Response in any Service, this had getting easier a MQ Implementation.


Best Regards,

Monday, July 8, 2013

Create a JMS Destination Key on Weblogic 11g using WSLT

UPDATE: 13/04/2014
The article had been published on CodeProject.

http://www.codeproject.com/Tips/748377/Create-a-JMS-Configuration-on-Oracle-Weblogic-g-us
-------------------------------------------------------------------------------------------

There is another method to create a Server Configuration on Weblogic if you are not using the console, if you want to execute a script with all of your configuration you must know about WSLT.

This model solve problems like deployment on others enviroments like Quality Assurance and Production were you should dont have any permision to access to this console, only the deployer will run the script and install any executable on the server. You should follow the next steps:

1. First go to you Weblogic Home, for example the location of my weblogic installation is:


1:  [root@USER25 bin]# cd /root/Oracle/Middleware/11.1.2.4.0/   

2. Go to the next folder...


1:  [root@USER25 bin]# cd /root/Oracle/Middleware/11.1.2.4.0/wlserver_10.3/server/bin  

3. Open a console and keep in mind you should have running weblogic and the execute:


1:  [root@USER25 bin]# ./setWLSEnv.sh  

4. Running the above command you will have the opportunity to run script on Python and IronPython on your weblogic running, I will show you an script example runs several tasks to create a JMS Server, JMS Module, Queue, Dead Letter Queue and DESTINATION QUEUE that is the object we need for this tutorial, so this the code...

The segment of code we  carry on the next ...


1:    def createDestinationKey(dkname):  
2:        print "createDestinationKey() START"    
3:        cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName)  
4:        dk1 = create(dkname, "DestinationKey")  
5:        dk1.setProperty("JMSPriority")  
6:        dk1.setKeyType("String")  
7:        dk1.setSortOrder("Descending")  
8:        print "createDestinationKey() END"  

Here we define a part of the XML that is deployed on the server, we pass the property, keytype and sortorder that should be published on Weblogic, this procedure can be executed as a transaction as python script. 


1:            ...  
2:          cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName)                    
3:            cd('/JMSSystemResources/'+moduleName+'/JMSResource/'+moduleName+'/Queues/'+qname)  
4:            set('DestinationKeys',jarray.array([String(dkName)],String))  
5:          ...  


If you follow the script you will get a declaration of an array on XML, that because if you check Weblogic documentation a Destination Key is an Array of String, so in Python you have to declare your DeclarationKeys as String[], keep in mind that note.
  
5. The comand we need to execute on terminal is:


1:  [root@USER25 bin]# java weblogic.WLST createJmsServer.py  

6. Finally we will see the trace of execution, and veryfing with the Weblogic Console all the script will be create all configuration declarated on python file, this is so much powerfull of course you can create a JNDI or any task that we do over console.

UPDATE 29/05/2016
You could found script uploaded to github on the next link:
https://github.com/osanchezh/weblogicjmsclustered-module  

Best Regards,