Links importantes
- Metro Guide: SOAP Headers: http://metro.java.net/guide/SOAP_headers.html
- JAX-WS: http://jax-ws.java.net/nonav/2.2.1/docs/index.html
No link do JAX-WS, veja informações sobre o wsimport, em Tools.
Links importantes
No link do JAX-WS, veja informações sobre o wsimport, em Tools.
Boa noite!
Eu tambem já estou ficando maluco de tanto quebrar a cabeça tentando resolver o mesmo problema.
Agradeço se me enviar a classe completa onde voce resolveu esse problema.
Meu email: portoinfo@sercomtel.com.br
Desde já agradeço!
Um abraço!
aix, seria muito mais facil se você tivesse disponibilizado o projeto aqui no forum. Dessa forma não tinha tanta gente pedindo “manda para mim tb!!!”
Se puder forneça os fontes para pessoal.
Obrigado,
Fred
[quote=aix][quote=zoren]Você utilizou qual classe para trabalhar com o nós do XML?
Apenas passando o objeto TConsStatServ e colocando a chamada dele no ObjectFactory dos stubs, para de dar erro, mas a resposta vem null.[/quote]
me da seu email que te envio um projeto java fazendo a consulta ai vc vai entender melhor, para poder adaptar pro seu sistema, e se mesmo assim não der me mostra suas classes que tendo ajudar, abraços
dilneicunha@gmail.com[/quote]
Por favor! Mande para mim tambem. Obrigado! email: portoinfo@sercomtel.com.br
Bom dia a todos.
Estamos com um projeto da NFe versão 2 em desenvolvimento no svn.
Aos interessados, enviar um email para francisco.ed.silva@gmail.com para criarmos um login e senha pra terem acesso ao projeto.
Assim todos podem contribuir e se beneficiar.
Atenciosamente.
Alguém utiliza para emissão da NF-e: Tomcat ou Jboss + Axis2 + Eclipse?
Estou com uma aplicação onde apresenta um erro que não conseguir resolver o problema.
Tenho uma classe que quando executo através do Java Application ela funciona normal para enviar o lote da NFe para a SEFAZ, porém quando utilizo o Tomcat ou o Jboss ele apresenta problema.
Necessito fazer alguma configuração do Tomcat para para ele utilizar o AXIS2?
[quote=aix]Ai gurizada consegui o Status de OK na NF-e 2.0 usando JAX-WS, SOAP 1.2 passando Header e Body dentro do envelope Soap se alguem quiser saber como é basta me mandar um email, abraços.
[code]
—[HTTP request]—
SOAPAction: “”
Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
Content-Type: application/soap+xml; charset=utf-8;action=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2”
<S:Envelope xmlns:S=“http://www.w3.org/2003/05/soap-envelope”>
<S:Header>
43
2.00
</S:Header>
<S:Body>
2
43
STATUS
</S:Body>
</S:Envelope>--------------------
—[HTTP response 200]—
null: HTTP/1.1 200 OK
Cache-control: private, max-age=0
Content-type: application/soap+xml; charset=utf-8
Content-length: 797
X-powered-by: ASP.NET
Server: Microsoft-IIS/6.0
Date: Thu, 20 May 2010 22:31:27 GMT
X-aspnet-version: 2.0.50727
<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelope”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
soap:Header
43
2.00
</soap:Header>
soap:Body
2
RS20100210143458
107
Servico em Operacao
43
2010-05-20T19:31:27
1
</soap:Body>
</soap:Envelope>--------------------
[/code][/quote]
Como você conseguiu pegar a data / hora sem o -3:00 que fica no final…
[quote]
2010-05-20T19:31:27 [/quote]
Desde já obrigado.
acredito que na época eu tenha utilizado os adapter do JAXB, se foi isto ficaria + ou - assim:
[code]package sefaz.xml;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.xml.bind.annotation.adapters.XmlAdapter;
/**
*/
public class XmlAdapterToDate extends XmlAdapter<String, Date> {
@Override
public String marshal(Date date) throws Exception {
if (date == null) {
return null;
}
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
@Override
public Date unmarshal(String date) throws Exception {
if (date == null || date.isEmpty() || date.trim().isEmpty()) {
return null;
}
return new SimpleDateFormat("yyyy-MM-dd").parse(date);
}
}
[/code]
e usava assim:
@XmlJavaTypeAdapter(value = XmlAdapterToDate.class)
private Date data;
obs: abandonei o uso de lib como Axis e JAX-WS na NF-e e preferi usar SOAP, foi muito melhor, no fórum do javaC tem tudo que vc precisa, abraços.
Estava com tantos topicos abertos que acabei postando no errado. Onde eu apago?
Olá pessoal,
Podem me enviar também?
jbacatalao@yahoo.com.br
Cara você roda isso no Weblogic?
Estou utilizando esse método no weblogic, e ele não funciona da erro, dá connection reset.
public static void ajustaSslCertificadoA1() {
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "homologacao_nfe_sefaz_rs_gov_br");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha_doCertificado");
}
Alguém sabe o que fazer pra funcionar no Weblogic?
não rodei no weblogic manu, mas onde o erro acontece aqui new com.sun.net.ssl.internal.ssl.Provider() ?
Não ele passa por isso, mas na hora de chamar o serviço dá erro, dá connection reset.
Na IDE Funciona perfeito, é só quando eu subo pro Weblogic que da erro.
Esse weblogic é uma tristeza.
[quote=DANTONIO]Não ele passa por isso, mas na hora de chamar o serviço dá erro, dá connection reset.
Na IDE Funciona perfeito, é só quando eu subo pro Weblogic que da erro.
Esse weblogic é uma tristeza.
[/quote]
brother mas vc tem suporte da Oracle, weblogic é pago e não é nada barato, ainda bem que no sistema que estou construindo instrui a colocarem Jboss wild-fly, vou dar uma olha na documentação desse server, e te respondo assim que possivel, se você conseguir antes me avisa, abraços.
[quote=DANTONIO]Não ele passa por isso, mas na hora de chamar o serviço dá erro, dá connection reset.
Na IDE Funciona perfeito, é só quando eu subo pro Weblogic que da erro.
Esse weblogic é uma tristeza.
[/quote]
isso não tem firewall barrando?
Não tem, parece que o Weblogic reseta a conexão, acho que tem que fazer alguma coisa nele.
Pq ele cai por time out e retorna exception de connection reset
Oi Aix tudo bem…?
Consegui matar o problema do Weblogic, joguei a segurança na inicialização do weblogic
Agora me ajuda numa parada, estou tentando consumir a sefaz com JAX-WS, vc tem o exemplo de como vc fez aparte do cabeçalho e dos dados da mensagem…
Já tentei de tudo e só estou recebendo erro.
Poderia por favor postar ou me mandar danilo.silva@gmail.com
Obrigado
com JAX-WS foi bem complicado naquela época, era pouca informação, mas os problemas com jax-ws eram, que no parse o JAXB modificava o xml de envio, adicionando na request uns prefixos nas namespaces ex:ns:1, ns:2 etc…
a NF-e é bem rígida com o xml, eles não permitem prefixo nas namespaces, na época tive que implementar uma Interface (NamespacePrefixMapper) ex:http://hwellmann.blogspot.com.br/2011/03/jaxb-marshalling-with-custom-namespace.html
O erro geralmente é gerado ao assinar a NF-e, pois, nesse momento ou após, se faz parse no xml, a tranformação de Object/XML e XML/Object faz gerar os prefixos das namespaces, outra forma é colocando os frefixos no momento do envio.
Outra coisa, com JAX-WS se vc esta gerando os esqueletons, é preciso configurar a geração, pois tem que especificar que tem header -XadditionalHeaders
, depois precisa usar aquele Holder.
Eu não tenho exemplos, posso apenas te ajudar a fazer, porém se quiser ganhar tempo,e que seja uma simples implementação, neste caso, somente neste!, indico o Axis2, com Axis2 o comportamento é como falou, cabeçalho e dados.
posta o erro, abraços.
Cara Segue o meu código, não sei se estou fazendo alguma coisa anormal.
System.setProperty("weblogic.security.SSL.ignoreHostnameVerification",
"true");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation",
"true");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.trustStore");
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",
keyStore);
System.setProperty("javax.net.ssl.keyStorePassword",keyStorePass);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore",
trustStore);
System.setProperty("javax.net.ssl.trustStorePassword",trustStorePass);
nfeStatusServico2 = new NfeStatusServico2();
NfeStatusServico2Soap12 myPort =
nfeStatusServico2.getNfeStatusServico2Soap12();
// Add your code to call the desired methods.
StringBuffer xml = new StringBuffer();
xml.append("<consStatServ versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">");
xml.append("<tpAmb>2</tpAmb>");
xml.append("<cUF>31</cUF>)");
xml.append("<xServ>STATUS</xServ>");
xml.append("</consStatServ>");
try {
DocumentBuilderFactory builderFactory =
DocumentBuilderFactory.newInstance();
ByteArrayInputStream stream =
new ByteArrayInputStream(xml.toString().getBytes());
Document doc = builderFactory.newDocumentBuilder().parse(stream);
/** Create SoapMessage **/
MessageFactory msgFactory = MessageFactory.newInstance();
SOAPMessage message = msgFactory.createMessage();
SOAPBody soapBody = message.getSOAPBody();
SOAPElement payLoad = (SOAPElement)soapBody.addDocument(doc);
/** Call webservice **/
NfeDadosMsg nfeDadosMsg = new NfeDadosMsg();
nfeDadosMsg.getContent().add(0, payLoad);
NfeCabecMsg nfeCabecMsg = new NfeCabecMsg();
nfeCabecMsg.setCUF("35");
nfeCabecMsg.setVersaoDados("3.10");
Holder<NfeCabecMsg> nfeHolder =
new Holder<NfeCabecMsg>(nfeCabecMsg);
NfeStatusServicoNF2Result nfeResult =
myPort.nfeStatusServicoNF2(nfeDadosMsg, nfeHolder);
SOAPElement result = (SOAPElement)nfeResult.getContent().get(0);
} catch (Exception e) {
e.printStackTrace();
}
O Erro é esse:
javax.xml.ws.WebServiceException: No Content-type in the header!
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:268)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:124)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:121)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:866)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:815)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:778)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:680)
at com.sun.xml.ws.client.Stub.process(Stub.java:272)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:153)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:115)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:95)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:136)
at $Proxy31.nfeStatusServicoNF2(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:84)
at $Proxy32.nfeStatusServicoNF2(Unknown Source)
at oracle.e1.bssv.proxy.NfeStatusServico2Soap12Client.main(NfeStatusServico2Soap12Client.java:92)
Process exited with exit code 0
Na criação do NfeStatusServico2Soap12 ele criou o parametro do cabeçalho conforme vc disse.
(Estou utilizando o JDeveloper)