Buenas tardes,
Soy novato en este lenguaje de programación y debido a un encargo que me han echo, tengo que resolver una aplicación programada en java para consumir un Web Service.
Me han enviado 4 archivos, 3 de ellos con extensión .xsd y 1 de ellos con extensión .wsdl
Utilizo netbeans con el Sun Java System Application Server 9 y bueno, he creado un servidor (para hacer pruebas en local) basado en el wsdl y los xsd que me han enviado y luego he creado un cliente referenciado sobre el servidor antes creado. En dicho cliente he creado un Servlet con el siguiente código:
package neon.ws;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.ws.WebServiceRef;
public class MiServlet extends HttpServlet {
@WebServiceRef(wsdlLocation = "http://localhost:8080/NeonWebServices/funcion_enviar?wsdl")
private neon.ws.funcionenviar service;
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, neon.ws.OperacionFault {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
neon.ws.funcionenviarType port = service.getDataPower();
// TODO initialize WS operation arguments here
neon.ws.M1C00010M001I in1 = new neon.ws.M1C00010M001I();
neon.ws.M1C00010M001O result = port.funcionenviar(in1);
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<center><h1>Hola</h1></center>");
out.println("</body>");
out.println("</html>");
out.println("Result = "+result);
} finally {
out.close();
}
}
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
try {
processRequest(request, response);
} catch (ServletException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (OperacionFault ex) {
ex.printStackTrace();
}
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
try {
processRequest(request, response);
} catch (ServletException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (OperacionFault ex) {
ex.printStackTrace();
}
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
}
Revisando el archivo wsdl he visto que el par name "in1" tiene como elemento "op1:ENTRADA" y revisando uno de los archivos .xsd he visto que "ENTRADA" esta definido en formato .xml
Mi pregunta es: Como tengo que pasar los parámetros en el Servlet para que el wsdl y sucesivo pueda interpretarlo correctamente??
De ante mando, les agradezco mucho su ayuda
Saludos