![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCXC7nHjx6_LvZhajDXieC7FHEkH28Spxwc5MiwfitvKNKTQCR0HDtkcj7YEtOa-1Xoi8ti-Turz8TD43Cb82PfpM3sbykU5pDqOQTiMa5xC9gpteioWBkWusNB57buZzHAKdDLx1s53sS/s1600/jython.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA3QcGajRtJv_zRGMeV56mP_nBKCw1B5yWySvLW5TAy8VizxOJzIurwhrmjTKF9JYiVi96T4lk1aztj4-39pc20O8MxkDYUqKXI6Y-VHCfgqCNCScX-RAuJWsTcEWmMihZgknd5-Q-kYmP/s1600/WebLogic.gif)
Jak už jsem psal v minlém zápisku o mazání dat z MDS, WLST je v Jythonu napsaný nástroj pro správu WebLogic serveru, který funguje ve dvou režimech - offline a online. V online režimu se WLST připojuje k běžícímu WebLogicu a operuje nad stromem jeho MBeans. Pro správu JMS zdrojů je potřeba používat WLST online.
Distributed Queue
Věc, kterou jsem potřeboval vyřešit, bylo vytvoření distribuované fronty ve WebLogicovém clusteru. Cluster byl velmi jednoduchý - admin server a dva nody (managed servery). Vzhledem ke clusteru bylo potřeba vytvořit logickou frontu, která by měla stejný JNDI (jako na vývojovém prostředí s jedním nodem) a zastřešovala by fronty na jednotlivých nodech. Na WebLogicu je toto řešeno distribuovanými destinacemi (queue/topic). Pokud si to neumíte představit, distribuovaná fronta funguje v podstatě jako klasický load balancer.![]() |
Distribuovaná fronta (WebLogic Administration Console) |
![]() |
Členové distribuované destinace (WebLogic Administration Console) |
WLST a JMS
Použití WLST je po krátké praxi poměrně intuitivní a jednoduché. Zpočátku může dělat problém se orientovat ve struktuře (stromech) MBean. V tomto může napomoci celkem slušná dokumentace: navigace MBeans, Javadoc a MBean reference. Pak už stačí jenom lehké základy Pythonu.V následujícím skriptu je několik věcí, které můžou trochu ztížit čtení/pochopení skriptu, takže ještě kratičká legenda:
- Target. Cílové umístění zdroje, nebo aplikace, např. server, cluster, JMS server ad. V případě deploymentu (aplikace) tím říkám, na které nody/clustery chci aplikaci nasadit.
- SubDeployment. Mechanismus pro seskupení a umístění JMS zdrojů. V rámci subdeploymentu říkám, na které cíle (targets) chci dané zdroje nasadit. Může to být libovolná kombinace, nebo podmnožina.
- cmo. Proměnná, která reprezentuje "aktuálně spravovaný objekt" (current management object). Je to vlastně MBeana, která má momentálně "focus". Tak, jak se prochází stromem MBean, tak se tato proměnná automaticky mění.
# properties user = 'weblogic' password = '<password>' server = 't3://<host>:7001' subDeploymentName = 'EVMJMSServers' queuePath = 'JMSResource/SOAJMSModule/UniformDistributedQueues/' queueName = 'EVM_DLQ' jndiPrefix = 'jms/b2b/' loadBalancing = 'Round-Robin' # connection connect(user, password, server) # edit mode edit() startEdit() # get targets s1 = getMBean('/JMSServers/SOAJMSServer_auto_1') s2 = getMBean('/JMSServers/SOAJMSServer_auto_2') # # create a SubDeployment # cd('/JMSSystemResources/SOAJMSModule') # delete an old SubDeployment if cmo.lookupSubDeployment(subDeploymentName): delete(subDeploymentName, 'SubDeployment') # create a new SubDeployment cmo.createSubDeployment(subDeploymentName) subDeployment = cmo.lookupSubDeployment(subDeploymentName) subDeployment.setTargets([s1, s2]) # # create a ldistributed queue # resource = cmo.getJMSResource() # delete an old queue ref = getMBean(queuePath + queueName) if ref != None: cd('JMSResource/SOAJMSModule') delete(queueName, 'UniformDistributedQueue') # create a new queue resource.createUniformDistributedQueue(queueName) distributedQueue = resource.lookupUniformDistributedQueue(queueName) distributedQueue.setJNDIName(jndiPrefix + queueName) distributedQueue.setLoadBalancingPolicy(loadBalancing) distributedQueue.setSubDeploymentName(subDeploymentName) # save and finish save() activate() disconnect() exit()
Žádné komentáře:
Okomentovat
Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.