You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by st...@apache.org on 2002/11/20 21:10:45 UTC

cvs commit: xml-axis/java/src/org/apache/axis/transport/http AxisServlet.java

stevel      2002/11/20 12:10:45

  Modified:    java/src/org/apache/axis/transport/http AxisServlet.java
  Log:
  adding helper message for GET on JWS, not by working out whether there is a jws file there (which could be done, I suppose), but by pointing the user at the WSDL file. Also implemented the WS-I basic profile recommendation for what to send on a bad request.
  
  Note that all responses have been pretty much teased out into their own methods. We still have a 'monolithic servlet' architecture, but the monolith is now structured. In a webapp intended to be hosted by real appservers only all the responses would next be moved into JSP pages and redirected to in the servlet.
  
  Revision  Changes    Path
  1.151     +45 -10    xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java
  
  Index: AxisServlet.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/transport/http/AxisServlet.java,v
  retrieving revision 1.150
  retrieving revision 1.151
  diff -u -r1.150 -r1.151
  --- AxisServlet.java	31 Oct 2002 23:40:46 -0000	1.150
  +++ AxisServlet.java	20 Nov 2002 20:10:44 -0000	1.151
  @@ -309,14 +309,13 @@
   
                           SOAPService s = engine.getService(serviceName);
                           if (s == null) {
  -                            // no such service....
  -                            response.setStatus(java.net.HttpURLConnection.HTTP_NOT_FOUND);
  -                            response.setContentType("text/html");
  -                            writer.println("<h2>" +
  -                                           Messages.getMessage("error00") + "</h2>");
  -                            writer.println("<p>" +
  -                                           Messages.getMessage("noService06") +
  -                                           "</p>");
  +                            //no service: report it
  +                            if(isJWSPage) {
  +                                reportCantGetJWSService(request, response, writer);
  +                            } else {
  +                                reportCantGetAxisService(request, response, writer);
  +                            }
  +
                           } else {
                               //print a snippet of service info.
                               reportServiceInfo(response, writer, s, serviceName);
  @@ -376,7 +375,8 @@
   
       /**
        * scan through the request for parameters, invoking the endpoint
  -     * if we get a method param.
  +     * if we get a method param. If there was no method param then the
  +     * response is set to a 400 Bad Request and some error text
        * @param msgContext current message
        * @param request incoming requests
        * @param response response to generate
  @@ -403,7 +403,7 @@
   
           if (method == null) {
               response.setContentType("text/html");
  -            //TODO: what error code should we send back for no method?
  +            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
               writer.println("<h2>" +
                              Messages.getMessage("error00") +
                              ":  " +
  @@ -635,6 +635,41 @@
           }
           writer.println("</ul>");
       }
  +
  +    /**
  +     * generate the error response to indicate that there is apparently no endpoint there
  +     * @param request the request that didnt have an edpoint
  +     * @param response response we are generating
  +     * @param writer open writer for the request
  +     */
  +    protected void reportCantGetAxisService(HttpServletRequest request, HttpServletResponse response, PrintWriter writer) {
  +        // no such service....
  +        response.setStatus(HttpURLConnection.HTTP_NOT_FOUND);
  +        response.setContentType("text/html");
  +        writer.println("<h2>" +
  +                Messages.getMessage("error00") + "</h2>");
  +        writer.println("<p>" +
  +                Messages.getMessage("noService06") +
  +                "</p>");
  +    }
  +
  +    /**
  +     * indicate that there may be a JWS page, and that the user should look
  +     * at the WSDL to se
  +     * @param request the request that didnt have an edpoint
  +     * @param response response we are generating
  +     * @param writer open writer for the request
  +     */
  +    protected void reportCantGetJWSService(HttpServletRequest request, HttpServletResponse response, PrintWriter writer) {
  +        // no such service....
  +        response.setStatus(HttpURLConnection.HTTP_OK);
  +        response.setContentType("text/html");
  +        String urltext= Messages.getMessage("noService08");
  +        String url=request.getRequestURI();
  +        writer.println(Messages.getMessage("noService07") + "<p>");
  +        writer.println("<a href='"+url+"?wsdl'>"+urltext+"</a>");
  +    }
  +
   
       /**
        * Process a POST to the servlet by handing it off to the Axis Engine.