前两因项目要做个接口,以webservice方式传递数据.现把相关的步骤记录下:
首先当然是要下载axis.jar包,另外还有mail.jar包等以及spring的相关包(这个如果是spring做的项目的话,应该都有的.)
接下来为web.xml配置相关的数据:
web.xml
<servlet> <servlet-name>context</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- axis Servlet --> <servlet> <servlet-name>axis</servlet-name> <servlet-class> org.apache.axis.transport.http.AxisServlet </servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>/servlet/AxisServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping>
然后定义一个接口类:
public interface EiacService { public String doEiacServiceRetXML(String UID,String QUERYTYPE); }
接口实现类:
需继承ServletEndpointSupport 类,以方便调spring Bean
package com.timeson.oa.webservice.impl;
import com.timeson.oa.webservice.EiacService; import com.timeson.oa.hr.service.UserManager; import com.timeson.oa.hr.model.SysUser; import com.timeson.oa.workflow.service.TbEngineFilecommonManager; import com.timeson.oa.workflow.model.PendingTask; import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
import javax.xml.rpc.ServiceException; import java.util.List;
public class EiacServiceImpl extends ServletEndpointSupport implements EiacService { private UserManager userMgr; private TbEngineFilecommonManager file; protected void onInit() throws ServiceException { //在Spring容器中获取Bean的实例 userMgr = (UserManager) getApplicationContext().getBean("userManager"); file = (TbEngineFilecommonManager) getApplicationContext().getBean("tbEngineFilecommonManager"); } /** * 主入口方法 * * @param UID * @param QUERYTYPE 1为发文,2为收文 * @return xml */ public String doEiacServiceRetXML(String UID, String QUERYTYPE) { StringBuilder result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); result.append("<info>\n"); try { // System.out.println("11111111111111 uid " + UID + " dddd "); if(UID != null && !"".equals(UID) && !"null".equals(UID)) { //发文 if(QUERYTYPE.equals("1")) { List userList = userMgr.getEiacUsers(Integer.valueOf(UID)); //oa没能对应的帐号 if(userList.size() < 1) { result.append("<RETFLAG>0</RETFLAG>\n"); result.append("<RETERRORID>0</RETERRORID>\n"); result.append("<RETERRORINFO>OA系统中不存在对应帐号的用户。</RETERRORINFO>\n"); result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n"); } //有一个的时候 else if(userList.size() == 1) { SysUser sysUser = (SysUser) userList.get(0); List fileList = file.GetPendingMaters(sysUser.getId().toString(), QUERYTYPE); result.append("<RETFLAG>1</RETFLAG>\n"); result.append("<RETERRORID>1</RETERRORID>\n"); result.append("<RETERRORINFO>成功</RETERRORINFO>\n"); String resultList = resultList(fileList, sysUser.getId()); result.append(resultList); } //两个以个 else { result.append("<RETFLAG>1</RETFLAG>\n"); result.append("<RETERRORID>1</RETERRORID>\n"); result.append("<RETERRORINFO>成功</RETERRORINFO>\n"); for(int j = 0; j < userList.size(); j++) { SysUser sysUser = (SysUser) userList.get(j); List fileList = file.GetPendingMaters(sysUser.getId().toString(), QUERYTYPE); String resultList = resultList(fileList, sysUser.getId()); result.append(resultList); } } } //收文 else if(QUERYTYPE.equals("2")) { List userList = userMgr.getEiacUsers(Integer.valueOf(UID)); //oa没能对应的帐号 if(userList.size() < 1) { result.append("<RETFLAG>0</RETFLAG>\n"); result.append("<RETERRORID>0</RETERRORID>\n"); result.append("<RETERRORINFO>OA系统中不存在对应帐号的用户。</RETERRORINFO>\n"); result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n"); } //有一个的时候 else if(userList.size() == 1) { SysUser sysUser = (SysUser) userList.get(0); List fileList = file.GetReadListOnEiac(sysUser.getId().toString(), QUERYTYPE); result.append("<RETFLAG>1</RETFLAG>\n"); result.append("<RETERRORID>1</RETERRORID>\n"); result.append("<RETERRORINFO>成功</RETERRORINFO>\n"); String resultList = resultListOnRead(fileList, sysUser.getId()); result.append(resultList); } //两个以个 else { result.append("<RETFLAG>1</RETFLAG>\n"); result.append("<RETERRORID>1</RETERRORID>\n"); result.append("<RETERRORINFO>成功</RETERRORINFO>\n"); for(int j = 0; j < userList.size(); j++) { SysUser sysUser = (SysUser) userList.get(j); List fileList = file.GetReadListOnEiac(sysUser.getId().toString(), QUERYTYPE); String resultList = resultListOnRead(fileList, sysUser.getId()); result.append(resultList); } } } //传入参数{QUERYTYPE}有误时 else { result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); result.append("<info>\n"); result.append("<RETFLAG>0</RETFLAG>\n"); result.append("<RETERRORID>2</RETERRORID>\n"); result.append("<RETERRORINFO>请求失败,传入\" QUERYTYPE \"为空</RETERRORINFO>\n"); result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n"); } } //传入参数{UID}有误时 else { result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); result.append("<info>\n"); result.append("<RETFLAG>0</RETFLAG>\n"); result.append("<RETERRORID>2</RETERRORID>\n"); result.append("<RETERRORINFO>请求失败,传入\"UID\"为空</RETERRORINFO>\n"); result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n"); } } catch(Exception e) { result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); result.append("<info>\n"); result.append("<RETFLAG>0</RETFLAG>\n"); result.append("<RETERRORID>3</RETERRORID>\n"); result.append("<RETERRORINFO>出现异常,请求失败</RETERRORINFO>\n"); result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n"); e.printStackTrace(); } result.append("</info>"); return result.toString(); }
在WEB-INF目录下加入server-config.wsdd文件
并加入内容如下
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="EiacService" provider="java:RPC" use="literal"> <operation name="doEiacServiceRetXML" qname="ns1:doEiacServiceRetXML" returnQName="ns1:doEiacServiceRetXMLReturn" returnType="xsd:string" soapAction="" xmlns:ns1="http://impl.webservice.oa.timeson.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <parameter qname="ns1:UID" type="xsd:string"/> <parameter qname="ns1:QUERYTYPE" type="xsd:string"/> </operation> <parameter name="allowedMethods" value="doEiacServiceRetXML"/> <parameter name="typeMappingVersion" value="1.2"/> <parameter name="wsdlPortType" value="EiacServiceImpl"/> <parameter name="className" value="com.timeson.oa.webservice.impl.EiacServiceImpl"/> <!--<parameter name="className" value="com.timeson.oa.webservice.EiacService"/>--> <parameter name="wsdlServicePort" value="EiacServiceImpl"/> <parameter name="schemaQualified" value="http://impl.webservice.oa.timeson.com"/> <parameter name="wsdlTargetNamespace" value="http://impl.webservice.oa.timeson.com"/> <parameter name="wsdlServiceElement" value="EiacServiceImplService"/> </service> <transport name="local"> <responseFlow> <handler type="LocalResponder"/> </responseFlow> </transport> </deployment>
完成后部署到TOCAR目录下
打开IE在地址栏输入:http://192.168.19.51:81/oa/services/EiacService?wsdl
<完>