Monday, August 17, 2015

Oracle SOA Suite için Karma Uygulama (=Composite Application) Yayınlama (=Deployment) Yöntemleri

İşletmelerde temel olarak iki tür sistem bulunur: İş Sistemleri (=Business Systems) ve Bilişim Sistemleri (=IT Systems). İş sistemleri, genel olarak, işletmeye para kazandıracak ya da işletmenin hedeflerine ulaşmasını sağlayacak iş süreçlerinden oluşur. Bilişim sistemleri yokken de iş süreçleri  vardı. Bilişim sistemlerinin amacı, iş sistemlerinden topladığı verileri alıp işlemek ve iş süreçlerinin daha verimli çalışmasını sağlayarak hizmet kalitesini iyileştirmek, işletme kaynaklarının daha verimli kullanılmasını sağlamak, böylelikle rekabet etme kapasitesini arttırmak, işleri otomatikleşmesini sağlayacak şekilde desteklemektir. Bilişim sistemleri ise yazılım ve donanımdan oluşur. Bugün bilişim sistemlerinin oluşturulmasında yazılım çok daha önemli bir yer tutar. İşletme sahibi şirketin karlılığını artırmak, rekabet etme kapasitesini arttırmak için iş süreçlerini değiştirir: yeni iş süreçleri tanımlar, mevcut iş süreçlerinin akışında değişiklikler yapar, iş süreçlerini birleştirir ya da parçalar. İş süreçlerini destekleyen bilişim sistemlerinin de iş süreçlerindeki bu değişiklikleri kısa sürede yakalaması istenir. Ama her zaman iş süreçleri ile bilişim sistemleri arasında bir Hizalama Problemi (=Alignment Problem) yaşanır. Eğer yazılım sistemleri, iş süreçlerindeki değişikliği yakından takip ediyor ise yazılım geliştirme sürecinin çevik olduğundan söz edilir. Servis Odaklı Mimarinin (SOM) amacı Hizalama Problemini çözmektir. Çevikliği ise yazılımı tekrar kullanılabilir, biri birileri ile gevşek bağlı, tekrar kullanılabilir, açık standartlar üzerine kurulmuş, tek başına bir iş problemini çözen ve katma değer yaratan servislerden oluşturarak sağlar. Buradaki servisler, çoğu zaman XML/SOAP web servisleri ile gerçeklense de, SOM'un servisleri SOAP web servisini ifade etmez. SOM bir mimari kalıbı ifade eder. Diğer mimari kalıplarda olduğu gibi SOM geliştirilecek sisteme uzaktan bakıldığındaki kaba görüntüsünü verir ve daha çok işlevsel olmayan isterleri (=Non-Functional Requirement) karşılamayı hedefler. Son dönemde servisleri RESTful web servisleri kullanarak da geliştiriyoruz. 
SOM mimarisinde uygulama geliştirmek için Oracle firmasının Oracle SOA Suite ürününü kullanabilirsiniz. Bu platform  üzerinde geliştirilen uygulamalara Karma Uygulama (=Composite Applications) adını veriyoruz. Bu tür uygulamalar geliştirmek için Oracle firmasının ücretsiz olarak dağıttığı JDeveloper IDE'sini kullanmalısınız. Ancak Oracle web sitesinden indirdiğiniz JDeveloper tek başına yeterli olmaz, ayrıca SOA eklentisini de kurmalısınız. JDeveloper kullanarak geliştirdiğiniz uygulamaları yayınlamak için farklı yöntemler vardır. Bu yazıda bu yöntemleri ele alacağız:
1. JDeveloper Kullanarak Yayınlamak
2. Enterprise Manager kullanarak Yayınlamak
3. Ant betiği kullanarak Yayınlamak
4. WLST (Web Logic Scripting Tool) kullanarak Yayınlamak

1. JDeveloper Kullanarak Yayınlamak
Geliştirici için en basit yöntem uygulamayı JDeveloper üzerinde yayınlamaktır:
1. Adım:
2. Adım:
3. Adım:
4. Adım:
5. Adım:
Deployment sekmesinde aşağıdaki log kaydını görmelisiniz:
[10:56:42 PM] ----  Deployment started.  ----
[10:56:42 PM] Target platform is  (Weblogic 10.3).
[10:56:42 PM] Running dependency analysis...
[10:56:42 PM] Building...
[10:56:49 PM] Deploying profile...
[10:56:49 PM] Updating revision id for the SOA Project 'HelloWorld.jpr' to '1.0'..
[10:56:49 PM] Wrote Archive Module to D:\labs\mywork\Basics\HelloWorld\deploy\sca_HelloWorld_rev1.0.jar
[10:56:49 PM] Deploying sca_HelloWorld_rev1.0.jar to partition "default" on server soa_server1 [192.168.211.135:8001] 
[10:56:49 PM] Processing sar=/D:/labs/mywork/Basics/HelloWorld/deploy/sca_HelloWorld_rev1.0.jar
[10:56:49 PM] Adding sar file - D:\labs\mywork\Basics\HelloWorld\deploy\sca_HelloWorld_rev1.0.jar
[10:56:49 PM] Preparing to send HTTP request for deployment
[10:56:49 PM] Creating HTTP connection to host:192.168.211.135, port:8001
[10:56:49 PM] Sending internal deployment descriptor
[10:56:49 PM] Sending archive - sca_HelloWorld_rev1.0.jar
[10:56:50 PM] Received HTTP response from the server, response code=200
[10:56:50 PM] Successfully deployed archive sca_HelloWorld_rev1.0.jar to partition "default" on server soa_server1 [192.168.211.135:8001]  
[10:56:50 PM] Elapsed time for deployment:  8 seconds
[10:56:50 PM] ----  Deployment finished.  ----

2. Enterprise Manager kullanarak Yayınlamak
1. Adım:
2. Adım:
3. Adım:
4. Adım:
Uygulama başarılı bir şekilde yayınlandığında, default bölmesinde uygulama listedeki yerini alacaktır:

3Ant betiği kullanarak Yayınlamak
Windows platformu için temel olarak ant komutunu kullanan aşağıdaki gibi bir betik yazıyoruz:
deploy.cmd:
@echo off
setlocal
set ANT_HOME=D:\Oracle\fmw\11.1.1.3\modules\org.apache.ant_1.7.1
path %ANT_HOME%\bin;%PATH%

set SOA_HOME=D:\Oracle\fmw\11.1.1.3\Oracle_SOA1
set SOA_BIN=%SOA_HOME%\bin

set SAR_FILE=%1
set CONFIG_PLAN=%2
set PARTITION=%3
if "%SAR_FILE%"=="" goto usage
if NOT "%CONFIG_PLAN%"=="" set CONFIG_PLAN=-Dconfigplan=%CONFIG_PLAN%

if "%PARTITION%"=="" set PARTITION=default
@echo on
ant -f %SOA_BIN%\ant-sca-deploy.xml -DserverURL=http://localhost:8001 -DsarLocation=%SAR_FILE% -Doverwrite=true -Duser=weblogic -Dpassword=welcome1 -DforceDefault=true %CONFIG_PLAN% -Dpartition=%PARTITION%

@echo off
goto end

:usage:
echo To deploy a composite application use the following syntax:
echo.
echo   Usage: deploy[.cmd] sar-file-name [config-plan] [partition]
echo.
echo   Revision is derived from the SAR file name. The sar-file-name must be provided.
echo   The config-plan is the XML file name for the configuration plan (if any).
echo   The partition is set to 'default' unless specified as the third parameter.
echo.
:end

endlocal

Daha sonra bu betiği kullanarak, uygulamayı aşağıdaki gibi yayınlıyoruz:
D:\tmp>deploy sca_HelloWorld_rev1.0.jar

D:\tmp>ant -f D:\Oracle\fmw\11.1.1.3\Oracle_SOA1\bin\ant-sca-deploy.xml -Dserver
URL=http://localhost:8001 -DsarLocation=sca_HelloWorld_rev1.0.jar -Doverwrite=tr
ue -Duser=weblogic -Dpassword=welcome1 -DforceDefault=true  -Dpartition=default

Buildfile: D:\Oracle\fmw\11.1.1.3\Oracle_SOA1\bin\ant-sca-deploy.xml
     [echo] oracle.home = D:\Oracle\fmw\11.1.1.3\Oracle_SOA1\bin/..

deploy:
    [input] skipping input as property serverURL has already been set.
    [input] skipping input as property sarLocation has already been set.
[deployComposite] setting user/password..., user=weblogic
[deployComposite] Processing sar=sca_HelloWorld_rev1.0.jar
[deployComposite] Adding sar file - D:\tmp\sca_HelloWorld_rev1.0.jar
[deployComposite] Creating HTTP connection to host:localhost, port:8001
[deployComposite] Received HTTP response from the server, response code=200
[deployComposite] ---->Deploying composite success.

BUILD SUCCESSFUL

Total time: 1 second

4WLST (Web Logic Scripting Tool) kullanarak Yayınlamak
Weblogic uygulama sunucusunda için işleri otomatikleştirmek için WLST'den yararlanıyoruz. Oracle SOA Suite kurulu bir makinada, karma uygulama ile ilgili işlemleri yapmamızı sağlayacak hazır Python fonksiyonları yer alır. Bu Python çağrılarının listesine ve açıklamalarına bu bağlantıdan ulaşabilirsiniz. Aşağıda bu çağrılardan bazılarının kullanıldığı bir senaryo yer alıyor:
D:\>wlst
Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

wls:/offline> connect('weblogic','welcome1', 't3://localhost:8001')
Connecting to t3://localhost:8001 with userid weblogic ...
Successfully connected to managed Server 'soa_server1' that belongs to domain 'soa_domain'.

Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or Admin port should be used instead.

wls:/soa_domain/serverConfig> sca_listDeployedComposites('localhost','8001','weblogic','welcome1');
host = localhost
port = 8001
user = weblogic
Connecting to: service:jmx:t3://localhost:8001/jndi/weblogic.management.mbeanservers.runtime

Following 1 composites are currently deployed to the platform:

1. HelloWorld[1.0], partition=default, mode=active, state=on, isDefault=true, deployedTime=2015-08-17T16:04:23.078+03:00

wls:/soa_domain/serverConfig> sca_undeployComposite('http://localhost:8001','HelloWorld','1.0',partition='default')
serverURL = http://localhost:8001
user = None
partition = default
compositeName = HelloWorld
revision = 1.0
timeout= -1
compositeDN = default/HelloWorld!1.0
Creating HTTP connection to host:localhost, port:8001
Received HTTP response from the server, response code=200
---->Undeploying composite (default/HelloWorld!1.0) success.
wls:/soa_domain/serverConfig> sca_deployComposite('http://localhost:8001','d:/tmp/sca_HelloWorld_rev1.0.jar')
serverURL = http://localhost:8001
sarLocation = d:/tmp/sca_HelloWorld_rev1.0.jar
partition = default
overwrite = 0
user = None
forceDefault = 1
configplan = None
timeout = -1
Processing sar=d:\tmp\sca_HelloWorld_rev1.0.jar
Adding sar file - d:\tmp\sca_HelloWorld_rev1.0.jar
Creating HTTP connection to host:localhost, port:8001
Received HTTP response from the server, response code=200
---->Deploying composite success.
wls:/soa_domain/serverConfig>