[Dica] NFe UnmarshalException
13/janeiro/2015 - Java
Olá,
Caso esteja recebendo uma exception parecida com a mostrada abaixo…
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.portalfiscal.inf.br/nfe", local:"inutNFe"). Expected elements are <{http://www.w3.org/2000/09/xmldsig#}Signature>
… tente fazer o seguinte. Coloque essas anotações na ordem informando o namespace.
@XmlRootElement(name="inutNFe", namespace="http://www.portalfiscal.inf.br/nfe") @XmlType(name = "TInutNFe", namespace = "http://www.portalfiscal.inf.br/nfe", propOrder = {"infInut", "signature"}) @XmlAccessorType(XmlAccessType.FIELD) public class TInutNFe {
Por aqui resolveu
[Dica] Erro cannot be cast to javax.xml.bind.JAXBElement
13/janeiro/2015 - Java
Olá,
Estávamos convertendo um XML em Java Object normalmente com o trecho abaixo:
Object object = (JAXBElement<Object>) unmarsh.unmarshal(is); object.getValue();
Depois de uma alteração passei a receber essa exception:
java.lang.ClassCastException: br.com.xxxx.nfe.beans.TInutNFe cannot be cast to javax.xml.bind.JAXBElement
A alteração foi incluir essa anotação na classe
@XmlRootElement(name="inutNFe", namespace="http://www.portalfiscal.inf.br/nfe")
Com isso a variável object é uma instância do bean e não de JAXBElement, dessa forma não é necessária fazer a chamada ao método getValue() na segunda linha.
Rastrear XML SOAP do JAX-WS
04/julho/2014 - Java
Olá,
Para obter o trace (ou dump) request/response do webservice criado com JAX-WS ajuste as seguintes propriedades no servidor de aplicação.
-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true
Você verá no console algumas mensagens parecidas com essas:
---[HTTP request]--- Cache-control: no-cache Host: 127.0.0.1:7778 Content-type: text/xml; charset=utf-8 Content-length: 1142 Pragma: no-cache User-agent: Axis/1.4 Soapaction: "" Accept: application/soap+xml, application/dime, multipart/related, text/* <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getFaturasDebitosTotalizado2 xmlns="http://wsagefatura.sondautilities.com.br/"><agencia xmlns="">1</agencia><caixa xmlns="">1</caixa><user xmlns="">user</user><pass xmlns="">****</pass><tipoBusca xmlns="">UC</tipoBusca><situacao xmlns="">A</situacao><entsFat xmlns=""><mensagemWS></mensagemWS><retornoWS>OK</retornoWS><codigo>101</codigo><descricao>FATURAS</descricao></entsFat><entsFat xmlns=""><mensagemWS></mensagemWS><retornoWS>OK</retornoWS><codigo>105</codigo></getFaturasDebitosTotalizado2></soapenv:Body></soapenv:Envelope>-------------------- ---[HTTP response 200]--- <?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:getFaturasDebitosTotalizado2Response xmlns:ns2="http://wsagefatura.sondautilities.com.br/"><return><mensagemWS></mensagemWS><retornoWS>OK</retornoWS><codCpu>04</codCpu><codEmp>0008</codEmp><codUC>9999</codUC><vlrEmitido>28.57</vlrEmitido></return></ns2:getFaturasDebitosTotalizado2Response></S:Body></S:Envelope>--------------------
Java8 – 6 linhas de código que eu gostei
29/março/2014 - Java
Olá,
Comecei a olhar as novidades do Java 8 e pensei comigo mesmo: Demorou mas chegou!
Gostei muito das novidades que são destacadas pela Oracle e blogs ao redor do mundo (eu acho que tem mais algumas novidades menos destacadas que eu vou gostar 🙂 )
Posso dizer que:
As expressões Lambdas, que existem há muito tempo em outras linguagens realmente são muitos legais.
A nova API para trabalhar com datas facilitou muito o entendimento e consequentemente a manipulação de data e hora no Java.
Abaixo enumerei 6 linhas que gostei de ver que compila e roda (quase um sonho).
ArrayList<String> listaNomes = new ArrayList<>(); listaNomes.add("Katia"); listaNomes.add("Ana"); listaNomes.add("Fernanda"); listaNomes.add("Andreia"); //(1) Ordena pelo length da string listaNomes.sort((n1, n2) -> Integer.compare(n1.length(), n2.length())); //(2) Mostra a lista no console listaNomes.forEach(s -> System.out.println(s)); LocalDate dataInicial = LocalDate.of(2014, Month.MAY, 14); //(3) Soma 1 ano LocalDate dataFinal = dataInicial.plusYears(1); System.out.println(dataFinal); LocalTime horaAgora = LocalTime.now(); //(4) Somar minutos a hora System.out.println(horaAgora.plusMinutes(15)); //(5) Diferença em dias de duas datas long days = ChronoUnit.DAYS.between(dataInicial, dataFinal); System.out.println(days); //(6) Diferença entre horas em minutos System.out.println(Duration.between(LocalTime.parse("11:00:00"), LocalTime.parse("17:00:00")).toMinutes());
Para esse post é só, ainda falta olhar o modificador default em interfaces, a API Stream para coleções e outras novidades.
Referências:
Acesso ao internet banking do Banco do Brasil e Itaú no Safari
31/outubro/2013 - Geral, Java
Olá,
[Atualização 01/nov/13 19:00: Segundo o twitter do BB já é possível acessar o internet banking pelo Mavericks.]
Tem muita gente com problema de acesso ao internet banking do BB e do Itaú no Safari (Versão 7.0 (9537.71)) por causa do Java (no meu caso versão 7 update 45). Existe um procedimento que podemos fazer para que ele funcione.
[Atualização 15/10/2014]
Abrir o Java Control Panel que fica no menu da maçã > preferências do sistema.
Vá na aba segurança, clica em editar lista de sites e adicione esses dois endereços:
https://www2.bancobrasil.com.br/
https://aapj.bb.com.br/
Clique em OK.
Testado com Java 7 Update 67
[/Fim Atualização]
Vamos lá configurar o Safari, no menu Safari clique em Preferências ou tecle ⌘,
Na aba Segurança, marque a opção permitir plug-ins e clique no botão Gerenciar Ajuste do Site. A tela abaixo será aberta.
No lado esquerdo clique em Java e no lado direito veja se o site do Banco do Brasil aparece, se não aparecer tente acessar sua conta e depois volte nessa etapa.