Tutoriais sobre Serviços Web e WS-BPEL
08/março/2010 - SOA
Olá,
Estou escrevendo este post é para divulgar dois excelentes tutoriais escritos por Fabrício Rocha como resultado de um trabalho que ele faz na Universidade de São Paulo e que com certeza vão ajudar muita gente.
Este tutorial contempla os conceitos essênciais para entendimento dos serviços web como o XML, WSDL, UDDI e SOAP e também como eles se encaixam na Arquitetura Orientada a Serviços (SOA).
- BPEL – Business Process Execution Language Tutorial: Implementando um Processo de Negócio com BPEL –

Tratando com profundidade o padrão WS-BPEL, este tutorial apresenta os principais componentes dessa linguagem baseada em XML e um exemplo prático de implementação de um processo de negócio com as ferramentas da Oracle e da Microsoft.
Até mais,
Roberto
Simplificando cálculos com datas com Joda Time – Java
21/fevereiro/2010 - Java
Olá!
Quem precisou fazer contas com java.util.Date ou java.util.Calendar saber o trabalho que dá e como a API nativa do Java (até o Java 6 pelo menos) não ajuda muito a fazer coisas simples como adicionar horas na data atual. A API Joda Time veio para simplificar o trabalho com datas no Java, tanto é que muitas idéias dessa API tem grande chance de estarem no Java 7 através da JSR-310.
O que eu mais gostei do Joda Time são os método toString() que aceitam como parâmetro o padrão de formatação (não preciso criar mais SimpleDateFormat para formatar os benditos java.util.Date!!! parecido com o do C#), inicialização do objeto com String e o uso de interfaces fluentes.
Abaixo exemplos de uso.
- Inicialização do objeto com String
DateTime date = new DateTime("2010-2-21T20:19:45.000-03:00");
System.out.println(date.toString("dd/MM/yyyy HH:mm:ss"));
- Soma de dias escolhendo o ano
LocalDate localDate = new LocalDate();
LocalDate moreDays = localDate.withYear(2008).plusDays(8);
System.out.println(moreDays.toString("dd/MM/yyyy"));
// 29/02/2008
- Dia da semana por extenso
DateTime dateTime = new DateTime(); String dayOfMonth = dateTime.dayOfWeek().getAsText(); System.out.println(dayOfMonth); // Domingo
- Quantidade de dias entre um dia e outro
DateTime inicio = new DateTime(2010, 2, 21, 0, 0, 0, 0); DateTime fim = new DateTime(2010, 2, 22, 13, 30, 0, 0); System.out.println(Days.daysBetween(inicio, fim).getDays()); // 1 System.out.println(Hours.hoursBetween(inicio, fim).getHours()); // 37 System.out.println(Minutes.minutesBetween(inicio, fim).getMinutes()); // 2250
- Diferença de horas entre fusos horários.
DateTime agora = new DateTime();
DateTime saoPaulo =
agora.withZoneRetainFields(DateTimeZone.forID("America/Sao_Paulo"));
DateTime rioBranco =
agora.withZoneRetainFields(DateTimeZone.forID("America/Rio_Branco"));
DateTime japao =
agora.withZoneRetainFields(DateTimeZone.forID("Asia/Tokyo"));
DateTime londres =
agora.withZoneRetainFields(DateTimeZone.forID("Europe/London"));
System.out.println(Hours.hoursBetween(japao, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(londres, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(rioBranco, saoPaulo).getHours());
// Diferença de horas entre Japão e São Paulo: 12
// Diferença de horas entre Londre e São Paulo: 3
// Diferença de horas entre Rio Branco/AC e São Paulo: -1
Até mais,
Roberto
NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports
21/fevereiro/2010 - Java, Tutoriais
Olá!
Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver erros como esses:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException
java.lang.NullPointerException at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e não nos diretórios abaixo de Páginas Web no Netbeans ou Web Content no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles.
A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src.
Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o InputStream no Servlet eufaço assim getResourceAsStream(“Rel_Precipitacoes.jasper”).
Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o InputStream passando esse caminho “../relatorios/Rel_Precipitacoes.jasper” no GerarRelatorioServlet.
O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link: Projeto Jasper Projeto Jasper Netbeans 6.8
Espero ter ajudado.
Até mais,
Roberto
IsNumber em Oracle PL/SQL
05/fevereiro/2010 - Oracle
Olá
Existem duas formas de verificar se uma string contém um número válido. A primeira forma é usando as funções translate, trim e length. Quando usadas em conjunto você obtém null se a string for número ou o comprimento da string sem espaços em branco. Veja abaixo:
select
length(trim(translate('minha_variavel', ' +-0123456789.', ' '))) n1,
length(trim(translate('123456789.9999', ' +-0123456789.', ' '))) n2
from dual;
O resultado dessa query é:
N1 N2
14 null
Outra forma é usando a função to_number(). Caso a string passada contiver caracteres não numéricos é lançada uma exceção.
declare
n number;
s varchar2(10);
begin
s := '1236';
n := to_number(s);
dbms_output.put_line('É número');
exception when others then
dbms_output.put_line('Não é número');
end;
JasperReports em Flash
01/fevereiro/2010 - Java, Tutoriais
Olá!
Faz muito tempo que não publico nada no blog, mas ele não está abandonado.
Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também.
Neste exemplo eu usei um outro exemplo que acompanha o JasperReports Flash Viewer 3.0.0.
» Clique aqui para ver o exemplo funcionando.
» Download dos fontes: Relatório em JasperReports e Flash Exemplo de relatório em JasperReports e Flash
Outra opção para exibir relatórios em flash é utilizar o xViewer mostrado neste post Exibindo relatórios gerados pelo Jasper Report em Flex. O exemplo precisa do Adobe Flex e do ant para compilar, mas voce pode importar os fontes para sua IDE favorita sem problemas é só adicionar os jars no classpath.
Até mais,
Roberto
