You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2006/10/31 09:09:29 UTC
svn commit: r469406 - in
/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet:
CXFServlet.java ServletDestination.java
Author: ffang
Date: Tue Oct 31 00:09:29 2006
New Revision: 469406
URL: http://svn.apache.org/viewvc?view=rev&rev=469406
Log:
Servlet Transport code clean up
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java?view=diff&rev=469406&r1=469405&r2=469406
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/CXFServlet.java Tue Oct 31 00:09:29 2006
@@ -22,18 +22,27 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.lang.ref.WeakReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLWriter;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -47,24 +56,29 @@
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactoryHelper;
import org.apache.cxf.jaxws.EndpointImpl;
-import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
-import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
-import org.apache.cxf.service.Service;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
+import org.apache.cxf.tools.util.SOAPBindingUtil;
import org.apache.cxf.transport.DestinationFactory;
import org.apache.cxf.transport.DestinationFactoryManager;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.wsdl.EndpointReferenceUtils;
+import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
+import org.xmlsoap.schemas.wsdl.http.AddressType;
public class CXFServlet extends HttpServlet {
+
+
static final String HTTP_REQUEST =
- CXFServlet.class.getName() + ".REQUEST";
+ "HTTP_SERVLET_REQUEST";
static final String HTTP_RESPONSE =
- CXFServlet.class.getName() + ".RESPONSE";
+ "HTTP_SERVLET_RESPONSE";
static final Map<String, WeakReference<Bus>> BUS_MAP = new Hashtable<String, WeakReference<Bus>>();
-
+ static final Logger LOG = Logger.getLogger(CXFServlet.class.getName());
protected Bus bus;
protected Map<String, ServletDestination> servantMap
= new HashMap<String, ServletDestination>();
@@ -110,14 +124,11 @@
nd = nd.getNextSibling();
}
} catch (SAXException ex) {
- // TODO Auto-generated catch block
- ex.printStackTrace();
+ throw new ServletException(ex);
} catch (IOException ex) {
- // TODO Auto-generated catch block
- ex.printStackTrace();
+ throw new ServletException(ex);
} catch (ParserConfigurationException ex) {
- // TODO Auto-generated catch block
- ex.printStackTrace();
+ throw new ServletException(ex);
}
}
}
@@ -146,7 +157,7 @@
String serviceName,
String wsdlName,
String portName,
- String urlPat) {
+ String urlPat) throws ServletException {
try {
@@ -179,23 +190,17 @@
replaceDestionFactory();
// doesn't really matter what URL is used here
ep.publish("http://localhost" + (urlPat.charAt(0) == '/' ? "" : "/") + urlPat);
- JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(impl.getClass());
- // build up the Service model
- JaxWsServiceFactoryBean serviceFactory = new JaxWsServiceFactoryBean(implInfo);
- serviceFactory.setBus(bus);
- serviceFactory.setServiceClass(impl.getClass());
- Service service = serviceFactory.create();
-
- // create the endpoint
- QName endpointName = implInfo.getEndpointName();
- ei = service.getServiceInfo().getEndpoint(endpointName);
+
+ ei = ep.getServer().getEndpoint().getEndpointInfo();
+
+
} catch (ClassNotFoundException ex) {
- ex.printStackTrace();
+ throw new ServletException(ex);
} catch (InstantiationException ex) {
- ex.printStackTrace();
+ throw new ServletException(ex);
} catch (IllegalAccessException ex) {
- ex.printStackTrace();
+ throw new ServletException(ex);
}
}
@@ -218,7 +223,8 @@
registerTransport(factory, "http://cxf.apache.org/bindings/xformat");
}
- public void loadEndpoint(ServletConfig servletConfig, Node node) {
+ public void loadEndpoint(ServletConfig servletConfig, Node node)
+ throws ServletException {
Element el = (Element)node;
String implName = el.getAttribute("implementation");
String serviceName = el.getAttribute("service");
@@ -245,19 +251,56 @@
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
try {
- ((ServletDestination)ep.getServer().getDestination()).doService(request, response);
+ if (LOG.isLoggable(Level.INFO)) {
+ LOG.info("Service http request on thread: " + Thread.currentThread());
+ }
+
+ MessageImpl inMessage = new MessageImpl();
+ inMessage.setContent(InputStream.class, request.getInputStream());
+ inMessage.put(HTTP_REQUEST, request);
+ inMessage.put(HTTP_RESPONSE, response);
+ inMessage.put(Message.HTTP_REQUEST_METHOD, request.getMethod());
+ inMessage.put(Message.PATH_INFO, request.getPathInfo());
+ inMessage.put(Message.QUERY_STRING, request.getQueryString());
+
+ ((ServletDestination)ep.getServer().getDestination()).doMessage(inMessage);
} catch (IOException e) {
- e.printStackTrace();
+ throw new ServletException(e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
try {
- ((ServletDestination)servletTransportFactory.
- getDestination(ei)).doService(request, response);
- } catch (IOException e) {
- e.printStackTrace();
+
+
+ response.setHeader("Content-Type", "text/xml");
+
+ OutputStream os = response.getOutputStream();
+
+ WSDLWriter wsdlWriter = WSDLFactory.newInstance().newWSDLWriter();
+ Definition def = new ServiceWSDLBuilder(ei.getService()).build();
+ Port port = def.getService(ei.getService().getName()).getPort(
+ ei.getName().getLocalPart());
+ List<?> exts = port.getExtensibilityElements();
+ if (exts.size() > 0) {
+ ExtensibilityElement el = (ExtensibilityElement)exts.get(0);
+ if (SOAPBindingUtil.isSOAPAddress(el)) {
+ SoapAddress add = SOAPBindingUtil.getSoapAddress(el);
+ add.setLocationURI(request.getRequestURL().toString());
+ }
+ if (el instanceof AddressType) {
+ AddressType add = (AddressType)el;
+ add.setLocation(request.getRequestURL().toString());
+ }
+ }
+
+ wsdlWriter.writeWSDL(def, os);
+ response.getOutputStream().flush();
+ return;
+ } catch (Exception ex) {
+
+ throw new ServletException(ex);
}
}
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java?view=diff&rev=469406&r1=469405&r2=469406
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/servlet/ServletDestination.java Tue Oct 31 00:09:29 2006
@@ -36,13 +36,9 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.servlet.http.HttpServletRequest;
+
import javax.servlet.http.HttpServletResponse;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLWriter;
+
import org.apache.cxf.Bus;
import org.apache.cxf.common.util.Base64Exception;
@@ -52,22 +48,19 @@
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
-import org.apache.cxf.tools.util.SOAPBindingUtil;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.ConduitInitiator;
import org.apache.cxf.transport.Destination;
import org.apache.cxf.transport.MessageObserver;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
-import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
-import org.xmlsoap.schemas.wsdl.http.AddressType;
+
public class ServletDestination implements Destination {
public static final String HTTP_REQUEST =
- ServletDestination.class.getName() + ".REQUEST";
+ "HTTP_SERVLET_REQUEST";
public static final String HTTP_RESPONSE =
- ServletDestination.class.getName() + ".RESPONSE";
+ "HTTP_SERVLET_RESPONSE";
static final Logger LOG = Logger.getLogger(ServletDestination.class.getName());
@@ -240,35 +233,11 @@
protected void copyResponseHeaders(Message message, HttpServletResponse response) {
}
- protected void doService(HttpServletRequest req, HttpServletResponse resp)
- throws IOException {
-
-
- if ("GET".equals(req.getMethod())) {
- doGet(req, resp);
- } else {
- doPost(req, resp);
- }
-
-
- // REVISIT: service on executor if associated with endpoint
- //serviceRequest(req, resp);
- }
- private void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+
+ protected void doMessage(MessageImpl inMessage) throws IOException {
try {
- if (LOG.isLoggable(Level.INFO)) {
- LOG.info("Service http request on thread: " + Thread.currentThread());
- }
- MessageImpl inMessage = new MessageImpl();
- inMessage.setContent(InputStream.class, req.getInputStream());
- inMessage.put(HTTP_REQUEST, req);
- inMessage.put(HTTP_RESPONSE, resp);
- inMessage.put(Message.HTTP_REQUEST_METHOD, req.getMethod());
- inMessage.put(Message.PATH_INFO, req.getPathInfo());
- inMessage.put(Message.QUERY_STRING, req.getQueryString());
-
setHeaders(inMessage);
inMessage.setDestination(this);
@@ -284,39 +253,6 @@
}
- private void doGet(HttpServletRequest req, HttpServletResponse resp) {
- try {
-
-
- resp.setHeader("Content-Type", "text/xml");
-
- OutputStream os = resp.getOutputStream();
-
- WSDLWriter wsdlWriter = WSDLFactory.newInstance().newWSDLWriter();
- Definition def = new ServiceWSDLBuilder(endpointInfo.getService()).build();
- Port port = def.getService(endpointInfo.getService().getName()).getPort(
- endpointInfo.getName().getLocalPart());
- List<?> exts = port.getExtensibilityElements();
- if (exts.size() > 0) {
- ExtensibilityElement el = (ExtensibilityElement)exts.get(0);
- if (SOAPBindingUtil.isSOAPAddress(el)) {
- SoapAddress add = SOAPBindingUtil.getSoapAddress(el);
- add.setLocationURI(req.getRequestURL().toString());
- }
- if (el instanceof AddressType) {
- AddressType add = (AddressType)el;
- add.setLocation(req.getRequestURL().toString());
- }
- }
-
- wsdlWriter.writeWSDL(def, os);
- resp.getOutputStream().flush();
- return;
- } catch (Exception ex) {
-
- ex.printStackTrace();
- }
- }
protected class BackChannelConduit implements Conduit {
@@ -410,7 +346,7 @@
try {
response.flushBuffer();
} catch (IOException e) {
- e.printStackTrace();
+ LOG.severe(e.getMessage());
}
}
}