当前位置:文档之家› 第 3 部分:Domino 7 编写复杂的 Web 服务

第 3 部分:Domino 7 编写复杂的 Web 服务

第 3 部分:Domino 7 编写复杂的 Web 服务
第 3 部分:Domino 7 编写复杂的 Web 服务

在 IBM Lotus Domino 7 中使用 Web 服务,第 3 部分: 编写复杂的 Web 服务

Julian Robichaux, 开发人员, 独立顾问

简介:本系列介绍与 IBM Lotus Domino Web 服务相关的内容,这是系列中第三篇也是最后一篇文章,我们探讨了使用 Domino Web 服务的更高级的技术,例如复杂数据类型、枚举、文件附件(file attachment)和定制故障。

查看本系列更多内容

标记本文!

发布日期: 2007 年 1 月 04 日

级别:高级

访问情况 370 次浏览

建议: 0 (添加评论)

平均分(共 0 个评分)

本系列的第一篇文章“IBM Lotus Domino 7 中的实用 Web 服务:什么是 Web 服务以及为何如此重要 ?”涵盖了 Web 服务和 SOA 概念;第二篇文章“IBM Lotus Domino 7 中的实用 Web 服务:编写和测试简单的 Web 服务”概述了在Lotus Domino V7 中编写和测试简单 Web 服务的细节。本系列的第三篇、也是最后一篇文章探讨了在 Lotus Domino V7 中编写更为复杂(也更加有用)的 Web 服务的技术。

这篇文章中讨论的示例可在下载的 Notes 数据库中找到(参见本文末尾处的下载部分)。与上一期一样,本文中的所有代码示例都是以 LotusScript 编写的。然而,在这篇文章附带的示例数据库中有一些相同的 java 例子。数据库还包含一些样本代理,您可用它们来调用和测试 Web 服务。

关于复杂数据类型

至此,我们仅处理过简单的参数和返回值:字符串、整型、简单数组等等。我们甚至还为您展示了使用 InOut 参数返回多个值的方法。但在您开发更为精密的Web 服务时,可能很快就会发现,自己正处于需要发送和接收整个数据结构的境地之中。这往往是在 XML 文档中完成的,例如:

清单 1. XML book 结构示例

Barry Allen

Life in the Fast Lane

Biography

使用这样的结构,您可以轻松地将整个 对象作为参数或响应来回发送。甚至还可以通过以下这样的方法创建嵌套结构:

清单 2. XML bookshelf 结构示例

1

JLA Main Office

Barry Allen

Life in the Fast Lane

Biography

Bruce Wayne

Dark Times

Reference

在 LotusScript 中,可使用定制类型或类来完成这一任务。在 Web 服务中,使用一个称为复杂数据类型的对象。

确保复杂数据类型属性是按字母排序的

确保 LotusScript 复杂数据类型中的属性是按字母排序的。我们不能确定原因何在,但若 LotusScript 复杂数据类型属性不是按字母排序的,某些客户机(例如,Apache Axis 和 Apache SOAP)可能会出问题。未按字母排序的属性可能导致复杂类型中的某些数据元素在请求或响应中丢失。

LotusScript Web 服务中的复杂数据类型只是一个带有一个或多个公共属性的公共类。每个公共属性都显示为复杂数据类型中的一个元素。例如,要将 结构建模为一个 LotusScript 类,可以编写如下代码:

清单 3. LotusScript book 类示例

Class Book

Public author As String

Public booktype As String

Public title As String

End Class

这在 WSDL 文件中反映为如下结构:

清单 4. LotusScript book 类的 WSDL 复杂数据类型定义示例

请注意,数据类型名称和属性在 WSDL 文件中全部转换成大写形式。这是 Lotus Domino 借助于 LotusScript Web 服务完成的,因为 LotusScript 对于大小写不敏感,但 Web 服务是大小写敏感的。

在您的 LotusScript Web 服务中使用复杂数据类型,您可以编写带有签名的方法,如下:

清单 5. 使用 book 类的 LotusScript 方法示例

Public Function findTitle (searchString As String) As Book

本文附带的示例数据库(参见下载部分中的链接)是一个 bookstore 数据库,它利用 Web 服务来允许人们搜索、下载和上传包含与图书相关的内容的文件。这个数据库预先填充了一些来自Project Gutenberg的一些公共领域 eText 文件。

图 1 展示了此数据库中的一个档案示例

图 1. 示例 Web Services Bookstore 数据库中的一个档案

可以看到,每个图书档案都有标题、作者、图书类型、图书描述和文件附件。

数据库中有两个 LotusScript Web 服务:

?BookSearch。允许您搜索图书,并返回标题、作者、图书类型、图书描述。

?BookDownloadUpload。允许您检索关于图书的信息,包括文件附件。它还允许您上传新的图书文件。

LotusScript 内 BookInfo 类的一般结构如下:

清单 6. LotusScript BookInfo 类

Class BookInfo

Public author As String

Public description As String

Public fileName As String

Public noteID As String

Public title As String

Public typeOfBook As String

End Class

有许多数据元素映射到数据库中图书档案上的字段或关于这些档案的信息。返回的内容之一就是档案的 NoteID,以使客户机能够在接收到包含多个标题的BookInfoArray 后轻松检索其中的一个标题。

此类中还有一个 helper 方法:

清单 7. LotusScript BookInfo 类中的 getDocContents 方法

Public Function getDocContents (doc As NotesDocument) As Integer title = doc.GetItemValue(TITLE_FIELD)(0)

description = doc.GetItemValue(DESCRIPTION_FIELD)(0)

author = doc.GetItemValue(AUTHOR_FIELD)(0)

typeOfBook = doc.GetItemValue(BOOK_TYPE_FIELD)(0)

noteID = doc.NoteID

'** firstAttachmentFileName is a custom Function to get

'** the file name of the attachment on this document

fileName = firstAttachmentFileName(doc, ATTACHMENT_FIELD)

getDocContents = True

End Function

若要从此数据库中获取一个 NotesDocument 对象,并将其信息读入 BookInfo 对象的公共属性,那么这个函数是非常有用的。请注意,尽管此方法是公共的,但它不会出现在复杂数据类型定义中。对于复杂数据类型来说,仅有公共属性才是可用的。

BookInfoArray 对象的一般结构为:

清单 8. LotusScript BookInfoArray 类

Class BookInfoArray

Public bookArray() As BookInfo

Public count As Integer

End Class

bookArray 属性是一个 BookInfo 对象数组,count 属性是应包含在 bookArray 中的元素数。尽管并非绝对必要,但我们发现包含这样一个与数组相对应的count 属性是非常有用的,因为这使 Web 服务客户机可以更轻松地确定数组是否为空。它们可以轻松检查 count 是零(空)还是正数(非空)。否则,可能对一个空数组是 null 对象还是没有任何元素的数组,亦或带有一个对象且此对象包含 null 或空值的数组产生混淆。

BookInfoArray 类还有一个 helper 方法:

清单 9. LotusScript BookInfoArray 类中的 setArrayFromCollection 方法

Public Sub setArrayFromCollection (dc As NotesDocumentCollection) count = dc.Count

If (count = 0) Then

Redim bookArray(0)

Else

Redim bookArray(count - 1)

Dim doc As NotesDocument

Dim dcCount As Integer

Set doc = dc.GetFirstDocument

Do Until (doc Is Nothing)

Dim book As New BookInfo

Call book.getDocContents(doc)

Set bookArray(dcCount) = book

Set doc = dc.GetNextDocument(doc)

dcCount = dcCount + 1

Loop

End If

End Sub

soapenv:Server.generalException

LotusScript did not run to

completion.

所发生的实际错误出现在服务器控制台和 log.nsf 文件中,但遗憾的是,返回给用户的故障非常一般化,不是非常有用。

在很多情况下(即便不是所有的情况),您都希望在错误发生时生成自己的故障,否则 Web 服务无法返回值。为此,可在您的方法中添加所谓的显式处理。这需要完成以下几步:

1.确保 %INCLUDE "lsxsd.lss"行位于 Web 服务代码的 Options 部分中。

2.添加一个 WS_FAULT 参数,作为方法的最后一个参数(它必须是最后一

个参数)。

3.当错误发生时,或者在您希望向用户返回一个故障时,设置 WS_FAULT 对

象,并使用一个 Exit 函数或 Exit 子语句退出方法。

下面给出一个示例:

清单 11. 抛出一个显式 LotusScript 故障的示例

Public function stringToNumber (s As String, returnFault As WS_FAULT) As Integer

On Error Goto processError

stringToNumber = Cint(s)

Exit Function

processError:

Call returnFault.setFault(True)

Call returnFault.setFaultString(Error$)

Messagebox "Logging to console: " & Error$

Exit Function

End Function

客户机调用 stringToNumber 方法时,仅注意要传递给方法的那一个 string 对象。fault 参数是隐藏的。但若发生错误。您可将故障消息设置为所需的任何内容。在本例中,如果客户机向方法传递了一个伪值(bogus value)(例如 foo),它就会接收到如下响应:

清单 12. 显式生成的故障所返回的 SOAP 故障

soapenv:Server.generalException

Type mismatch

小技巧:使用故障生成方法

在 BookSearch和 BookDownloadUpload类中,只要需要生成一个故障,我们就会调用一个单独的方法。这使您能够在 Web 服务中出现故障时轻松添加全局日志或通知。

本例中的 元素比一般的“不运行到完成的 LotusScript”消息要更富于描述性。

关于 stringToNumber 方法中的 processError 块,还有两点值得一提: 必须使用 setFault 显式地将 fault 对象设置为 True。

?Messagebox 语句是可选的,但它显示出,您可以利用 Messagebox 语句,在 Web 服务执行的任意点将错误(或其他信息)写到服务器控制台和

log.nsf 文件。这对于简化调试或日志记录是非常有用的。

?getFirstTitleMatch。为标题与给定搜索字符串相匹配的第一本图书返回一个 BookInfo 对象。

?getAllTitleMatches。返回一个 BookInfoArray 对象,其中的所有图书都具有与给定搜索字符串相匹配的标题。

?getDocByNoteID。返回具有指定 NoteID 的图书档案的一个 BookInfo 对象。

有两个私有 helper 方法对于 Web 服务客户机是不可用的:

?throwFault。在方法需要生成故障、需要提供一个通用的创建方法、需要记录所返回的任何故障时,由方法调用。

?findDocsByTitle。返回数据库中包含与给定搜索字符串相匹配的图书档案的 NotesDocumentCollection。

尽管 findDocsByTitle 方法是一个基本的 NotesView 搜索函数,但throwFault 方法值得探讨一下。代码如下:

清单 13. LotusScript BookSearch 类中的 throwFault 方法

Private Sub throwFault (fault As WS_FAULT, faultText As String) Call fault.setFault(True)

Call fault.setFaultString(faultText)

'** do any other error logging things here...

End Sub

我们完成的任务与上文中的故障示例相同,但没有像前面那样在单个 Web 服务方法中设置 fault 属性,而是使每个方法调用此函数。这样做的好处已在函数末尾处的注释中提到:“在这里进行任何其他日志记录操作。”

使用这样的例程生成故障使您可以更轻松地提供一个中心位置,管理和记录 Web 服务中发生的故障。您可使用 Messagebox 语句向服务器控制台写入一条消息、向中心 Noteslog 写入消息,甚至是使用一个OpenLog这样的定制错误记录数

据库。在这里,处理故障的单独方法也不是绝对必要的,但使用它是一项良好的习惯。

与 BookSearch 类中的公共方法类似,这些方法的代码如下:

清单 14. 用作 Web 服务实现的 LotusScript BookSearch 类

Public Function getFirstTitleMatch (searchString As String, _

returnFault As WS_FAULT) As BookInfo

On Error Goto processError

Dim dc As NotesDocumentCollection

Set dc = findDocsByTitle(searchString)

If (dc.Count = 0) Then

Call throwFault(returnFault, "No matches found for search string: " &

_searchString)

Exit Function

End If

Set getFirstTitleMatch = New BookInfo

Call getFirstTitleMatch.getDocContents(dc.GetFirstDocument)

Exit Function

processError:

Call throwFault(returnFault, "Error searching documents: " & Error) Exit Function

End Function

Public Function getAllTitleMatches (searchString As String, _

returnFault As WS_FAULT) As BookInfoArray

On Error Goto processError

Dim dc As NotesDocumentCollection

Dim doc As NotesDocument

Set dc = findDocsByTitle(searchString)

Set getAllTitleMatches = New BookInfoArray

Call getAllTitleMatches.setArrayFromCollection(dc)

Exit Function

processError:

Call throwFault(returnFault, "Error searching documents: " & Error) Exit Function

End Function

Public Function getDocByNoteID (noteID As String, _

returnFault As WS_FAULT) As BookInfo

On Error Resume Next

Dim session As New NotesSession

Dim db As NotesDatabase

Dim doc As NotesDocument

Set db = session.CurrentDatabase

Set doc = db.GetDocumentByID(noteID)

If (doc Is Nothing) Then

Call throwFault(returnFault, "No doc found for Note ID " & noteID)

Exit Function

End If

Set getDocByNoteID = New BookInfo

Call getDocByNoteID.getDocContents(doc)

End Function

这些方法中的代码非常简短、易于理解,但有几点要说明一下:

?请注意,如果搜索为空,getFirstTitleMatch和 getDocByNoteID方法会生成一个故障,但 getAllTitleMatches仅在存在 LotusScript 错误时

生成故障。这显示出,即便未发生真正的运行时错误,我们也可以返回一

个 fault 对象。在本例中,我们也已返回了一个空的 BookInfo 对象。

?这些方法中代码的简短性展示出 BookInfo.getDocContents方法和BookInfoArray.setArrayFromCollection方法是多么有用。在复杂数据

类型类中包含这些 helper 方法不仅会使 Web 服务代码简短,还会允许

我们在一个中心位置添加或修改功能性的公共部分。

回页首

使用枚举

开始探讨 BookDownloadUpload Web 服务中的代码之前,我们需要介绍一种新的数据结构。也就是称为枚举(enumeration)的结构。

仅在 Lotus Domino V7.0.1 和更新版本中使用枚举

除非您运行的是 Lotus Domino V7.0.1 或更新版本,否则不应使用枚举。在Lotus Domino V7.0 的初始发布版中处理枚举会出现问题,该版本中期望接收或返回枚举的数据类型是错误的。版本 7.0.1 解决了这个问题。

枚举其实只是多个项的固定列表,这些项可作为一个 Web 服务方法的参数或一个复杂数据类型的元素使用。在我们的 bookstore 示例中,我们仅允许四种图书分类:

?Fiction

?Non-fiction

?Reference

?Comic book

在 Domino 表单或 Web 页面中,可以使用选择列表来控制此类输入,这样用户就无法向受限制的字段中添加随机数据类。在 Web 服务中,我们使用枚举。在WSDL 文档中,枚举的形式如下所示:

清单 15. WSDL 文档中的枚举形式示例

将参数或复杂数据类型随此类枚举一起使用的 Web 服务客户机仅能传递将枚举定义中列出的值之一作为值来传递。其他任何值都会在客户机代码中生成一个错误,如果调用了 Web 服务,则生成一个故障。

在 LotusScript 中,要生成一个枚举结构,您必须完成许多非常具体的任务。作为一个示例,下面给出了 BookDownloadUpload Web 服务中 BookType 枚举的代码:

清单 16. LotusScript BookType 枚举代码

'** These constant names MUST begin with "BookType_":

Const BookType_Fiction = "Fiction"

Const BookType_Nonfiction = "Non-Fiction"

Const BookType_Reference = "Reference"

Const BookType_Comic = "Comic Book"

'** These global variable names MUST end with "_BookType":

Dim Fiction_BookType As BookType

Dim NonFiction_BookType As BookType

Dim Reference_BookType As BookType

Dim Comic_BookType As BookType

'** This list of possible BookTypes MUST be called "Enum_BookType": Dim Enum_BookType List As BookType

'** The actual BookType enumeration class:

Class BookType

'** we MUST have a Public property called "Value",

'** of the same data type as the Const values above

Public Value As String

Public Sub Initialize (typeString As String)

Value = typeString

Set Enum_BookType(Cstr(Value)) = Me

End Sub

End Class

'** This class will initialize all the global _BookType objects.

'** Is should be called when the BookDownloadUpload class is instantiated. Class BookTypeInitializer

Public Sub New ()

Set Fiction_BookType = New BookType

Call Fiction_BookType.Initialize(BookType_Fiction)

Set NonFiction_BookType = New BookType

Call

NonFiction_BookType.Initialize(BookType_NonFiction)

Set Reference_BookType = New BookType

Call

Reference_BookType.Initialize(BookType_Reference)

Set Comic_BookType = New BookType

Call Comic_BookType.Initialize(BookType_Comic) End Sub

End Class

要在 LotusScript 中创建一个枚举,您需要完成以下任务:

1.确定枚举的名称(在我们的示例中是 BookType)。

2.为枚举中的每项创建一个 Const 全局变量,各 Const 的名称都以枚举名

称开头,后接下划线(在本例中为 BookType_xxx)。

3.为枚举中的每项创建一个全局对象,使其数据类型等同于枚举名称和各对

象名称,并以下划线后接枚举名称结尾(在本例中为 xxx_BookType)。

4.创建一个全局列表,使其数据类型等同于枚举名称,且名称以 Enum_ 开

头,后接枚举名称(在本例中为 Enum_BookType)。

5.创建一个定制类,使其名称与枚举名称相同。此类必须具有一个称为

Value 的公共属性,与第 2 步中为此枚举创建的 Const 变量具有相同的数据类型。

6.调用 Web 服务时,运行代码来以恰当的值初始化所有全局枚举对象(在

本例中是创建一个 BookTypeInitializer 类的实例来完成的)。

深入了解 BookDownloadUpload Web 服务

Web Services Bookstore 数据库中的另外一个 Web 服务就是BookDownloadUpload 服务。此服务不仅允许您检索书店中一个图书档案的相关信息,还允许您下载包含一本或多本图书的内容的文件。此外,您还可以利用此服务上传新图书。这个 Web 服务的代码中有四个主要组件:

?BookType枚举,上文已经讨论过了。

?BookInfoAndFile复杂数据类型,其中包含图书信息和文件数据。

?BookInfoAndFileArray复杂数据类型,这是一个 BookInfoAndFile 对象数组(就像 BookSearch 服务中的 BookInfoArray 类型一样)。

?BookDownloadUpload类,这是我们的 Web 服务的接口类。

Class BookInfoAndFile

Public author As String

Public base64file As XSD_BASE64BINARY

Public description As String

Public fileName As String

Public noteID As String

Public title As String

Public typeOfBook As BookType

'** instantiate the base64file object on creation

Public Sub New ()

Set base64file = New XSD_BASE64BINARY

End Sub

'** shortcut way to set the contents of the base64file field

'** from a NotesStream

Public Sub setFile (stream As NotesStream)

Call base64file.SetValueFromNotesStream(stream) End Sub

'** shortcut way to get the contents of the base64file field

'** as a NotesStream

Public Function getFile () As NotesStream

Set getFile = base64file.GetValueAsNotesStream() End Function

'** shortcut way to set the contents of the typeOfBook field

Public Sub setBookType (bookTypeString As String)

Set typeOfBook = Enum_BookType(bookTypeString) End Sub

'** shortcut way to get the contents of the typeOfBook field

Public Function getBookType () As String

getBookType = typeOfBook.toString()

End Function

'** take a NotesDocument from this database and populate the

'** values of the Public properties based on its field values

Public Function getDocContents (doc As NotesDocument) As Integer title = doc.GetItemValue(TITLE_FIELD)(0)

description = doc.GetItemValue(DESCRIPTION_FIELD)(0)

author = doc.GetItemValue(AUTHOR_FIELD)(0)

Call

setBookType(doc.GetItemValue(BOOK_TYPE_FIELD)(0))

'** custom functions to convert an attachment to a NotesStream

fileName = firstAttachmentFileName(doc, ATTACHMENT_FIELD)

Call setFile(firstAttachmentToStream(doc, ATTACHMENT_FIELD))

noteID = doc.NoteID

getDocContents = True

End Function

'** create a new document in this database, based on the contents

'** of the Public properties in this object

Public Function createNewDoc () As Integer

Dim session As New NotesSession

Dim doc As NotesDocument

Set doc = New NotesDocument(session.CurrentDatabase)

doc.Form = FORM_NAME

Call doc.ReplaceItemValue(TITLE_FIELD, title)

Call doc.ReplaceItemValue(DESCRIPTION_FIELD, description)

Call doc.ReplaceItemValue(AUTHOR_FIELD, author)

Call doc.ReplaceItemValue(BOOK_TYPE_FIELD, getBookType())

Dim rtitem As New NotesRichTextItem(doc, ATTACHMENT_FIELD)

Dim tempFileName As String

'** custom function to write a NotesStream to a temp file

tempFileName = createTempFile(fileName, Me.getFile())

Call rtitem.EmbedObject(EMBED_ATTACHMENT, "", _

tempFileName, fileName)

Call doc.Save(True, False)

noteID = doc.NoteID

Kill tempFileName

createNewDoc = True

End Function

End Class

Base64file 是一个容纳文件附件的公共属性,因此您可以将其声明为

XSD_BASE64BINARY 数据类型(在 WSDL 文件中显示为 xsd:base64Binary数据

类型)。这个 LotusScript 数据类型是在 lsxsd.lss 文件中定义的,具有两个用于获取和设置文件内容的方法:SetValueFromNotesStream和GetValueAsNotesStream。

Java Base64 编码 / 解码比 LotusScript 快得多

如果您为超过 20 KB 的文件使用了 base64 编码和解码,那么应考虑使用 Java (Java Web 服务或者 LS2J 都可以)来为您处理编码。LotusScript base64 例程处理小文件以外的任何东西都非常缓慢,特别是在解码例程时更是如此。

样本数据库中的 BookDownloadUploadWeb 服务具有一个使用 LS2J 来处理

base64 函数的示例,数据库中还有一个 BookDownloadUploadJavaWeb 服务,展示了如何在 Java 完成整个过程。

在 NotesStream 读入对象时(使用 SetValueFromNotesStream),您可以传递一个二进制或 ASCII 数据流,该类会以 base64 为您编码数据。类似地,对于存储在对象之内的文件数据,可将数据提取为二进制 NotesStream(使用GetValueAsNotesStream),它会为您处理 base64 解码。

那么,技巧就在于使用 NotesStreams。如果您向本地文件系统读或写文件,那么将文件转换成流是非常简单的(相关示例请参见 Lotus Domino Designer Help)。要将 NotesDocument 或 NotesRichTextItem 上的文件附件转换成NotesStream,必须首先分离此文件,然后将其写入一个流。类似地,要将一个NotesStream 作为附件附加到文档上,必须将此流写入一个临时文件,然后将临时文件附加到文档上。我们这个 Web 服务中定制的 firstAttachmentToStream 和 createTempFile 函数就会为您处理这一功能(参见示例数据库中的代码,了解其工作原理)。

在客户端,当一名用户发送或接收一个文件附件时,客户机代码必须处理 base64 编码,并自行解码。某些客户机(例如 Apache Axis)会为您完成这一任务。而其他一些客户机(例如 MSSOAP)可能要求您手动完成此任务。

回页首

BookDownloadUpload 类剖析

BookDownloadUpload 类与之前介绍的 BookSearch 类极为类似。它具有五个公共方法:

?getFirstTitleMatch。为标题与给定搜索字符串相匹配的第一本图书返回一个 BookInfoAndFile 对象。

?getAllTitleMatches。返回一个 BookInfoAndFileArray 对象,其中的所有图书都具有与给定搜索字符串相匹配的标题。

?getDocByNoteID。返回具有指定 NoteID 的图书档案的一个

BookInfoAndFile 对象。

?addNewFileComplex。允许客户机通过上传 BookInfoAndFile 对象创建一个新的图书档案。

?addNewFile。允许客户机通过将一本图书的所有独立元素作为多个独立的参数传递而创建新图书档案。

与 BookSearch 类相似,有两个私有 helper 方法(throwFault和findDocsByTitle)对于 Web 服务客户机不可用。

BookDownloadUpload 类的代码如下:

清单 18. 用作 Web 服务实现的 LotusScript BookDownloadUpload 类

Class BookDownloadUpload

'** initialize all the global BookType objects before we start Public Sub New ()

Dim bookInit As New BookTypeInitializer

End Sub

Public Function getFirstTitleMatch (searchString As String, _ returnFault As WS_FAULT) As BookInfoAndFile

On Error Goto processError

Dim dc As NotesDocumentCollection

Set dc = findDocsByTitle(searchString)

If (dc Is Nothing) Then

Call throwFault(returnFault, "No matches found for search string: " _

& searchString)

Exit Function

Elseif (dc.Count = 0) Then

Call throwFault(returnFault, "No matches found for search string: " _

& searchString)

Exit Function

End If

Set getFirstTitleMatch = New BookInfoAndFile

Call getFirstTitleMatch.getDocContents(dc.GetFirstDocument) Exit Function

processError:

Call throwFault(returnFault, "Error searching documents: " & Error)

Exit Function

End Function

Public Function getAllTitleMatches (searchString As String, _ returnFault As WS_FAULT) As BookInfoAndFileArray

On Error Goto processError

Dim dc As NotesDocumentCollection

Dim doc As NotesDocument

Set dc = findDocsByTitle(searchString)

Set getAllTitleMatches = New BookInfoAndFileArray

Call getAllTitleMatches.setArrayFromCollection(dc)

Exit Function

processError:

Call throwFault(returnFault, "Error searching documents: " & Error)

Exit Function

End Function

Public Function getDocByNoteID (noteID As String, _

returnFault As WS_FAULT) As BookInfoAndFile

On Error Resume Next

Dim session As New NotesSession

Dim db As NotesDatabase

Dim doc As NotesDocument

Set db = session.CurrentDatabase

Set doc = db.GetDocumentByID(noteID)

If (doc Is Nothing) Then

Call throwFault(returnFault, "No doc found for Note ID " & noteID)

Exit Function

End If

Set getDocByNoteID = New BookInfoAndFile

Call getDocByNoteID.getDocContents(doc)

End Function

Private Sub throwFault (fault As WS_FAULT, faultText As String) Call fault.setFault(True)

Call fault.setFaultString(faultText)

'** do any other error logging things here...

If (Err > 0) Then

'** Messagebox will write to log.nsf, just like a backend agent will

Messagebox LogError()

安装手册

联网单位备案巡查系统(WEB)项目 安装手册 编写: 审核: 批准: ?北京锐安科技有限公司 北京海淀区中关村南大街乙56号方圆大厦9层100044 电话:(010)58719666 传真:(010) 58719666-9588 服务电话:(010) 58719666

变更记录 *变化状态:C――创建,A——增加,M——修改,D——删除 修改点说明:对变化状态进行简单解释,如增加了某项功能,修改了某个模块等信息。 版本未通过评审前,版本号从V0.X开始,第一次评审通过后变为V1.0 版本号变化状态修改点说明变更人存放位置审批人审批日期

目录 1. 引言 (4) 1.1. 编写目的 (4) 1.2. 范围 (4) 2. 安装条件 (4) 2.1. 典型部署拓扑图 (4) 2.2. 软件环境和配置要求 (5) 3. 安装步骤和配置方法简介 (6) 4. 安装步骤 (7) 4.1. 缓冲软件安装步骤 (7) 4.2. 数据库软件安装步骤 (9) 4.3. Web系统安装步骤 (10) 4.4. 爬虫软件安装步骤 (11) 5. 卸载步骤 (13) 5.1. 缓冲软件卸载 (13) 5.2. 数据库卸载 (13) 5.3. web软件卸载 (13) 5.4. 爬虫软件卸载 (14)

1.引言 1.1. 编写目的 本手册是给实施人员或者用户的系统安装人员提供联网单位备案巡查系统(WEB)安装和配置指导,帮助实施人员或用户能够快速安装配置联网单位备案巡查系统(WEB)。 1.2. 范围 本手册描述了联网单位备案巡查系统(WEB)所需的硬件和软件环境以及软件安装的条件、方法、步骤和注意事项等内容。 2.安装条件 2.1. 典型部署拓扑图 2.2. 软件环境和配置要求 操作系统:CentOS 6.4 64bits

Tongweb安装配置手册簿

1.1L inux平台下Tongweb服务器安装 在进行安装前请确认是否已经安装1.5版本的jdk,以下安装以Tongweb 4.8为例,目前管信部4A用的也是Tongweb 4.8(不支持1.6版本的jdk)版本。JDK的安装见(6.2.1)找到Tongweb4.8安装介质所在的文件夹,如下图所示 图 1.5.1-1 安装介质路径 直接运行安装程序,如下图; 图 1.5.1-2 执行安装命令 图 1.5.1-3 正在安装 随后会显示图形安装界面,如下图所示

此时Tongweb 4.8安装成功。 注意:若执行操作后提示错误信息为: 代表权限不够,执行如下命令:chmod +x *.bin 1.2注册Tongweb服务器 复制license.dat 到安装目录,如下图所示 注:图例将Tongweb安装于root目录下,同时也可以直接将License传到安装目录。 1.3L inux平台下测试Tongweb 1.3.1.1.1.1启动Tongweb 4.8 通过终端或者第三方客户端登录到启动命令所在目录:如下图

图 1.5.1-1-1 命令目录 后台启动命令(推荐使用) sh startnohup.sh 前台启动命令(该终端或者第三方客户端关闭的话,Tongweb服务也将关闭) ./tongserver.sh 或者是 ./tongserver.sh start 如果启动服务成功则应该出现下图所示的【system ready】 图 1.5.1-2 启动成功 1.3.1.1.1.2停止Tongweb 4.8 和启动Tongweb 命令目录一样, 停止服务命令:./tongserver.sh stop 1.4访问Tongweb 安装、启动成功后访问http://127.0.0.1:8001/console会出现Tongweb的控制台,如下图所示

web服务器系统安装步骤

3#服务器安装步骤: 准备:1.系统盘;2.IBM Xseries235 驱动程序;3.OfficeXP;4.iFIX3.0及iWEBServer;5.10Users Update软盘。 开始:1.安装Windows2000 Server; 注:IBMServer安装Windows2000时需IBM引导盘进行引导安装,否则无法进行安装,安装过程中时区、语言的选择尤为重要,如果选择错误将有可能引起系统异常;引导盘安装程序是将2000安装盘上的文件复制到硬盘上进行安装的,所以中途不可再从光盘引导启动。 2.驱动程序安装; 注:当系统安装完成后,基本所有驱动程序都将被自动安装完成,这时打开设备管理器将会看到一个“未知设备”,双击“未知设备”安装驱动程序:IBM_Drivers目录中的“actpci”文件夹中。 3.系统配置(日期、时间格式); 4.系统正常运行后,利用Ghost备份系统; 5.安装OfficeXP; 6.iFIX安装; 7.配置iFIX SCU 以及host文件,配置如下: 127.0.0.1 localhost 172.16.14.11 SCADA SCADA1 172.16.14.12 SCADA SCADA2 172.16.14.13 SCADA3

172.16.14.14 FIX FIX1 172.16.14.15 FIX FIX2 172.16.14.16 FIX FIX3 172.16.14.17 FIX FIX4 172.16.14.18 FIX FIX5 注:SCU配置,报警配置:Alarm Summary Service启用、Alarm History Service启用、报警网络服务启用、报警启动队列服务启用;网络配置:按host文件中顺序添加远程节点,必须严格按照顺序;安全配置:WEB服务器可不启用安全。 配置iFIX的启动画面,“工作台”菜单下的“用户首选项”中配置工作台以运行方式启动,启动画面为:“DataTransfer.grf、rundata_oracle.grf、power_mes.grf、K9aircondition.grf”。 8.WebServer安装; 9.WebServer 10 User Update; 10.复制web页至C:\Inetpub\wwwroot\FIXPics\ 目录下,并配 置IIS服务; 注:当通过IE浏览器打开Web画面时可能会弹出:“This error’s key was AAGCGI_MaxName,and its location was parse_list”的错误,此时可通过以下方法解决:找到“C:\WINNT\AAGWEB.ini”文件,双击打开,找到“MaxName=100 MaxSamples=100”将这两项改为“MaxName=3000 MaxSamples=3000”即可。还有可能会出现aagwebdb 为只读的错误,解决方法见柳州卷烟厂动力能源管理中心

2-apache Apache_Web 服务器安装部署手册档

重要提示 Web服务器包括apache的安装部署和W AS7 Plugin安装部署两部分,如果的websphere应用服务器使用非集群模式,plugin则不需要安装,只需配置本文2.1章节内容,如果websphere 应用服务器使用群集模式,则需要按照本文2.2章节进行plugin安装配置。 1 Apache安装 Apache的安装和配置现在可以采用脚本自动化安装,脚本就是139ftp上的 apache_install_script.sh 请下载到web服务器中,并执行即可。 注意:在执行脚本安装前请确认web服务器的/opt/apache下没有安装过apache,并且web 服务器能上外网(能ping通https://www.doczj.com/doc/0617920369.html,) 成功安装apache并测试通过后即可直接继续本文第二章节Was7 Plugin安装 在root下进行root进入方法#su 然后输入密码 1.1 准备安装 关闭系统自带的web服务: #chkconfig httpd off 在线安装gcc #yum install gcc cc 下载并解压安装程序: #cd ~/ #wget https://www.doczj.com/doc/0617920369.html,/httpd/httpd-2.2.15.tar.gz #tar –zxvf httpd-2.2.15.tar.gz -C /usr/src Web 服务器安装部署手册 Page 4 of 21 1.2 安装Apache Web Server 进入源码目录: #cd /usr/src/httpd-2.2.15 编译源文件: #./configure //(安装到默认目录) 形成安装文件: #make 安装程序: #make install 1.3 验证安装 进入安装后目录: # cd /opt/apache/apache-2.2.15/bin 检查进程模式: #./apachectl –l Compiled in modules: core.c worker.c http_core.c mod_so.c 启动Apache Web Server:

WAS安装部署手册(WebSphere)

目录 一.安装准备 (3) 1. 1变量安装目录 (3) 1. 2服务器服务端口 (3) 1. 3修改hosts文件 (3) 二.安装websphere (3) 2. 1 将websphere 安装包解压 (3) 2. 2 创建概要文件 (8) 2. 3 IHS的安装 (8) 2. 4启动IHS (13) 2. 5添加webserver (13) 2. 6优化主配置文件 (14) 三. 增加并启动节点: (14) 3. 1 向管理端添加节点 (14) 3. 2 启动节点 (14) 四. 创建集群 (15) 4. 1 创建集群 (15) 4. 2 在一个集群上部署两个server, (17) 4. 3 虚拟主机 (18) 五.创建jdbc和数据源 (19) 5. 1 创建JDBC (19) 5. 2 创建数据源 (22) 六. Was参数优化 (25) 6. 1 java虚拟机 (25) 6. 2 JDBC连接池 (25) 6. 3 WebSphereApplicationServer数据源属性 (26) 6. 4 Web容器线程池 (27) 七. 部署应用 (27) 7. 1 部署应用 (27) 7. 2 生成plugin (28)

一.安装准备 1. 1变量安装目录 应用服务器: wyapp01 63.1.1.101 wyapp02 63.1.1.102 /usr/IBM/WebSphere/AppServer/ /usr/IBM/WebSphere/AppServer/profiles/AppSrv01 WebSphere 应用服务器 /usr/IBM/WebSphere/AppServer/profiles/Dmgr WebSpheer应用服务器网络部署 Web服务器: /usr/IBM/WebSphere /usr/IBM/WebSphere/Plugin Web插件路径 启动程序路径:/usr/IBM/WebSphere/bin/apchectl 主配置文件:/usr/IBM/WebSphere/config/httpd.conf 1. 2服务器服务端口 管理控制台端口:9060 应用服务端口: Pweb 9081 Eweb 9083 Mweb 9084 1. 3修改hosts文件 分别修改两台应用服务器的hosts文件 Vi /etc/hosts 添加如下内容: 63.1.1.101 wyapp01 63.1.1.102 wyapp02 61.1.1.101 wyweb01 61.1.1.102 wyweb02 61.1.1.103 raserver 63.1.1.103 wydb_src 1.4安装浏览器, Was 在aix 上安装需要浏览器支持,建议去IBM官方下载火狐浏览器二.安装websphere 2. 1 将websphere安装包解压 进到解压目录下的W AS目录,运行安装程序install.sh如下图:

Web服务器的配置指导手册

Web服务器的配置 1.Web服务器概述 2.IIS简介 3.IIS的安装 4.Internet 信息服务(IIS)管理器 5.在IIS中创建Web网站 6.网站的基本配置 7.虚拟目录 8.访问权限 9.常见问题 Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器。一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏览器访问网站中的网页了。 我们配置Web服务器,就是在服务器上建立网站,并设置好相关的参数,至于网站中的网页应该由网站的维护人员制作并上传到服务器中,这个工作不属于配置服务器的工作。 IIS简介 IIS(Internet信息服务器)是 Internet Information Server 的缩写,是微软提供的Internet 服务器软件,包括WEB、FTP、SMTP等服务器组件。它只能用于Windows操作系统。 IIS集成在Windows 2000/2003 Server版中,在Windows 2000 Server中集成的是IIS 5.0,在Windows Server 2003中集成的是IIS 6.0。IIS 6.0不能用于Windows 2000中。 Windows 9x/Me里也有IIS,但只是PWS(个人WEB服务器),功能很有限,只支持1个连接。Windows XP里也能安装IIS5.0,但功能受到限制,只支持10个连接。通常在Windows XP操作系统中安装IIS的目的是为了调试ASP等程序。 IIS的安装 一般在安装操作系统时不默认安装IIS,所以在第一次配置Web服务器时需要安装IIS。安装方法为:

电大作业 使用IIS配置Web服务器

实训1 使用IIS配置Web服务器 目的:理解Web服务及其工作原理,掌握使用IIS搭建和配置Web站点的方法与步骤。 内容:创建Web网站,对Web网站进行基本设置,设置默认网页,设置虚拟目录,通过IP地址限制访问,利用多IP地址、多端口号以及多主机头的方法在同一台计算机上创建多个Web网站,利用浏览器访问多网站。 要求:能够创建Web网站,能够对Web网站进行基本设置和管理,掌握在同一台计算机上创建多个Web网站的方法。 1. 配置任务 在网络中配置一台Web服务器,使用户可以通过完全合格域名(如sale.abc.com)来访问它上面的Web网站,具体的配置环境如实图1所示。 实图1 配置实例图 2.配置工作 (1)配置Web服务器 在IP地址为192.168.1.1的计算机上执行以下工作。 1)安装IIS 步骤1:单击[开始]→[设置]→[控制面板]→[添加或删除程序]→[添加/删除Windows

组件]。 步骤2:选择[应用程序服务器],然后单击[详细信息]按钮。 步骤3:选择[Internet信息服务(IIS)],然后单击[确定]按钮。 步骤4:单击[下一步]按钮,系统复制相关文件后,单击[完成)按钮。 这样就完成了IIS的安装过程: 2)建立Web站点 步骤1:单击[开始]→[程序]→[管理工具]→[Intemet信息服务(IIS)管理器]。

步骤1:右键单击[网站],在弹出的快捷菜单中单击[新建]→[网站]。 步骤3:在出现“网站创建向导”窗口时,单击[下一步]按钮。

步骤4:在“网站描述”界面中输入该网站的描述文字(如Web网站1),然后单击[下一步]按钮。 步骤5:在“IP地址和端口设置”界面中的[网站IP地址]处选定这个网站使用的IP地址“192.168.1.1”,在[网站TCP端口(默认值:80)]处输入端口号“80”,在[此网站的主机头(默认:无)]处输入一个主机头名称“sale.abc.com”,然后单击[下一步]按钮。

Tongweb安装配置手册

1.1 Linux平台下Tongweb服务器安装 在进行安装前请确认是否已经安装1.5版本的jdk,以下安装以Tongweb 4.8为例,目前管信部4A用的也是Tongweb 4.8(不支持1.6版本的jdk)版本。JDK的安装见(6.2.1)找到Tongweb4.8安装介质所在的文件夹,如下图所示 图1.5.1-1 安装介质路径 直接运行安装程序,如下图; 图1.5.1-2 执行安装命令 图1.5.1-3 正在安装 随后会显示图形安装界面,如下图所示

此时Tongweb 4.8安装成功。 注意:若执行操作后提示错误信息为: 代表权限不够,执行如下命令:chmod +x *.bin 1.2 注册Tongweb服务器 复制license.dat 到安装目录,如下图所示 注:图例将Tongweb安装于root目录下,同时也可以直接将License传到安装目录。 1.3 Linux平台下测试Tongweb 1.3.1.1.1.1 启动Tongweb 4.8 通过终端或者第三方客户端登录到启动命令所在目录:如下图

图1.5.1-1-1 命令目录 后台启动命令(推荐使用) sh startnohup.sh 前台启动命令(该终端或者第三方客户端关闭的话,Tongweb服务也将关闭) ./tongserver.sh 或者是./tongserver.sh start 如果启动服务成功则应该出现下图所示的【system ready】 图1.5.1-2 启动成功 1.3.1.1.1.2 停止Tongweb 4.8 和启动Tongweb 命令目录一样, 停止服务命令:./tongserver.sh stop 1.4 访问Tongweb 安装、启动成功后访问http://127.0.0.1:8001/console会出现Tongweb的控制台,如下图所示

Web服务器与FTP服务器安装配置

Web与FTP服务器的安装与配置 一、实验目的 1.在WINDOWS2000 SERVER服务器上建立WEB服务器。 2.在WINDOWS2000 SERVER上安装Apache服务器。 3.在WINDOWS2000 SERVER服务器上建立FTP服务器。 4.掌握SERVER-U建立FTP服务器的方法。 二、实验任务 1.熟悉WEB服务器和FTP服务器的工作原理及配置方法。 2.独立配置一台WEB服务器和FTP服务器。 3.使用Serv-u配置FTP服务器。 三、实验设备与环境 安装有WINDOWS 2000操作系统的计算机。(如果没有,WindowsXP也可以) 四、相关知识 (一)服务器基本知识 随着Internet的发展,传统的局域网资源共享方式已不能满足人们对信息交换、浏览和查询等多方面的需求,用Internet的工作方式改变传统局域网的操作已显得非常必要。 在Windows NT中,微软已经为Windows NT Server开发了一套集Web服务和FTP服务为一体的整套服务器软件,这就是IIS(Internet Information Server)。在Windows 2000 Server中的IIS版本为5.Oc(其中的c表示为中文版)。 IIS5.Oc是一套集Web服务、FTP服务、SMTP服务和NNTP服务为一体的服务器软件。 Web服务提供了Internet的相关服务,用它可以设定网页的存取权限,执行CGI(Common Gateway Interface)和ASP(Active server Page)程序,也可以在同一台服务器上架设多个Web站点,是一套完整的Web服务器软件。 SMTP简单邮件传输协议服务(Simple Mail Transfer Protocol)可以提供对外邮件的服务,担任电子邮件的向外发送和接收工作。 NNTP网络新闻协议服务(Network News Transfer Protocol),应用它可以架设一个虚拟的电子新闻服务器,提供发布新闻信息的功能。 本实验的目的是介绍如何应用IIS5.C在Windows 200O Server服务器上建立Web服务器和FTP服务器的方法。 通过Web服务器,用户可以在局域网或Internet上以网页的形式发布信息; 通过FTP服务器,可实现服务器和客户机之间的快速文件传输。 (二)Serv-U的使用 参考FTP服务器端软件Serv.doc 五、实验方法 (一)安装IIS5.0C组件

Windows2003WEB服务器安装及设置教程

Windows2003WEB服务器安装及设置教程 本安装及设置教程适用于使用Windows2003为操作系统的服务器,目的是让服务器支持常见网络编程语言包括ASP、PHP、.Net1.1、.Net2.0,支持常见数据库包括Access、MySQL、MSSQL,支持FTP,支持常见组件包括Aspjpeg、Jmail、LyfUpload、动易、ISAPI_ReWrite。 本教程共分八篇:系统安装与设置篇、软件安装与设置篇、文件及文件夹权限篇、系统服务篇、安全策略篇、系统组件篇、注册表篇、软件安全篇。本篇讨论的是第一篇:系统安装与设置 一、系统准备 需要的软件:Windows2003原版安装文件、Windows2003补丁集、服务器硬件驱动、SQLSERVER2000安装文件、SQLSERVER2000SP4,MySQL 安装文件,PHP安装文件,ZendOptimizer安装文件,Serv_U(可选),Aspjpeg,Jmail,LyfUpload,动易组件,ISAPI_ReWrite,GHOST。 Windows2003和SQLSERVER2000安装文件可以购买正版光盘或其他途径获得。Windows2003最好是原版,SQLSERVER2000可以选择企业版或者标准版。 Windows2003补丁集包括Windows2003SP2和SP2后的补丁。先从微软网站或其他下载站下载Windows2003SP2,再从下载站下载Windows2003SP2补丁集,现在(2008年2月)已经可以找到包含至2008年2月份之前所有补丁的补丁集。

SQLSERVER2000SP4可以直接从微软网站下载获得,或者从下载站下载获得。 服务器硬件驱动应该在购买服务器的同时附带了。 MySQL安装文件,PHP安装文件,ZendOptimizer安装文件可以到其官方网站免费下载,或到其他下载网站获得。 Serv_U,Aspjpeg,Jmail,LyfUpload,动易组件,ISAPI_ReWrite 和GHOST等均可以通过购买或者其他途径来获得。 二、系统安装 分区 服务器的硬盘是250G,分成了4个区,C盘做系统盘(20G),D盘做数据库和软件盘(60G),E盘做网站目录(120G),F盘做备份盘(40G),以NTFS格式对4个区进行格式化。 注:还有10G哪里去了?其实硬盘出厂是以1000进制算的容量,而电脑是以1024进知算的,所以会有差值硬盘越大,这个差值也越大。 安装系统 启动服务器,设置BIOS为光盘启动,重启,插入Windows2003安装盘至光驱中,根据提示安装Windows2003操作系统。具体安装过程图解见windows2003-install/">https://www.doczj.com/doc/0617920369.html,/juyo/original/win dows2003-install/

服务器操作安装手册

第一步:安装前BIOS设置 服务器开机之后,提示画面按DEL,进入bios,了解CPU配置是否处于正常状态,(可选非必须操作) 问题:CPU超线程选项是否打开Hyper-threading 是否打开状态 问题2:为什么核心数不够? 解决:BIOS Advanced——Active Processor cores 活动处理器内核,是否为ALL即启动全部核心 问题3:KVM模块无法加载? 解决:Intel Virtualization Technology intel虚拟化技术是否启用。 问题4:CPU的性能无故偏低?(必须要操作) 解决:进入CPU Power Management Configuration 处理电源管理配置 选择Power Technology 应该选择Disable状态。 Energy Performance 电源性能选项应该为:Performance 高性能模式

虚拟机IO性能: Intel(R) VT-d Enabled状态虚拟化直通IO Intel(R)I/OAT Enabled状态Intel IO加速技术 系统引导: 设置系统引导为U盘启动 Linux系统安装在机械盘,SSD盘用于存放模板引导1:U盘 引导2:机械盘 保存退出,BIOS设置完毕。

第二步:服务器安装linux底层操作系统用光驱或USB启动后 选择语言界面: 选择English——回车 下一步:安装菜单界面 选择第一项:安装ubuntu服务器——回车 选择安装过程语言: 选择English——回车

选择国家或地区 选择other——回车 下一步:选择亚洲服务器 选择Asia——回车 下一步:选择国家

Web服务器安装部署配置说明

四川省两化融合项目申报系统 WEB 服 务 器 安 装 部 署 配 置 说 明

1.服务器配置 1.1.硬件配置 CPU:双核主频3.0及以上 内存:4G 网卡:1000M网卡 硬盘:500G或以上。硬盘空间根据上传附件数量大小而定,上传附件越多,对硬盘空间需求则越大。 1.2.软件配置 操作系统:Windows Server 2003及以上版本 系统运行所需软件:Postgresql 9.0 + JDK1.6 + Tomcat 2.软件安装说明 2.1.J VM虚拟机 到JAVA官网下载1.6或以上版本JDK。安装JDK以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\Program Files\Java): JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool s.jar;(.;一定不能少,因为它代表当前路径) path=%JAVA_HOME%\bin 2.2.Tomcat安装

到Tomcat官网下载6.0或以上版本Tomcat。此处下载解压压缩版。将apache-tomcat-6.0.33-windows-x86.zip解压到D盘根目录下,解压好后,配置环境变量。在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat解压到D盘跟目录下): CATALINA_HOME:D:\apache-tomcat-6.0.33 CATALINA_BASE:D:\apache-tomcat-6.0.33 TOMCAT_HOME: D:\apache-tomcat-6.0.33 在classpath下追加%CATALINA_HOME%\lib\servlet-api.jar; 此时classpath应为classpath=.;%JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-a pi.jar; 备注:Tomcat默认启动端口为8080,如需修改为浏览器默认端口,请将server.xml文件中port="8080"修改为"80"。 2.3.数据库安装 到Postgresql官网下载9.0版本数据库。安装完成后,打开pdAdmin,在登录角色中新建角色。角色名称:prs 密码:prs 勾选所有角色权限,点击确定按钮。在数据库中右键新建对象-》新建数据库,名称:prs 所有者:prs 字符编码:UTF8 模版:postgres 点击确定按钮。 2.4.系统部署 将项目拷贝到Tomcat中webapps文件夹中,双击Tomcat中bin

相关主题
文本预览
相关文档 最新文档