前两因项目要做个接口,以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
<完>