最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

文档(DocService)WebService接口使用说明

底层代码 bron1984 6463浏览

文档接口使用说明

  1. Ecology系统文档接口部署
  2. 更新lib目录下文件

将spring.jar更新为spring-1.2.6.jar

将xfire-all-1.1.2.jar更新为xfire-all-1.2.6.jar

添加xbean-spring-2.8.jar文件

  1. 修改web.xml文件

在相应处增加servlet部署(参考系统中已有很多servlet部署),加入如下描述

<servlet>

<servlet-name>XFireServlet</servlet-name>

<display-name>XFire Servlet</display-name>

<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>XFireServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

注意:不要添加在注释中(即以“<!—”开始至“–>”结束为注释)!

  1. 添加文件

在classes目录中添加META-INF/xfire/services.xml

在classes目录中添加以下class文件:

weaver\docs\webservices\DocAttachment.class

weaver\docs\webservices\DocCustomField.class

weaver\docs\webservices\DocInfo.class

weaver\docs\webservices\DocService.class

weaver\docs\webservices\DocServiceImpl.class

  1. 接口使用

文档接口采用标准的Web Service规范,因此可以使用标准的Web Service客户端调用。

  1. 客户端所需lib

commons-discovery-0.2.jar

javax-wsdl_1.5.1jar

commons-logging_1.0.4.jar

axis.jar

jaxrpc.jar

saaj.jar

activation.jar

mail.jar

  1. wsdl描述

在ecology系统中成功部署文档Web Service接口后,访问以下地址即可查看到该接口的wsdl描述:http://服务器:端口号/services/DocService?wsdl

wsdl具体描述文件如下:

  1. 接口方法概述
名称 参数 返回值 功能描述
login String loginid:用户登陆名

String password :用户登陆密码

int logintype:登陆方式(0 数据库验证;1 动态密码验证;2 LDAP验证)

String ipaddress:用户IP地址

String:登陆Session码 登陆验证用户,并根据返回随Session码
createDoc DocInfo docinfo:文档信息对象

String sessioncode:登陆Session码

int:1 成功 0 失败 根据文档对象创建文档
updateDoc DocInfo docinfo:文档信息对象

String sessioncode:登陆Session码

int:1 成功 0 失败 根据文档对象修改文档
deleteDoc int id:文档ID

String sessioncode:登陆Session码

int:1 成功 0 失败 根据文档ID删除文档
getDoc int id:文档ID

String sessioncode:登陆Session码

DocInfo:文档对象 根据文档ID取得文档对象(带文档内容及附件)
getDocCount String sessioncode:登陆Session码 int:文档数 取得有权限访问的文档数
getList String sessioncode:登陆Session码 DocInfo[]:文档对象数组 取得有权限访问的文档对象数组(无文档内容及附件)
  1. 接口调用示例

使用eclipse向导生成Web Service客户端

完成后,创建调用程序后,写入如下代码:

public static void main(String[] args) {

try {

//根据Eclipse生成的Web Service客户端程序,取得接口

DocServicePortType service = new DocServiceLocator().getDocServiceHttpPort(new URL(“http://localhost:8080//services/DocService”));

//登陆

String session = service.login(“zdp”, “1”, 0, “127.0.0.1”);

//取得有权限访问的文档数

int count = service.getDocCount(session);

 

//取得有权限访问的文档列表,第1页,每页10条记录

DocInfo[] docs1 = service.getList(session,1,10);

//取得有权限访问的文档列表,第2页,每页10条记录

DocInfo[] docs2 = service.getList(session,2,10);

//循环打印取得的文档的ID、标题、主目录ID、主目录名称、分目录ID、分目录名称、

//子目录ID、子目录名称、文档创建人ID、文档创建人名称、创建日期、创建时间

for(int i=0;i<docs1.length;i++)

System.out.println(docs1[i].getId()+”|”+docs1[i].getDocSubject()+”|”+

docs1[i].getMaincategory()+”|”+docs1[i].getMaincategoryStr()+”|”+

docs1[i].getSubcategory()+”|”+docs1[i].getSubcategoryStr()+”|”+

docs1[i].getSeccategory()+”|”+docs1[i].getSeccategoryStr()+”|”+

docs1[i].getDoccreaterid()+”|”+docs1[i].getDoccreatername()+”|”+

docs1[i].getDoccreatedate()+”|”+docs1[i].getDoccreatetime());

//根据ID取得文档内容

DocInfo doc = service.getDoc(13095,session);

//取得该文档的第一个附件

DocAttachment da = doc.getAttachments()[0];

//得到附件内容

byte[] content = Base64.decode(da.getFilecontent());

//得到附件在服务器上的绝对路径

String filepath = da.getFilerealpath();

//将附件内容转存至D:\

File file = new File(“d:\\”+da.getFilename());

try {

int byteread;

byte data[] = new byte[1024];

InputStream imagefile = null;

if(da.getIszip()==1){

ZipInputStream zin = new ZipInputStream(new ByteArrayInputStream(content));

if (zin.getNextEntry() != null)

imagefile = new BufferedInputStream(zin);

} else {

imagefile = new ByteArrayInputStream(content);

}

OutputStream out = new FileOutputStream(file);

while ((byteread = imagefile.read(data)) != -1) {

out.write(data, 0, byteread);

out.flush();

}

imagefile.close();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

//根据绝对路径转存附件(仅限与ecology系统在同一服务器上)

try {

int byteread;

byte data[] = new byte[1024];

InputStream imagefile = null;

if(da.getIszip()==1){

ZipInputStream zin = new ZipInputStream(new FileInputStream(new File(da.getFilerealpath())));

if (zin.getNextEntry() != null)

imagefile = new BufferedInputStream(zin);

} else {

imagefile = new FileInputStream(new File(da.getFilerealpath()));

}

 

OutputStream out = new FileOutputStream(file);

while ((byteread = imagefile.read(data)) != -1) {

out.write(data, 0, byteread);

out.flush();

}

imagefile.close();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

//上传附件,更新文档

content = null;

try {

int byteread;

byte data[] = new byte[1024];

InputStream input = new FileInputStream(new File(“d:\\123.pdf”));

 

ByteArrayOutputStream out = new ByteArrayOutputStream();

while ((byteread = input.read(data)) != -1) {

out.write(data, 0, byteread);

out.flush();

}

content = out.toByteArray();

input.close();

out.close();

} catch(Exception e){

e.printStackTrace();

}

da.setDocid(doc.getId());

da.setImagefileid(0);

da.setFilecontent(Base64.encode(content));

da.setIszip(1);

 

doc.setDocSubject(“test”);

doc.setDoccontent(“content”);

doc.setAttachments(new DocAttachment[]{da});

service.updateDoc(doc, session);

//上传附件,创建文档

content = null;

try {

int byteread;

byte data[] = new byte[1024];

InputStream input = new FileInputStream(new File(“d:\\123.pdf”));

 

ByteArrayOutputStream out = new ByteArrayOutputStream();

while ((byteread = input.read(data)) != -1) {

out.write(data, 0, byteread);

out.flush();

}

content = out.toByteArray();

input.close();

out.close();

} catch(Exception e){

e.printStackTrace();

}

da.setDocid(0);

da.setImagefileid(0);

da.setFilecontent(Base64.encode(content));

da.setFilerealpath(“d:\\123.pdf”);

da.setIszip(1);

 

doc.setId(0);

doc.setDocSubject(“test pdf1”);

doc.setDoccontent(“abcefghijk”);

doc.setAttachments(new DocAttachment[]{da});

service.createDoc(doc, session);

} catch(Exception e) {

e.printStackTrace();

}

}

  1. 文档对象说明
  • DocInfo

/**

* 文档ID

*/

private int id;

 

/**

* 文档类型

* 1 Html文档 2 Office文档

*/

private int docType;

/**

* 文档标题

*/

private String docSubject;

 

/**

* 文档编号

*/

private String docCode;

 

/**

* 新闻类型

*/

private int docPublishType;

private String publishable;

 

/**

* 文档版本

*/

private int docEdition;

private int docEditionId;

private String docEditionStr;

 

/**

* 文档状态

*/

private int docStatus;

private String docStatusStr;

 

/**

* 主目录

*/

private int maincategory;

private String maincategoryStr;

 

/**

* 分目录

*/

private int subcategory;

private String subcategoryStr;

 

/**

* 子目录

*/

private int seccategory;

private String seccategoryStr;

 

/**

* 部门

*/

private int docdepartmentid;

private String docdepartmentStr;

 

/**

* 语言

*/

private int doclangurage;

private String doclangurageStr;

 

/**

* 关键字

*/

private String keyword;

 

/**

* 创建

*/

private int doccreaterid;

private int doccreatertype;

private String doccreatername;

private String doccreatedate;

private String doccreatetime;

 

/**

* 修改

*/

private int doclastmoduserid;

private int doclastmodusertype;

private String doclastmodusername;

private String doclastmoddate;

private String doclastmodtime;

 

/**

* 批准

*/

private int docapproveuserid;

private int docapproveusertype;

private String docapproveusername;

private String docapprovedate;

private String docapprovetime;

 

/**

* 失效

*/

private int docinvaluserid;

private int docinvalusertype;

private String docinvalusername;

private String docinvaldate;

private String docinvaltime;

 

/**

* 归档

*/

private int docarchiveuserid;

private int docarchiveusertype;

private String docarchiveusername;

private String docarchivedate;

private String docarchivetime;

 

/**

* 作废

*/

private int doccanceluserid;

private int doccancelusertype;

private String doccancelusername;

private String doccanceldate;

private String doccanceltime;

 

/**

* 主文档

*/

private int maindoc;

private String maindocname;

 

/**

* 被引用列表

*/

private int[] childdoc;

private String[] chiledocname;

 

/**

* 文档所有者

*/

private int ownerid;

private int ownertype;

private String ownername;

 

/**

* 失效时间

*/

private String invalidationdate;

 

/**

* 虚拟目录

*/

private int[] dummyIds;

private String[] dummyNames;

 

/**

* 自定义字段

*/

private DocCustomField[] doccustomfields;

 

/**

* 关联类型

*/

private int hrmresid;

private int assetid;

private int crmid;

private int itemid;

private int projectid;

private int financeid;

 

/**

* HTML文档内容

*/

private String doccontent;

 

/**

* Office文档内容

*/

private int imagefileId;

private int versionId;

 

/**

* 是否回复文档

*/

private String isreply;

private int replydocid;

 

/**

* 附件数

*/

private int accessorycount;

 

/**

* 回复数

*/

private int replaydoccount;

 

/**

* 文档附件

*/

private DocAttachment[] attachments;

  • DocCustomField

/**

* 自定义字段ID

*/

private int fieldid;

 

/**

* 自定义字段显示类型

*/

private String fieldhtmltype;

 

/**

* 自定义字段存储类型

*/

private String fielddbtype;

 

/**

* 自定义字段类型

*/

private int fieldtype;

 

/**

* 自定义字段显示名称

*/

private String fieldshow;

 

/**

* 自定义字段值

*/

private String fieldvalue;

  • DocAttachment

/**

* 文档ID

*/

private int docid;

 

/**

* 附件ID

*/

private int imagefileid;

 

/**

* 附件名称

*/

private String imagefilename;

 

/**

* 附件描述

*/

private String imagefiledesc;

 

/**

* 附件宽度(图片文件)

*/

private int imagefilewidth;

 

/**

* 附件高度(图片文件)

*/

private int imagefileheight;

 

/**

* 附件大小

*/

private int imagefilesize;

 

/**

* 附件类型

*/

private String docfiletype;

 

/**

* 附件版本

*/

private int versionId;

 

/**

* 附件版本描述

*/

private String versionDetail;

 

/**

* 是否Office文档内容附件

*/

private String isextfile;

 

/**

* 文件名称

*/

private String filename;

 

/**

* 文件类型

*/

private String filetype;

 

/**

* 文件使用次数

*/

private int fileused;

 

/**

* 文件绝对路径

*/

private String filerealpath;

 

/**

* 文件内容Base64后编码

*/

private String filecontent;

 

/**

* 是否压缩

*/

private int iszip;

转载请注明:赫非域 » 文档(DocService)WebService接口使用说明