quarta-feira, 23 de julho de 2014

Oracle SOA Suite Templates


No Oracle SOA Suite 12c foi incluído novas funcionalidades para possibilitar o compartilhamento de código e uma delas é a criação de template. Podem ser criados os seguintes templates:
  • SOA project
  • Service component
  • Custom BPEL scope activity 

Neste post irei demonstrar como criar e utilizar os templates.

Criando Projeto para Template


1-) Cria um novo projeto SOA (“New → Project → SOA Project”) e nomeie ele como “TemplateProject”



2-) Crie um BPEL (“Insert → BEPEL Process”) e nomeie ele como “TemplateBPELProcess”



3-) Abra o BPEL e insira um scope, e nomeie ele como “TemplateScope”, e insira a atividade “Empty”




Criando Template “SOA Project”


1-) Clique com o botão direito do projeto e selecione “Create SOA Template”



2-) Clique em “Next”


3-) Clique em “Finish”



4-) Clique em “OK”


Utilizando Template “SOA Project”


1-) Cria um novo projeto SOA (“New → Project → SOA Project”)

2-) Nomeie o projeto como “TestTemplateSOAProject” e clique em “Next”



3-) Selecione a opção “SOA Template”, selecione “TemplateProject” e clique em “Finish”


O projeto será criado com todos os artefatos que existem no projeto de template.



Criando Template “Service component ”


1-) Volte ao composite do projeto “TemplateProject”



2-) Clique com o botão direito encima do BPEL “TemplateBPELProcess” e escolha a opção “Create Component Template”



3-) Clique em “Next”


4-) Clique em “Finish”


5-) Clique em “OK”


Utilizando Template “Service component”


1-) Cria um novo projeto SOA (“New → Project → SOA Project”) e nomeie o projeto como “BPELProcessTemplateProject”



2-) Na aba “Components”, altere para “SOA Template”



3-) Arraste o “TemplateBPELProcess” para a sessão “Components” do composite



4-) Em “Main Component Name” altere para “TestBPELProcess”, e clique em “Finish”



O BPEL Foi criado conforme o template.


Criando Template “Custom BPEL scope activity”


1-) Volte ao composite do projeto “TemplateProject” e abra o BPEL “TemplateBPELProcess”

2-) No scope, clique no botão “Create Custom Activity Template”


3-) Clique em “Next”



4-) Clique em “Finish”


5-) Clique em “OK”



Utilizando Template “Custom BPEL scope activity”


1-) Cria um novo projeto SOA (“New → Project → SOA Project”) e nomeie o projeto como “ScopeActivityTemplateProject”


2-) Crie um BPEL (“Insert → BEPEL Process”) e nomeie ele com “ScopeActivityBPELProcess”



3-) Abra o BPEL, e arraste o “TemplateScope” (“Components → Custom Activity Templates”) para o BPEL.




4-) Clique em “Finish”


O scope foi criado conforme o template



Configurando templates no JDeveloper


O projeto de template não precisa estar necessariamente no mesmo application. Para referenciar o template basta fazer os seguintes passos:

1-) Vá em “Tools → Preferences”



2-) Vá em “SOA → Templates”


3-) Clique no botão “+” , selecione o diretório que possui os templates e clique em “Select”



Com isso os templates estão disponíveis para serem utilizados.

segunda-feira, 21 de julho de 2014

Como habilitar log SQL statement no DB Adapter

As vezes temos problemas com a execução de um DB Adapter, e logar os SQL statements e os binds é muito útil nesses momentos.
Irei demonstrar como configurar no SOA Suite para logar o SQL Statement e os binds.

Passos:

1-) Entre em seu console (http://<IP>:<PORT>/console) e navegue até a aba "Debug". (Environment -> Servers -> AdminServer -> Debug)



2-) Vá em "weblogic -> jdbc -> sql" selecione a opção "DebugJDBCSQL" e clique em "Enable"



3-) Entre o enterprise manager (http://<IP>:<PORT>/em), clique com o direito em soa-infra e selecione a opção  "Logs -> Log Configuration".



4-) Vá em "oracle.soa -> oracle.soa.adapter" e selecione no combo box  opção "Trace:1 (FINE)"


Pronto, o seu ambiente está configurado para logar os SQL statement e os binds, verifique no arquivo de log e verá algo parecido como exemplo abaixo.

Em  <DOMAIN_HOME>/servers/AdminServer/logs/AdminServer.log:

-->SQL Statement
####<07/07/2014 16h54min56s BRT> <Debug> <JDBCSQL> <localhost> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-050CCC6E57BB175B1571> <11d1def534ea1be0:3847d2ea:1471260b38f:-8000-0000000000000145> <1404762896694> <BEA-000000> <[[weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection-HR-4, oracle.jdbc.driver.LogicalConnection@fb0e8a]] prepareStatement(SELECT DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID FROM DEPARTMENTS WHERE (DEPARTMENT_ID = ?))>
.
.
.
-->Bind parameter
####<07/07/2014 16h54min56s BRT> <Debug> <JDBCSQL> <localhost> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-050CCC6E57BB175B1571> <11d1def534ea1be0:3847d2ea:1471260b38f:-8000-0000000000000145> <1404762896694> <BEA-000000> <[weblogic.jdbc.wrapper.PreparedStatement_oracle_jdbc_driver_OraclePreparedStatementWrapper@3b48] setInt(1, 10)>
.
.
.
--> execução
####<07/07/2014 16h54min56s BRT> <Debug> <JDBCSQL> <localhost> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-050CCC6E57BB175B1571> <11d1def534ea1be0:3847d2ea:1471260b38f:-8000-0000000000000145> <1404762896694> <BEA-000000> <[weblogic.jdbc.wrapper.PreparedStatement_oracle_jdbc_driver_OraclePreparedStatementWrapper@3b48] executeQuery()>
.
.
.
--> tratando retorno
####<07/07/2014 16h54min56s BRT> <Debug> <JDBCSQL> <localhost> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-050CCC6E57BB175B1571> <11d1def534ea1be0:3847d2ea:1471260b38f:-8000-0000000000000145> <1404762896698> <BEA-000000> <[weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl@3b49] getString(2)>
####<07/07/2014 16h54min56s BRT> <Debug> <JDBCSQL> <localhost> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-050CCC6E57BB175B1571> <11d1def534ea1be0:3847d2ea:1471260b38f:-8000-0000000000000145> <1404762896698> <BEA-000000> <[weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl@3b49] getString returns Administration


Em <DOMAIN_HOME>/servers/AdminServer/logs/AdminServer-diagnostic.log:

[2014-07-09T12:31:49.431-03:00] [AdminServer] [TRACE] [] [oracle.soa.adapter] [tid: [ACTIVE].ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:-559a5b:1471b88e265:-8000-000000000000163a,0:2] [SRC_CLASS: oracle.integration.platform.blocks.adapter.fw.log.LogManagerImpl] [WEBSERVICE_PORT.name: DepartmentPort] [APP: soa-infra] [composite_name: HRProject] [component_name: HRMediator] [component_instance_id: 24B6A1E0077E11E4BF9F99C63AA1D379] [J2EE_MODULE.name: fabric] [SRC_METHOD: log] [WEBSERVICE.name: HRMediator_ep] [J2EE_APP.name: soa-infra] [composite_instance_id: 1040020] Database Adapter  HRProject:SelectDepartmentById [ SelectDepartmentById_ptt::SelectDepartmentByIdSelect(SelectDepartmentByIdSelect_inputParameters,DepartmentsCollection) ]  <org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor basicExecuteCall> SELECT DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID FROM DEPARTMENTS WHERE (DEPARTMENT_ID = ?)[[
    bind => [10]


]]

quinta-feira, 17 de julho de 2014

Criando e testando Proxy Service no JDeveloper 12c

Neste post irei demonstrar como criar um application do tipo "Service Bus Application" com um "Service Bus Project", configurar um deployment profile e rodar o um proxy pelo EM.

Criando o application e project


1-) Clique em “New Application...”



2-) Escolha a opção “Service Bus Application with Service Bus Project” e clique em “OK”



3-) Clique em “Next”



4-) Altere o campo “Project Name” para “HelloWorldProject” e clique em “Finish”



Criando Proxy e Pipeline


1-) Clique com o botão direito vá em “New → SOA WSDL Document”



2-) Preencha os campos conforme abaixo:

    File Name: helloworld.wsdl
    Interface Type: “Synchronous Interface”
    Input:
    Message Part Name: request


    Element or Type: string

  
    Output:
    Message Part Name: reply



    Element or Type: string



Clique em “OK”



3-) Abra o arquivo “HelloWorldProject”, na sessão “Pipelines/Split Joins”, clique com o direito “Insert → Pipeline”


4-)  Preencha o campo “Service Name” com “HelloWorldPipeline” e clique em “Next”


5-) Em “Service Type:” selecione “WSDL”, clique em “Browse WSDLs”



Selecione o arquivo “helloworld.wsdl” e clique em “OK”


Clique em “Finish”



Neste momento temos o Proxy e o Pipeline criado, vamos editar o Pipeline para concatenar o que vem na request com a string “Hello World” e colocar como retorno do serviço

Editando Pipeline


1-) Abra o arquivo HelloWorld.pipeline


2-) Arraste o node “Pipeline Pair” que se encontra em “Components” sessão “Nodes”






3-) Observe que já foi criado automáticamente os stages, em response pipeline, arraste o componente “Replace” que se encontra na sessão “Message Processing” para o stage



4-) Na aba “Replace-Properties”, preencha com as seguintes informações


    • Location: body
    • Xpath: .
    • Value: clique no botão de função e na sessão “Expression” preencha com: <hel:string>{concat('Hello World ', $body/hel:string)}</hel:string>

    • Replace Option: selecione “Replace node contents”


Implantando projeto HelloWorldProject


Para fazer o deploy do projeto precisamos criar o deployment profile

1-) Clique com o botão direito e selecione “Deploy → New Deployment Profile”


2-) Na tela “Create Deployment Profile” preencha os campos com as seguintes informações:
    • Profile Type: selecione “Service Bus Project”
    • Deployment Profile Name: HelloWorldProjectProfile

Clique em “OK”

Rode o IntegratedWebLogicServer (Veja o post "Integrated Weblogic Server no JDeveloper 12c"), quando o server estiver em “running” execute os passos abaixo para o deploy



1-) Clique com o botão direito encima do projeto, e selecione "Deploy →  HelloWorldProjectProfile"



2-) Clique em "Next"



3-) Clique em "Next"


4-) Clique em "Finish"


Observe o log de execução do deploy de estiver tudo ok, podemos rodar o proxy.



Testando via EM


1-) Vá em http://localhost:7101/em, em "Target Navigation", navegue até o projeto HelloWorldProject (SOA → service-bus → HelloWorldProject) e clique nele.



2-) Clique na aba "operation"


3-) Clique em "HelloWorldPipelineProxyService", e depois clique em "Test"



4-) Preencha o campo string com seu nome, e clique em "Execute"



5-) Verifique o resultado



O mesmo teste pode ser feito pelo servicebus, acesse http://localhost:7101/servicebus, selecione o proxy e clique em "Launch Test Console"