\nOl\u00e1 amigos,
\n Hoje criaremos um web Service com a API JAX-WS. JAX-WS \u00e9 uma tecnologia para a constru\u00e7\u00e3o de servi\u00e7os web e clientes que se comunicam via XML. JAX-WS permite aos desenvolvedores escrever servi\u00e7os orientados a mensagem, bem como servi\u00e7os de Chamada Remota de Procedimentos (RPC) orientadas para a web.<\/p>\n
O JAX-WS \u00e9 baseado no protocolo SOAP – uma opera\u00e7\u00e3o de chamada a um servi\u00e7o web que \u00e9 representado por um protocolo baseado em XML. A especifica\u00e7\u00e3o SOAP define a estrutura de envelope, regras de codifica\u00e7\u00e3o, e as conven\u00e7\u00f5es para a representa\u00e7\u00e3o de chamadas de servi\u00e7o web e respostas. Essas chamadas e respostas s\u00e3o transmitidas como mensagens SOAP (arquivos XML) sobre HTTP.<\/p>\n
Para quem j\u00e1 trabalhou com web Service, sabe que esta \u00e9 uma forma de integrar sistemas atrav\u00e9s de chamadas de rede e independente de linguagem de programa\u00e7\u00e3o.
\n Ent\u00e3o vamos l\u00e1! M\u00e3os \u00e0 obra.<\/p>\n
\n
Digite o c\u00f3digo abaixo em um arquivo chamado “GeraNumero.java”:<\/p>\n
\r\npackage br.com.feltex.webservice.service;\r\n\r\nimport javax.jws.WebMethod;\r\nimport javax.jws.WebService;\r\nimport javax.jws.soap.SOAPBinding;\r\nimport javax.jws.soap.SOAPBinding.Style;\r\nimport javax.jws.soap.SOAPBinding.Use;\r\n\r\n@WebService\r\n@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)\r\npublic interface GeraNumero {\r\n\t@WebMethod\r\n\tpublic double gerarNumero();\r\n}\r\n<\/pre>\n2. Classe que implementa o servi\u00e7o<\/H2>
\n Em seguida temos que criar a classe que possui o m\u00e9todo de gera\u00e7\u00e3o de n\u00fameros aleat\u00f3rios. Observe que ele implementa a Interface “GeraNumero”. Por isso a classe deve implementar os m\u00e9todos definidos por ela.<\/p>\n\r\npackage br.com.feltex.webservice.service;\r\n\r\nimport javax.jws.WebService;\r\n\r\n@WebService(endpointInterface = \"br.com.feltex.webservice.service.GeraNumero\")\r\npublic class GeradoNumeroImpl implements GeraNumero {\r\n\t@Override\r\n\tpublic double gerarNumero() {\r\n\t\treturn Math.random() * 11000;\r\n\t}\r\n}\r\n<\/pre>\n3. Publica\u00e7\u00e3o do Servi\u00e7o<\/H2>
\n Por \u00faltimo teremos a classe que ir\u00e1 inicializar o nosso servi\u00e7o e deixar\u00e1 dispon\u00edvel a chamada via HTTP.<\/p>\n\r\npackage br.com.feltex.webservice.tool;\r\n\r\nimport javax.xml.ws.Endpoint;\r\n\r\nimport br.com.feltex.webservice.service.GeradoNumeroImpl;\r\n\r\npublic class Publicador {\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\tSystem.out.println(\"In\u00edcio Publicador\");\t\t \r\n\t\tEndpoint.publish(\"http:\/\/localhost:8080\/gerador\",new GeradoNumeroImpl());\r\n\t\tSystem.out.println(\"Fim Publicador\");\r\n\t}\r\n}\r\n<\/pre>\n4. Verifica\u00e7\u00e3o da disponibilidade do servi\u00e7o.<\/H2>
\n Execute a classe Publicador e voc\u00ea ver\u00e1 que o servi\u00e7o estar\u00e1 no ar!
\n Para voc\u00ea ver se o servi\u00e7o est\u00e1 no ar, ser\u00e1 necess\u00e1rio abrir o browser e fazer a seguinte chamada:http:\/\/localhost:8080\/gerador?wsdl<\/strong><\/p>\n O resultado deve ser algo parecido como:<\/p>\n
\r\n\r\n\r\n\r\n<\/xsd:import>\r\n<\/xsd:schema>\r\n<\/types>\r\n\r\n<\/part>\r\n<\/message>\r\n\r\n<\/part>\r\n<\/message>\r\n\r\n\r\n<\/input>\r\n