O TDC 2014 – São Paulo será realizado de 5 a 9 de agosto e terá 36 trilhas (TV Digital, Android, Startups, Java, Arquitetura, etc) no Anhembi Morumbi e, como novidade, vários workshops na sede da Globalcode, inclusive de Raspberry PI e IoT com o Vinicius Senger.
A trilha de TV digital está bem bacana e está sendo coordenada por um grande amigo meu, o Carlos do Java Noroeste e por mim. Vamos ter palestras com aplicativos da Record, TQTVD, TV Aparecida, especialistas renomados na área de TV digital no Brasil e pela comunidade de desenvolvedores.
Para participar é só fazer a inscrição no site. Simultaneamente, vai ter um outro evento legal que é o TDC4Kids para crianças programarem com Scratch, Minecraft e IoT. Para ter uma ideia do porte do evento, essa é a lista de alguns patrocinadores: Amazon, Oracle, Stackoverflow, SAP, PayPal, Google, StackOverflow, JetBrains e Liferay.
A gente se fala lá!
]]>Eu estarei por lá, principalmente no dia 11, onde teremos uma trilha de TV Digital. Compareça!
]]>
O código do composite.xml deve ter uma parte parecida com essa:
[sourcecode language=”xml”] <component name="PrefsBPELProcess" version="2.0">
<implementation.bpel src="PrefsBPELProcess.bpel"/>
<property name="bpel.config.transaction" type="xs:string" many="false">required</property>
<property name="bpel.preference.nome" type="xs:string" many="false"
override="may">Sem Nome</property>
</component>[/sourcecode]
Crie uma aplicação SOA Suite e no composite.xml, arraste o componente Spring Context (Component Pallete) para a raia do meio.

Clique em OK. Você deverá ter um componente com um folhinha verde no meio do composite. O próximo passo é criar uma interface e uma classe para ser utilizada com o Spring Context. Clique em File, New, Java Interface e clique em OK. Dê um nome, no meu exemplo vou dar o nome de OlaSpring. Clique em OK. Insira o seguinte conteúdo:
]]>java.lang.UnsupportedOperationException: This class does not support SAAJ 1.1 at weblogic.webservice.core.soap.SOAPMessageImpl.getSOAPBody(SOAPMessageImpl.java:631) at org.gvlabs.utils.soap.SoapClient.invokeOperation(SoapClient.java:76)
Isso é porque é a implementação do SAAJ padrão do WebLogic é falha, conforme descrito nesse outro post. Como work-around segundo o artigo, seria só passar o seguinte parâmetro na inicialização do server do WebLogic:
]]>java.lang.NoSuchMethodError: org.quartz.Scheduler.getJobGroupNames()Ljava/util/List;
Isso significa que o WebLogic está utilizando uma classe com versão diferente do quartz-2.x. Se você utilizar o utilitário descrito nesse post na pasta de instalação do WebLogic com SOA Suite, irá verificar que o WebLogic utiliza outra versão do quartz:
./soa/modules/quartz-all-1.6.5.jar:org/quartz/Scheduler.class
Mesmo que você coloque o jar do quartz 2.x na pasta WEB-INF/lib o ClassLoader do WebLogic irá considerar o quartz do SOA. Para dar preferência à lib que está na WEB-INF/lib adicione a seguinte instrução no arquivos WEB-INF/weblogic.xml do seu projeto:
[sourcecode language=”xml”]<?xml version = ‘1.0’ encoding = ‘UTF-8’?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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"
xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
…
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>[/sourcecode]
Com isso a lib do quartz que está dentro da pasta WEB-INF lib será considerada pelo ClassLoader para essa aplicação ao invés da que está no servidor.
]]>É só colocar a lib no classpath e utilizá-la. Você pode fazer o download do fonte ou dessa lib no Google Code, o código fonte está disponível também no GitHub. Para utilizá-la é muito simples. Você pode inclusive fazer tudo em uma linha, dessa forma:
[sourcecode language=”java”]
String response = new SoapClient("http://endpointhost.com/endpoint").invokeOperation("operation", "<payload>something</payload");
[/sourcecode]
Ou se você quiser algo mais organizado, segue um exemplo de um serviço de conversão de peso:
[sourcecode language=”java”]
String endpoint = "http://www.webservicex.net/ConvertWeight.asmx";
String operation = "http://www.webserviceX.NET/ConvertWeight";
String input = "<web:ConvertWeight xmlns:web=\"http://www.webserviceX.NET/\">"
+ "<web:Weight>7</web:Weight>"
+ "<web:FromUnit>Grains</web:FromUnit>"
+ "<web:ToUnit>Grams</web:ToUnit>" + "</web:ConvertWeight>";
SoapClient soapClient = new SoapClient(endpoint);
String response = response = soapClient.invokeOperation(operation, input);
[/sourcecode]
O response terá o seguinte conteúdo:
[sourcecode language=”xml”]
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ConvertWeightResponse xmlns="http://www.webserviceX.NET/">
<ConvertWeightResult>0.4536</ConvertWeightResult>
</ConvertWeightResponse>
</soap:Body>
</soap:Envelope>
[/sourcecode]
Agora vou usar nos meus testes de serviços.
]]>O primeiro passo é criar um projeto SOA e arrastar o File Adapter para o composite.xml. Na tela de configuração do File Adapter, clique em Next. Dê um nome para o File Adapter e clique em Next. Na próxima tela, deixe marcado para definir o WSDL posteriormente e clique em Next. Escolha a opção Read file, deixa as opções padrões e clique em Next. Especifique os diretório de leitura e marque as opções: “Process files recursively”, “Archive processed files (especifique um diretório)” e “Delete files after successful retrieval”.


Agora ao executar o processo BPEL, você terá como buscar pelo título no Enterprise Manager:


Clique em Next. No nosso exemplo, vamos utilizar a opção Fixed Length que é um formato bastante utilizado para troca de informações entre empresas bancárias, mas sinta-se livre para aventurar em outros formatos, como o Delimited, Complex Type, DTD to XSD ou Cobol Copybook. Clique em Next. Na próxima tela, escolha um arquivo que tenha um exemplo de saída desejada. Para facilitar você pode utilizar o meu arquivo. Selecione o Character set como UTF-8 que é o Character set do meu arquivo e clique em Next.
]]>