AXIS2学习笔记:开始看源码接收请求创建MessageContext
(2011-12-16 20:37:34)
标签:
axis2webservicesoap |
分类: AXIS2 |
以WAR方式部署的AXIS2在web.xml里面声明了Servlet
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis
Servlet</display-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
/services/*的请求均被映射到org.apache.axis2.transport.http.AxisServlet上,因此从这个类开始看起。
标准的Servlet写法,doPost方法用来处理WebService请求。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setBufferSize(BUFFER_SIZE);
preprocessRequest(request);
//声明了MessageContext,这个东西是整个消息处理的一条线
MessageContext msgContext;
OutputStream out = response.getOutputStream();
String contentType = request.getContentType();
//AXIS2支持REST请求,两者处理方式不同
if (!HTTPTransportUtils.isRESTRequest(contentType)) {
//处理非REST请求。
//创建MessageContext了!
msgContext =
createMessageContext(request, response);
msgContext.setProperty(Constants.Configuration.CONTENT_TYPE,
contentType);
......
}else{
//开始处理REST请求
if (!disableREST) {
new RestRequestProcessor(Constants.Configuration.HTTP_METHOD_POST,
request, response).processXMLRequest();
} else {
<servlet-mapping>
/services/*的请求均被映射到org.apache.axis2.transport.http.AxisServlet上,因此从这个类开始看起。
标准的Servlet写法,doPost方法用来处理WebService请求。
protected void doPost(HttpServletRequest request, HttpServletResponse response)

加载中…