domino大百科常见问题总汇2
31、Q:当管理员被开除后带走所有的ID,你该怎么办?
1.在ADMIN的配置中的验证菜单内的标识符属性中更改user和cert口令。
2.服务器文档的“安全性”里
设置比较和记录“与保存在通讯录中的Notes
公用密钥比较”启用。
容许匿名的连接否、“校验Notes
标识符口令”起用
3.在个人和群组中的个人设置中设置“校验Notes标识符口令”。
4.在个人和群组中的设置中设置“校验Notes标识符口令”。
5.创建新的公钥
32、我们做为管理员应该做些什么?
此表列出了系统管理员每天、每周或每月应当完成的服务器维护任务,以确保服务器高效运行。任务
频率
备份服务器每天、每周、每月
监控文件路由每天
运行Fixup任务以修复所有被毁坏的数据库*
服务器启用和需要时
监控共享邮件数据库(MAILOBJ.NSF)每天
监控Administration Requests数据库
(ADMIN4.NSF)每周
监控需要维护的数据库每周
监控复制每天
监控调制解调器通讯每天
监控内存每月
监控磁盘空间
每天、每周、每月
监控服务器负载每月
监控服务器性能每月
监控Web服务器请求每月
监控服务器群集每天
*
如果数据库为Domino R5格式数据库并且没有使用事务记录,则可以使用Fixup任务修复损坏的数据库。如果数据库为Domino R5
格式数
据库并且使用了事务记录,则无法在此数据库上运行Fixup任务,这是因为Fixup
任务干扰事务记录保持数据库跟踪。必须从备份恢复损坏
的数据库。仍可以在Domino R4.x和更低格式的数据库上运行Fixup
任务。
33、关于定时关闭服务器的方法
在服务器配置,-》程序,
添加程序,在
程序中输入server
或nserver
命令中输入-q或-c
quit
在定时安排中,设置执行的时间就可以了。
34、id被盗记录
domino有个记账服务(billing),该服务可以记录所有访问这台domino的客户端信息,当然包括ip地址。就不用再用其他的工具了。
35、怎样设计表单来跟踪文档的作者?
在表单上加一个隐藏的共享域,其名字可以为from运行公式为:@If(@IsNewDoc ; @UserName;
From),这样这个域就记录了这片文档的作
者了。
36、在调试Lotus
Domino程序时,经常会触发执行qnc.exe程序并退出Notes,如何解决?
答:在调试Lotus
Domino/Notes程序时,由于程序设计的问题,我们经常会触发执行qnc.exe程序,并提示错误。其实qnc.exe执行目的只
是Notes的内存保护性措施,并不一定是程序本身有错误。为了便于调试程序,我们可以在Lotus
Domino指令窗口内键入qnc _u,使其暂停运行
。如果想恢复时可以再用qnc _i指令装载它。
37、在R5中如何将一个Domino
Web服务器配置为多个Web站点--虚拟服务器
解答您可以将一个Domino Web服务器设置为多个虚拟服务器,这样一个Domino
Web服务器就可以有多个Web站点.在配置虚拟服务器之前,您
必须设置每个虚拟服务器的网络连接.在R5中每个虚拟服务器可以有自己单独的IP地址,或多个名字映射到同一个IP地址.Domino不限制虚拟
服务器的数量,该数量主要决定于操作系统和系统硬件
**注意:在R4.6中每个虚拟服务器必须有自己单独的IP地址.
下面介绍如何创建虚拟服务器文档:
1.管理员启动Domino
Administrator软件,点击"配置"标签
2.选择视图"服务器"--"所有服务器文档",选中您想创建虚拟服务器的服务器文档
3.
点击上边的按钮"web"--"创建虚拟服务器"
4.选择"虚拟服务器",然后点击"确定"按钮
5.在"基本"标签下,完成以下域:
1) IP地址:该虚拟服务器使用的IP地址
2)主机名:(可选)该虚拟服务器的主机名
3)
缺省主页:(可选)当用户访问该虚拟服务器时显示的HTML文件,只有当"主页URL"域为空时该域才起作用.
6.点击"映射"标签,完成以下域:
1)主页URL:当用户访问该虚拟服务器时执行的URL命令,可以显示一个数据库或服务器上的数据库列表.该域的优先级比"缺省主页"域高.
2)
在剩下的域中填写其它文件的目录
7.点击"安全性"标签,为该虚拟服务器设置安全性选项.
8.保存该文档
9.
在服务器控制台上,输入命令tell http restart,重新启动http服务.
如何显示虚拟服务器文档:
管理员启动Domino
Administrator软件,点击"配置"标签,选择视图"web"--web服务器配置,则可以看到虚拟服务器文档,该文档是作
为服务器文档的答复文档出现的.
38、怎么记录用户退出
答:用LOTUS的unload事件,是在离开当前页面或关闭浏览器时激活,用这个事件给服务器发送一个url告知服务器就行了。这种方法可以最精
确的记录用户的登出时间。用会话就不那么精确了,因为它有一定的活动期,只有超时了才会记录。至于登陆信息定制domlog.nsf数据库的表
单。(主要是登录用户的信息)定制domlog.nsf数据库的视图。取到你需要的记录。
39、将一个普通html中的表单提交给notes数据库,用html中form的Action可以指定notes的某个代理。
html的表单这样写:
<form.
name=form1 action="<A
href="http://servername/path/dbname.nsf/agentname">http://servername/path/dbname.nsf/agentname"
method=get>
<!--method必须是get!-->
<><INPUT id=text1
name=openagent></P>
<!--第一个的name必须是openagent!-->
<><INPUT
id=text2
name=text2></P>
<!--可以在加若干个input!-->
<><INPUT
id=submit1 type=submit value=Submit
name=submit1></P>
</form>
代理这样写:
1.共享代理
2.运行代理的时间选择:从代理列表中选择执行
3.指定代理操作的文档选择:数据库中的全部文档
4.LotusScript.:
Dim
s As NotesSession
Set s = New NotesSession
Dim str as
String
str=s.documentcontext.query_string_Decoded(0)
'这个得到html表单中提交的所有域(文本匡等)输入的数据,包括域名称和域的内容
Print
str
'你可以根据这个str生成一个new document,根据内容加入域
40、Notes数据库中文件夹和视图的限制
解答
实际上产品本身并没有一个预设定的限制,只是受可用句柄(handle)数目的限制.
句柄(handle)数目的上限是10495.当库中的文件夹和视图数
目接近限制时,Notes会报内存溢出方面的错误,类似下面的这些错误信息:
对于Notes
R5.X
"Maximum number of memory segments that Notes can support has been
exceeded"
对于NotesR6.X
"Insufficient memory - too many design elements
(Desk Design Pool)."
当如果一个数据库中包含了很多文件夹, Notes将会为每一个视图或者文件夹分配内存.最终,
Notes将无法获得足够的内存,因为它无法跟踪获
得所有内存的位置信息.(根本原因就是最大句柄数的限制.)
可选择的规避办法就是在数据库中将文件夹和视图的数目维持在合理的范围之内.或者缩短文件夹或者视图名字的长度.
41、服务器备份范围
保存原始Domino\Data目录的cert.id
server.id names.nsf log.nsf certlog.nsf
应用数据库
mail目录等数据库内容、保存原始
Notes\Data目录的user.id。
备份domino\notes.ini文件、备份数据库(在domino\data下):
*.dsk、names.nsf、admin4.nsf、bookmark.nsf、busytime.nsf、catalog.nsf、certlog.nsf、certsrv.nsf、events4.nsf、log.nsf
mail*.box、mail\*.*、nntppost.nsf、statmail.nsf、statrep.nsf、webadmin.nsf、所有IDs:
*.id\备份 setup.nsf数据库
42、HTTP提交附件限制(在ADMINISTRATOR中的INTERNET协议中)
1)HTTP书签里HTTP协议限制里的请求内容的最大大小
2)DOMINO
WEB引擎里的POST数据里
43、实现批量刷新数据库设计
1、首先要在配置或管理数据库中建立有关数据库的文档。
2、建script库,“RefrshDesign”
Declare Function W32_NSFDbOpen Lib
"nnotes.dll" Alias "NSFDbOpen" _
( Byval dbName As String, hdb As Long) As
Integer
Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose"
_
( Byval hdb As Long ) As Integer
Declare Function W32_DesignRefresh
Lib "nnotes.dll" Alias "DesignRefresh" _
(Byval Server As String, Byval hdb
As Long, Byval dwFlags As Long, _
Byval null0 As Long, Byval null1 As Long)
As Integer
Dim hDB As Long
Dim ret%
3、在建好的数据库信息的视图上选择若干文档,点击视图操作。
Dim session As New notessession
Dim ws As New notesuiworkspace
Dim
view As notesview
Dim db As notesdatabase
Dim dc As
notesdocumentcollection
Dim doc As notesdocument
Dim fullname As String
Dim TemplateServer As String
Dim i As Integer
TempLateSever =
"*********/OA" '--模板所在服务器的名称
Set db = session.currentdatabase
Set view =
ws.currentview.view
Set dc = db.unprocesseddocuments
If dc.count
<> 0 Then
If Msgbox("确定用模版服务器刷新指定数据库的设计?",48 + 4,"操作提示:") = 7 Then
Exit Sub
End If
For i = 1 To dc.count
Set doc =
dc.getnthdocument(i)
fullname = doc.database_server(0) + "!!" +
doc.database_dir(0) & "/" & doc.database_filename(0)
If fullname
<> "" Then
rc = W32_NSFDbOpen(fullname,hDb)
If rc = 0 Then
'Print "Refreshing Design of" & doc.database_name(0) & "......"
Call W32_DesignRefresh(TempLateSever, hDb, 0,0,0)
rc =
W32_NSFDbClose(hDb)
'Print "ok!"
Else
End If
End If
Next
End If
44、对门户网站邮件拒收的确认信
以下是新浪对我公司邮服拒收的处理:
尊敬的用户pennykristy:
您好!
十分抱歉给您带来的不便,您的问题可以用以下方法解决:
如果您是别的网站的邮箱管理员,贵网站的邮箱给新浪发邮件发不过来,请您用贵网站的邮箱给我们的工程师发一封邮件,主题是:有关给新
浪免费邮箱发信问题
在邮件内容中,请写明:单位名称、发件服务器IP地址、联系方法、联系人、邮件地址、电话、地址,发送给<A
href="mailto:mailmaster@staff.sina.com.cn">mailmaster@staff.sina.com.cn
工程师会和您联系的。
希望我们的回答能令您满意!
若还有问题,请您注意回信的时候一定要将上次回信附上,以便解决您的问题。
更多常见问题答疑请见:<A
href="http://tech.sina.com.cn/focus/sinahelp.shtml">http://tech.sina.com.cn/focus/sinahelp.shtml
谢谢您对新浪的支持
<A
href="mailto:webmaster@vip.sina.com">webmaster@vip.sina.com
2005-05-18
17:22:42
13号客服专员竭诚为您服务
新浪全国统一服务热线95105670(免长途费)
45.批量刷新邮件设计
load convert mail\*
mail6.ntf
46、如何更改验证者标识符(Cert.id)的口令
Administrator——>“配置”的页面,在右面“工具”的菜单中,打开“验证”。选择“标识符属性”。选择并打开验证者标识符(Cert.id)。
输入原口令,如输入正确则打开当前验证者标识符(Cert.id)的用户标识符对话框。在“基本”的页面中,选择“设置口令”。此时,就可以
输入新的口令,并再次确认。最后,点击“确定”即可。
47、管理单个数据库中的多语言输入
可以向任意的URL命令中添加charset=[MIME charset name]
参数来返回指定字符集中所要求的表单或页面,而不管浏览器中设置的首选语
言。服务器不能自动生成charset=[MIME charset name]
参数。它必须内置在应用程序中。
语法
[url=http://Host/Database/FormName?OpenForm&charset=[MIME]http://Host/Database/FormName?OpenForm&charset=[MIME[/url]
charset
name]
这里:
FormName是被打开的表单名称。
[MIME charset name]
是将用于返回的目标表单的字符集名称。
用法
charset=[MIME charset name]参数将覆盖表单中的
$$HTMLContentLang域。有关使用$$HTMLContentLang域启用多字符集以便用于数据库
输入的信息,请参阅《Lotus
Notes,Domino and Designer Release Notes -- Release
5.0.2》中的“管理单个数据库中的多语言输入”。
样例
某公司的销售人员分布在**、**和俄国。要求每个职员每月向某个单一数据库中提交一份业绩摘要。如果返回摘要表单的
URL命令使用
charset=[MIME charset name]
参数,则销售人员可以使用同一数据库中的英语、日语和俄语字符集。服务器接到命令后,它将返回指定字符
集中的目标表单。将返回使用日语字符集的目标表单的URL
命令显示如下。
<A
href="http://www.mercury.com/sales.nsf">http://www.mercury.com/sales.nsf...
m&charset=Shift_JIS
48、修复损坏数据库的方法
如果在数据库中遇到损坏,可以使用以下任何一种方法来尝试修正问题。由于损坏对记录的
R5数据库并不是大问题,这些方法主要用来解决
R4数据库和未记录的R5数据库中的损坏问题。
运行Fixup
修正损坏的视图和文档。
运行Updall修正损坏的视图和全文索引;如果视图损坏,请在运行Fixup之前运行Updall。
运行
Compact修正Fixup没有纠正的损坏问题;如果数据库是R5数据库,使用-C选项。
按SHIFT+F9键重建一个视图;按
CTRL+SHIFT+F9键重建数据库中的所有视图。
49、为Web定制“表单已处理”确认信息
Web
用户提交文档后,Domino使用缺省的“表单已处理”的确认信息回应用户。要重新设置缺省答复,可将计算文本域添加到表单中,给此域
命名为
$$Return,并使用HTML作为计算值来创建定制的批准。
显示个人化答复
下面的$$Return公式返回答复“Thank
you”,并附加上用户姓名:
who:= @If(@Left(From; " ") = ""; From; @Left(From; "
"));
@Return("<h2>Thank you, " + who +
"</h2><br><h4>
<a
href=/register.nsf/Main+View?OpenView>Main
View</a>");
50、显示定制的错误消息
要定制显示给Web
用户的错误消息外观,向数据库中添加定制的错误消息表单。如果发生错误条件,且其定制表单存在,则Domino
使用定制
表单来显示错误消息。否则,Domino
使用缺省错误消息表单。添加到数据库的消息表单将覆盖由管理员设置的服务器范围内的消息。
要在表单和错误条件之间创建关联,创建拥有下列名称之一的表单。然后创建名为
MessageString的可编辑的文本域来保存错误消息。添加要
与错误消息一起显示的其他文本、链接以及其他表单对象。表单名称
条件
$$ReturnAuthenticationFailure不能校验用户名称和口令。
$$ReturnAuthorizationFailure
用户对该数据库没有足够的存取级别。
$$ReturnDocumentDeleted成功删除文档。
$$ReturnGeneralError
出现了其他错误条件。
链接到另一页面
根据提交文档中的域值,在HTML中包括链接到另一页面的URL。下面的$$Return
公式根据用户选择的范围返回答复。例如:如果用户选择
欧洲,则消息“在意大利访问我们的站点”将显示一个链接,可链接到意大利的Web
站点(假定公式中的“stdAnswer”和“stdFooter”已预
先定义。)。
@If(Region="Asia"; stdAnswer +
"<h2>Visit our site in <a href=\"<A
href='http://www.japan.lotus.com\">Japanhttp://www.japan.lotus.com\">Japan</a></h2>"
+ stdFooter;
Region="Europe"; stdAnswer + "<h2>Visit our site in <a
href=\"<A
href='http://www.lotus.com\it_ciao/it_ciao.htm\">Italyhttp://www.lotus.com\it_ciao/it_ciao.htm\">Italy</a></h2>"
+
stdFooter;
stdAnswer + stdFooter);
返回另一页面
要跳转到不同的Web页面,可将页面的
URL用括号括起来放入页面。当用户提交文档时,Web客户机将显示引用的文档。例如:下面的
$$Return公式显示Lotus
**站点的主页。
"[http://www.japan.lotus.com]"
51、如果希望帮助用户快速创建和阅读文档,请在设计表单时参照以下指导进行:
设计表单
避免使用大的位图或图形。
避免使用表单属性“自动刷新域”。
相反,请对所选的域使用“按关键字变化刷新域”,或者编写一个
LotusScript.域事件,当用户从特定域移出时重新计算文档或更新其他域。
避免使用包含大量计算域的长表格。
设计域
尽量少用
@DbColumn或@DbLookup公式,或者将它们替换为更快的并支持查错的LotusScript.
程序。
在“条件隐藏”的条件中使用简单公式。
可能的话,避免重新计算域。否则,将这些域修改为“填写时计算”,使它们仅在文档被编写时计算,但是需要的话,可以在将来通过按钮、
操作或代理更新。
在域中使用
LotusScript.表单事件而不使用条件公式来设置域值。
例如:要在文档被保存时重新设置状态域,可以为QuerySave事件创建一个
Script,而不必编写一个使用@If(@IsDocBeingSaved;"x";"y")
的公式。
精简域的数目,特别是隐藏域的数目,使用表单事件而不是域公式来执行逻辑处理并避免不必要的重新计算。
例如:假如表单包含一个隐藏的计算域
State,该域确定文档处于工作流中何处以及需要被发送到何处。通过在QuerySave表单事件中设置域
值的LotusScript.
程序来替换此域,可以仅在文档被保存时设置域值,而在文档打开或刷新时不设置域值。
52、代理、servlet和CGI程序的比较
代理、servlet和CGI程序都允许对Domino Web应用程序的功能进行扩展。代理可以通过表单WebQueryOpen和
WebQuerySave事件与Web
应用程序紧密集成。Servlet通过Servlet API类可以获得一些特殊功能,如会话和Cookie
管理。由于Java日益受到人们的青睐,现今使
用servlet而不是CGI程序来开发新产品已成为大势所趋。但是,许多现有的CGI
程序仍在使用。
如果正在编写自己的应用程序并需要为服务器上的某些功能编程,则需对使用哪种类型的程序的选项作出选择。每种类型的程序均有各自的优
点而且可能成为特定情形下的最佳选择。以下是对每种程序类型的使用建议:
程序类型
最佳用途
代理读取或邮寄文档时执行Domino操作的程序。需要按预定时间或当数据库操作发生(如新邮件到来)时运行的程序。
Servlet
使用标准Java接口(如JDBC)的程序。使用HTTP会话维护或Cookie的程序。复杂或资源密集型Java程序。
CGI程序
需要对系统资源进行低级别访问的程序。通过非Java API与其他产品连接的程序。
以下对这些程序的属性所作的比较对程序的选用很有帮助。
程序可使用哪种语言进行编写?
代理:Java、LotusScript.或Notes
公式语言。这些语言本身均可跨平台使用。
Servlet:Java。本身可以跨平台使用。
CGI
程序:平台脚本语言,即任何能够编译为可执行文件的语言或跨平台的语言(如Java或Perl)。
程序存储在什么位置?
代理:存储在Domino
数据库中,这意味着代理可以利用数据库复制和群集服务器的功能。
Servlet:存储在文件系统中,通常是domino\servlet目录。
CGI
程序:存储在文件系统中,通常是domino\cgi-bin目录。
程序以什么方式被Web用户调用?
代理:由WebQueryOpen或
WebQuerySave事件自动调用,或者由OpenAgent
URL(如“http://acme.com/sales.nsf/results?OpenAgent”)
直接调用。代理还可由服务器事件(如新邮件的到来)或预先的定时安排来触发。
Servlet:直接由
URL调用。Domino可识别两种类型的servlet的URL。第一种类型通过名称指定
servlet(例如:
“http://acme.com/servlet/SQLDatabaseQuery?month=june”)。第二种类型指定一个
Domino管理员已经映射到servlet
的文件扩展名(
例如:“http://acme.com/sqlquery.esp?month=june”)。
CGI程序:直接由URL
调用(例如:“http://acme.com/cgi-bin/filesearch?string=widget”)。
服务器何时将程序载入或卸载?
代理:每次调用时装入,执行完毕后卸载。
Servlet:一次性装入;HTTP
任务关闭或重新启动时卸载。与代理或CGI程序相比,这一性能使servlet具有很大的优越性。但是,这也意
味着可以通过多个请求同时访问
servlet类,因此必须保证servlet代码的线程安全性。
CGI程序:每次调用时装入,执行完毕后卸载。
程序与Domino
的交互方式
代理:LotusScript.和Java代理可使用Domino对象类。公式代理可使用大多数
@function。
Servlet:可通过CORBA (Common Object Request Broker Architecture)接口访问
Domino。
CGI程序:可通过CORBA接口或通过Domino C或C++ API访问
Domino。
程序可获得哪些安全性保障?
代理:要调用代理,Web
用户必须对包含该代理的数据库具有“存放者”或更高存取级别。代理可以以其创建者或用户的身份运行。Domino
的
所有安全特性均适用于由代理执行的操作。
Servlet:对服务器小程序的访问可由“Domino目录”中的文件保护文档来控制。如果小程序通过
CORBA接口访问Domino,则可以指定一个
Domino用户名和Internet口令。Domino的安全性适用于所有CORBA
操作。
CGI程序:对该程序的访问可由“Domino目录”中的文件保护文档来控制。如果程序通过C API来访问
Domino,则会使用服务器标识符。如
果程序使用CORBA接口,则可以指定用户名和Internet口令。两种情况下,均可应用Domino
的安全性。
53、在Domino中运行servlet
样例
编写servlet
要编写servlet,需要一个
Java编译器和servlet的API。二者均可从Sun Microsystem的网站<A
href="http://java.sun.com">http://java.sun.com上获得。可下载
Java Development
Kit (JDK)(其中包含编译器和其他基本工具)和Java Servlet Development Kit (JSDK)(其中包含servlet API
的规范
、servlet的.JAR文件(jsdk.jar)和样例服务器小程序)。Sun站点还提供到Web上其他servlet
资源的链接。
还可以使用各种流行的Java开发环境来编写servlet。为了提供方便,Domino服务器和Designer安装程序中包含
jsdk.jar文件的拷贝。
这与Sun的JSDK提供的文件是完全一样的。
Sun定期更新JDK和JSDK。Domino 5.0
支持JDK 1.1.6和JSDK 2.0。Domino的季度维护版(QMR)经常会结合Sun的升级内容,因此应
该检查QMR
的版本注释以检验被支持的JDK和JSDK版本。
启用Domino支持的servlet
Servlet是由Domino Java
Servlet Manager(HTTP服务器任务的一部分)来装入和调用的。Java支持servlet的运行时间是由Domino
Java
Virtual Machine (JVM)提供的。HTTP任务启动时,可以自动启动服务器小程序管理者并装入JVM。HTTP
任务将把这些操作的状态信息
写入服务器控制台和日志文件中。
Servlet管理者是由“Domino
目录”的“服务器”文档中的设置来控制的。此设置位于“服务器”文档的“Internet协议”“Domino Web
引
擎”附签上。设置内容如下:
设置选项
Java servlet支持无:(缺省)HTTP任务不装入服务器小程序管理者或
JVM。
Domino servlet管理器:HTTP任务同时装入JVM和servlet管理器。
第三方Servlet支持:HTTP
任务装入JVM,但不装入Domino servlet管理器。这允许使用第三方servlet管理器,如IBM公司
的WebSphere
Application Server。
Servlet URL路径URL中的路径,通知Domino此URL指向一个
servlet。缺省路径为/servlet。
类路径一个或多个路径的列表,servlet管理器类加载程序将搜索此列表来查找servlet
及其相关类。此设置允许添加其他路径。可以指定
目录、JAR文件和ZIP文件。路径可以是绝对路径也可以是Domino数据目录的相对路径。缺省为
domino\servlet。
样例:
相对目录路径:domino\servlet
绝对目录路径:
c:\apps\MyServlets
JAR文件:c:\javamail\mail.jar
ZIP
文件:domino\servlet\sql.zip
Servlet文件扩充URL文件扩展的列表,示意Domino某个URL引用了
servlet。列表中的每个扩充必须通过servlets.properties
文件中的指令映射到单一的
servlet。缺省为无扩充。
以下设置控制Java Servlet API HttpSession接口的Domino Servlet
Manager的运行时间支持。不使用此接口的服务器小程序不受这些设
置的影响。
注释 HttpSession接口支持与
Domino中的“HTTP会话验证”功能是完全独立的。
设置选项
会话状态跟踪启用:(缺省)servlet管理器定期检查所有
HttpSession实例的用户活动。给定时间段内空闲的会话将被自动终止。
servlet管理器调用实例的
HttpSession.invalidate()成员函数通知servlet该会话已被终止。
禁用:不检查会话的活动状态。
空闲超时时间
等待用户不执行操作的分钟数,此后将终止会话。缺省为30分钟。
最大活动会话允许同时进行的活动的会话数。缺省为1,000
个会话。达到此限制时,空闲时间最长的会话将被终止。
会话持续启用:退出HTTP任务时,servlet管理器将把会话数据保存到Domino
数据目录中一个名为sessdata.ser的磁盘文件中
。会话数据将在HTTP任务再次启动时重新载入。Servlet
已经固定在会话中的对象如果执行 java.io.Serializable接口,则该对象也将被
保存。
禁用:(缺省)退出HTTP
任务时放弃所有会话数据。
用JVM加载程序装入servlet类
servlet
管理器类加载程序不会装入使用自身代码、创建定制类加载程序或执行其他某些受限制的操作的类。如果servlet所要求的类不能通
过servlet
管理器装入,可以试用Domino JVM类加载程序进行装入。JVM加载程序通常用于从与Domino一起安装的Java归档系统(特别
是
java.*和lotus.*软件包)中装入类。通过将servlet从Servlet管理者类路径移到JVM类路径,可以强制使用JVM
加载程序而不使
用servlet管理器加载程序来装入服务器小程序。JVM类路径由NOTES.INI变量JavaUserClasses
指定。
设置servlet的属性
单个servlet的特殊属性可以在位于Domino数据目录中名为
servlets.properties的文本文件中指定。可以指定以下属性:
别名
初始化参数
URL映射扩展
servlet
管理器启动时装载
这些属性是由servlets.properties
文件中的指令来指定的。指令的通用语法是:
servlet(s).<name>.<property>=<value(s)>
指令是区分大小写的。servlets.properties
文件还可以包含空行和以“#”号开头的注释行。servlets.properties
文件不是必须进行设置的
。Servlet的缺省属性是:无别名、无初始化参数、无映射扩展并按需要装入Servlet。
Servlet
别名
别名指令的语法是:
servlet.<alias-name>.code=<class-name>
例如:
servlet.SQLQuery.code=sql.database.query.Servlet
出于安全性的考虑,Domino
不允许servlet名包含将要在servlet URL中使用的周期。这样能够防止恶意用户通过servlet管理器任意加
载Java
包和类。如果服务器小程序有一个包名,则必须为其指定一个别名。以上的例子允许sql.database.query.Servlet servlet被诸如
“http://acme.com/servlet/SQLQuery?month=june”等URL调用。别名在将servlet
的实际名称对用户隐藏方面也很有用。
可以为servlet指定多个别名。servlet管理器在收到第一个指向所有别名的URL时会创建
servlet的一个新实例。新实例创建时,
servlet管理器将调用servlet的init()
成员函数。由于别名可用在属性文件的其他指令中,因此实例可以被赋予不同的属性。例如:可以
为每个别名指定相互独立的初始化参数。同样,由于即使创建了多个实例,servlet
类也只装入一次,因此servlet的实例可以通过使用静态
类变量来共享数据。
为安全起见,如果给servlet指定了别名,则该
servlet在URL中就不能通过类名来引用。这样可以隐藏servlet的真名。
初始化参数
可以在属性文件中指定为servlet
指定初始数据。Servlet可使用ServletConfig.getInitParameter
成员函数来访问这些数据。初始化指令
的语法是:
servlet.<alias or class
name>.initArgs=<name1=value1>,<name2=value2>,...
可以指定多个参数并以逗号进行分隔。例如:
servlet.SQLQuery.initArgs=target=db2,user=Domino,cacheSize=30
URL
映射扩展
URL映射扩展指令的语法是:
servlet.<alias or class
name>.extension=<extension> <extension> ...
可以给servlet
指定多个扩展,相互之间以空格分隔。所有扩展都必须包含在“服务器”记录的“Servlet file extensions”设置中。例如
:无论何时URL
指定扩展“sql”或“sq”,都能使Domino调用SQLQuery
servlet,请将“sql,sq”添加到服务器设置中,并将这一指令添
加到属性文件中:
servlet.SQLQuery.extension=sql
sq
这允许用户调用含有类似以下URL的servlet:
<A
href="http://acme.com/query.sql?month=june">http://acme.com/query.sql?month=june
启动时装入
缺省情况下,servlet
管理器在第一次接收到引用某个servlet的URL时将此servlet的类文件装入内存。但是,可以指定servlet
管理器
启动时就同时装入一个或多个servlet。这样可以防止用户在URL
首次要求装入小程序时被延误。
启动指令的语法如下:
servlets.startup=<alias or class>
<alias or class> ...
请注意“servlets”(服务器小程序)是复数形式,servlet
的名称必须使用空格分开。
如果给小程序指定了一个或多个别名,则可以在启动指令中包含这些别名。这样会使servlet
管理器装入小程序类然后为每个别名创建一个实
例。
servlet管理器装入servlet类之后,只要不是Domino HTTP
任务由控制台命令"tell http quit"终止或由控制台命令"tell http
restart"
重新启动,这些类将一直驻留在内存中。卸载服+
务器小程序之前,servlet管理器将为servlet的每个实例调用destroy()
成员函数,以使其有机会清理资源。
由JVM类加载程序装入的类在HTTP任务终止之前将一直保持加载状态。“tell http
restart”命令不会将类卸载。
属性文件样例
以下是servlets.properties文件的样例:
# Properties
for the sql
servlet
servlet.SQLQuery.code=sql.database.query.Servlet
servlet.SQLQuery.initArgs=cache=30
servlet.SQLQuery.extension=sql
#
Properties for the mail
servlet
servlet.MailServlet.initArgs=mime=enabled,smime=disabled
# Both
servlets should be loaded at startup
servlets.startup=SQLQuery
MailServlet
# end of file
样例:Java servlet
此servlet样例返回一个HTML
页面,上面显示浏览器与服务器小程序请求一起发送的所有HTTP标头。
import java.util.*;
import
java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public
class ExampleServlet extends HttpServlet {
public void doGet
(HttpServletRequest request, HttpServletResponse response) throws
IOException
{
response.setContentType("text/html");
ServletOutputStream ut =
response.getOutputStream();
out.println("<HTML><B>Headers sent with the
request:</B><BR>");
for (Enumeration headers =
request.getHeaderNames();
headers.hasMoreElements();)
{
String headerName = (String)
headers.nextElement();
out.println("<BR>" + headerName + ": " +
request.getHeader(headerName));
}
} //
end of method
} // end of class
编好此代码后,请将ExampleServlet.class文件拷贝到服务器的
domino\servlet中。由于此文件不需要特殊属性,因此不必创建
servlets.properties文件。输入下面的
URL(请使用自己的服务器名)即可从浏览器运行小程序:
<A
href="http://www.yourserver.com/servlet/ExampleServlet">http://www.yourserver.com/servlet/ExampleServlet
由服务器小程序返回的页面上的信息是由浏览器决定的。以下是使用
Netscape浏览器返回的HTML页面:
<HTML><B>Headers received with the
request:</B><BR>
<BR>ACCEPT-LANGUAGE:
en
<BR>CONNECTION: Keep-Alive
<BR>ACCEPT: image/gif,
image/x-xbitmap, image/jpeg, image/pjpeg, image/png,
*/*
<BR>USER-AGENT: Mozilla/4.05 [en] (Win95; U
;Nav)
<BR>ACCEPT-CHARSET: iso-8859-1,*,utf-8
<BR>HOST:
test1
54、Domino应用程序和XML
XML最明显的优点之一就是因为这种新兴的技术建立在HTML和SGML
的标准之上,所以它代表数据共享技术的发展,这种发展不要求新的硬
件和软件。XML与Domino应用程序结合得非常好。在XML
提供了描述数据并通过网络共享功能的应用程序中,Domino提供了使数据共享安
全、可靠且有效而需要的所有其他工具。除了提供用来编写XML数据和向
XML parser供应XML数据的媒体外,Domino Designer
还提供:
强大的开发环境,包括一套可用于建立协作性的电子商务应用程序的编程工具
保护数据所需的安全层
从数据库访问控制到单个域加密;使用户有效定位数据的搜索能力;工作流操作的消息处理,如定单确认、电子邮件
通知和文档评阅,除Domino Designer
提供的开发工具之外,还可以得到连接服务,允许您将应用程序与以下主后端系统连接起来:
ERP系统,如SAP、PeopleSoft、Oracle和JD
Edwards
关系数据库,如DB2、Sybase和Oracle
事务系统,如IBM CICS、MQ Series、WebSphere和
BEA Tuxedo
使用XML增强的应用程序
为了说明如何在Designer应用程序中集成
XML,可以考虑一个售书的联机站点,其中:描述每本书的数据的XML标记是标准标记,如
<bookTitle>和
<bookAuthor>。处理书的数据的所有应用程序都可使用这些标准标记描述书的特定数据。应用程序可使用这种标准数据格式与
书的供应商以及购买者进行交互。
您可构思的任何应用程序都可使用
XML。例如,可以构思一个自动供应商店,它维护具有自动部件的联机目录的一个电子商务站点。使用XML
作为描述部件信息的公共语言,购买代理商可以从不同的供应商处将关于部件价格和可用性的信息直接放入Domino
数据库。用户可以访问此
数据库来查找他们可联机定购的部件的最新信息。Domino
然后提供所有必要工具来完成定购部件和管理库存的安全联机事务处理。
另一个样例是人力资源的“自助式服务”应用程序,雇员可使用它访问并管理自己的个人数据。例如,公司可以在
Intranet站点上发布福利
信息,允许雇员使用Notes客户机或Web浏览器联机选择自己的福利。选择之后,雇员以XML
格式将数据提交给服务器(如IBM的
WebSphere Application Server)。服务器使用Java servlet将数据传递到
HR后端系统(例如:Peoplesoft数据库),并在事务完成后通
知Domino。XML标记描述被传递的数据,使该数据在Peoplesoft
数据库中代表的意义与在Domino应用程序中代表的相同。
在Designer应用程序中包括XML的方法
有几种方法可将XML包括在
Designer应用程序中并将数据供应给XML parser。
可以在表单或页面上输入描述数据的XML标记。通过将表单或页面的内容作为HTML
处理,可以向能够解释标记的XML parser供应XML。
XML
描述正在显示的数据。要为表单或页面上的数据定义格式和样式,可以使用通过扩展样式表语言(XSL)创建的样式表将数据转换为
HTML
,或者可以使用级联样式表(CSS)以直接在客户机上定义XML的样式。
还可以通过在列公式中包括XML标记以使用视图产生XML
数据。要将视图传递到服务器,必须将它嵌入页面或视图以便在正确的XML文档定
义标记中覆盖整个视图。
可以使用代理或servlet
动态生成或存储XML。代理用于在Domino应用程序中运行预定的过程。Servlet基于来自Web浏览器的请求在服
务器上运行。
关于
Domino DTD和如何使用Java方法生成XML的详细信息,请参阅《Programming
Guide》中的第三章。
应用设计
在表单或页面中放入XML
表单是用于XML的最好工具。可以输入XML
标记,并在数据的标记中包括域。结果是XML文档,带有传递到XML parser时非常有意义的数
据。还可以将XML放到页面上。Domino
Designer中的页面是显示信息的数据库设计元素。可对传统的应用程序内容使用页面(如主页),或
使用XML
标记来描述页面上的数据。您将在关于在视图中使用XML一节中了解到,页面有助于嵌入视图并添加处理视图所需的XML
标记。页
面还有助于创建可扩展的样式表(XSL)或级联样式表(CSS)以指导服务器或浏览器如何格式化使用XML标记描述的数据。
使用
XML元素定义表单上的数据
当在表单或页面上使用XML元素时,必须遵循一定的规则以构建有效的XML,而且必须正确格式化XML
标记。
XML标记与HTML标记非常相似。但有一些不同的规则用于构建XML标记,当标记数据时必须遵循它们。例如,嵌入XML的要求比嵌入
HTML
标记的要求更严格。关于使用XML标记来标记数据的详细信息,请参阅IBM XML Web站点:<A
href="http://www.ibm.com/xml">http://www.ibm.com/xml
作为在表单上使用XML
的样例,联机手册目录中每本书的输入项都可能是如下所示:
<?xml version="1.0"
encoding="UTF-8"?>
<BOOK>
<bookTitle>Chess for the
Master</bookTitle>
<bookCategory>Games</bookCategory>
<bookAuthor>Alice
B.
Charles</bookAuthor>
<bookPrice>10</bookPrice>
<bookListPrice>12</bookListPrice>
<bookISBN>0-980-38475-81</bookISBN>
<bookDatePublished>April
1997</bookDatePublished>
<bookAbstract>The authority on all the
latest chess moves, including the entire Big Blue
arsenal.</bookAbstract>
</BOOK>
以XML格式创建文档
1.
新建一个表单或页面。
2.输入文档类型声明,如下所示:
<?xml version="1.0" ?>
可以选择性地添加编码参考,如下所示:
<?xml version="1.0" encoding="UTF-8"
?>
3.输入XML元素,一般是带有子元素的根元素。
4.输入存有要使用XML
标记的数据的域。
5.选择“设计”“表单属性”。
6.在“高级”附签上,选择“将文档内容作为
HTML”。
该属性通知Domino将所有文档文本传递给HTTP请求者,而不必生成HTML标记。
7.
保存并关闭表单。
8.要查看从表单创建的文档,可创建一个使用表单公式的视图(该表单公式解析为XML表单名称)。
使用样式表格式化
XML数据
XML
的属性之一是它只描述数据而不提及数据的外观。对于计算机到计算机的事务,外观并不重要,但如果要将数据显示给用户时(例如:将
其贴在Web
站点上),外观就很重要。XML文档通常是依靠样式表来确定数据的布局和外观。一些浏览器为通俗元素(如<;Para>、<List>和
<Item>)提供简单的缺省样式,但通常情况下必须使用样式表来描述数据格式。随XML可以使用两种类型的样式表:
扩展样式表语言
(XSL)描述如何将XML转换为HTML或另一种版本的XML。
级联样式表(CSS)直接在支持CSS的浏览器上定义XML
的样式。
要使用样式表,可在文档类型声明之后和根元素之前直接插入样式表参考。例如:
<?xml version="1.0"
encoding="UTF-8"?>
<?xml-stylesheet type="text/css"
href="bookdisplay.css"?>
<BOOK>
如果在页面上创建了一个样式表,可设置页属性为“将页面内容作为
HTML”。
将关于书的信息转换为HTML的XSL样式表可能如下所示:
<?xml version="1.0"
?>
<xsl:stylesheet xmlns:xsl="<A
href="http://www.w3.org/TR/WD-xsl">http://www.w3.org/TR/WD-xsl" >
<xsl:template
pattern="BOOK">
<HTML>
<HEAD>
<TITLE><xsl:value-of
select="BOOKTITLE" /></TITLE>
</HEAD>
<BODY
bgcolor="F0FFF8">
<B><xsl:value-of
select="BOOKAUTHOR"/></B>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
<?xml:stylesheet
type="text/xsl" href="/roibooks.nsf/bookform.xsl"?>
级联样式表(CSS)并不将XML
转换为HTML,而是直接向服务器提供如何格式化每个XML元素的指令。书的CSS可能如下所示:
BOOK {
display:
block;
border: 1px solid #cccccc;
}
BOOKTITLE {
display:
block;
float: left;
margin-right: 10px;
padding:
5px;
}
BOOKAUTHOR {
display: block;
font-style.
italic;
}
相关主题
在Designer应用程序中包括XML
Domino应用程序和XML
XML
术语
应用设计
使用视图生成XML
视图使用户可以控制哪些文档以XML显示并可以跟踪信息和将其转换到XML中以通过
Intranet或万维网分发。可以在Lotus Web站点
<A
href="http://www.lotus.com/xml">http://www.lotus.com/xml上的ROI Books
应用程序中找到此部分中描述的视图。
将XML标记映射到视图
为了使用视图产生XML,必须将XML标记从DTD
映射到视图列中。一旦创建了视图并将XML标记映射到其中后,就可以将视图嵌入到页面中
。嵌入到页面中的视图在Web上保持了其在Notes
客户机应用程序中的同样功能,并使用户可以控制视图显示的大小及外观。对于显示XML
的视图,页面包含了XML声明和根元素。
样例
ROI
Books应用程序使用列公式将文档中的每个元素和域分配给“XML
视图”中的列。第一个子元素的列公式还包含打开父元素标记,而最后
一个子元素的列公式包含关闭父元素标记。例如,第一列的列公式为:
"<BOOK><BOOKTITLE>"+bookTitle+"</BOOKTITLE>"
父元素是
<BOOK>,子元素是<BOOKTITLE>,bookTitle是包含<BOOKTITLE>
标记内容的域名。<BOOK>中有多个子元素包括在此视图中,所以
<BOOK>元素直到添加了最后一个子元素后才关闭。在ROI
Books
应用程序中,最后一个子元素被分配给视图的最后一列。最后一列的公式为
:
"<BOOKPUBLISHDATE>"+bookDatePublished+"</BOOKPUBLISHDATE></BOOK>"
“XML
视图”被嵌入到包含XML声明和根元素<BOOKCATALOG>的页面中。
将XML映射到视图
1.
创建一个视图并打开。
2.选择“编辑”“属性”以打开“视图”属性框。
3.单击“高级”附签。
4.在“Web访问”中,选择“将视图内容作为HTML”。如果未选择此属性,Domino为视图内容生成
HTML。另外,如果未选择此属性,
则嵌入页面中的视图内容不可见。
5.单击“对象”附签中的“View
Selection”并添加选择公式以定义哪些文档将包括在视图中。例如:用于联机书店的应用程序包含已
批准定单的视图。使用以下公式为视图选择文档:
SELECT
status="Approved"
6.单击“对象”附签中的“Form. Formula”并输入公式以选择模板表单。
7.将列添加到视图中。
8.单击视图的第一列。
9.使用以下语法在Script.
区域中输入列公式。
"<;PARENT><CHILD>"+fieldname+"<\CHILD>"
如果某列中有多个元素,在第一个列公式末尾添加一个分号
(;),并在下面为下一个元素添加列公式。
"<;PARENT><CHILD>"+fieldname+"<\CHILD>";
"<CHILD>"+fieldname+"<\CHILD>";
"<CHILD>"+fieldname+"<\CHILD>"
提示
使用以下语法使域成为元素的一个属性。
"<CHILD
attributeName=\""+fieldname+"\">"+fieldname2+"</CHILD>
10.
单击第二列并使用以下语法将列公式键入到Script.
区域中。
"<CHILD>"+fieldname+"<\CHILD>"
11.对每个XML元素(最后一个除外)重复步骤
10。
12.对最后一个子元素使用以下语法。
"<LASTCHILD>"+fieldname+"<\LASTCHILD></PARENT>"
在页面中嵌入视图
1.打开或创建一个页面。
2.选择“设计”“页面属性”。
3.单击“页面信息”附签。
4.
在“Web访问”中,选择“将页面内容作为HTML”,然后关闭“页面”属性框。
5.在希望显示嵌入视图的位置之上键入XML
声明。
6.将光标置于希望显示嵌入视图的位置。
7.选择“创建”“嵌入元素”“视图”。
8.
(可选)如果不希望在所有环境中显示相同的视图,请单击“选择基于公式的视图”。单击“确定”关闭对话框后,在“编程”窗格
中编写公式以便显示适当的视图。
9.(可选)单击嵌入视图,并选择“元素”“视图属性”,更改对齐方式或样式,或在某个条件下隐藏此元素。
10.
在视图下键入一个闭合的根标记。
要删除嵌入视图,请单击“工作”窗格中的嵌入视图并选择“编辑”“清除”。
相关主题
在Designer
应用程序中包括XML
Domino应用程序和XML
XML术语
在表单或页面中放入XML
应用设计
使用代理生成
XML
使用代理生成XML的最大优点之一是具有灵活性。可以基于事件或对URL命令的响应设置代理定时运行。这种灵活性对于创建自动
XML应用
程序是很有必要的。例如:书店的Web
站点包含一个数据库,其客户向每月一次的新闻简报投稿。其中有一个编辑和批准工作流进程,负责在
稿件被批准后将它们移到系统中。代理每小时都要运行以收集可以发表的稿件并将稿件转换成
XML。然后该代理将稿件作为静态XML文档置于
另一个数据库中,订阅者可在此收集文档。
ROI Books应用程序包含一个称为
createXML的代理,此代理为视图中的每个文档生成XML并基于浏览器或服务器的请求将其发送出去。要
查看此代理的输出,在Microsoft
Internet Explorer 5中打开ROI Books应用程序并单击XML Agent链接,或使用OpenAgent URL
命令
运行代理:
<A
href="http://host/roiBooks.nsf/createXML?OpenAgent">http://host/roiBooks.nsf/createXML?OpenAgent
编写的代理不仅可以打印输出,也可使用
LSO或DECS连接器API将XML输出保存在字符串变量中并将其写入静态XML文档或另一个数
据库系统中。
样例:XML
代理
此样例是LotusScript.代理,它在称为XML的视图中提取每个文档、根据其内容创建XML并打印输出。
Dim s As
New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim
view As NotesView
Set db = s.currentDatabase
Set view = db.GetView( "XML"
)
Set doc = view.GetFirstDocument
Print "Content-type:
text/xml"
'Prevents Domino from sending default headers.
Print
"<BOOKCATALOG>"
'BOOKCATALOG is the root element of the XML
document.
While Not ( doc Is Nothing )
'Loop as long as there are document
objects available.
Print "<BOOK>"
'Send the parent element for each book document.
Print
"<bookTitle>"+doc.bookTitle(0)+"</bookTitle>"
Print
"<bookAuthor>"+doc.bookAuthor(0)+"</bookAuthor>"
Print
"<bookPrice>"+doc.bookDiscountPrice(0)+"</bookPrice>"
Print
"<bookCategory>"+doc.bookCategory(0)+"</bookCategory>"
Print "</BOOK>"
'Close the book element
tag.
Set doc = view.GetNextDocument( doc )
'Get
the next document in the view.
Wend
Print
"</BOOKCATALOG>"
'Closes the root element.
相关主题
在Designer
应用程序中包括XML
Domino应用程序和XML
XML术语
应用设计
使用Java servlet生成
XML
Servlet是为响应Web浏览器的请求而运行的Java程序。与代理不同,当Web服务器启动且驻留在服务器上时
Servlet才装载。它们通常
用于动态生成和更新Web页以及在不同的应用程序之间交换数据。可以扩展Servlet的功能,以使用XML
作为应用程序之间的通用语言在应
用程序之间架起一座桥梁。Java servlet不仅能产生XML标记并传递到服务器以进行处理,Servlet
还可以与LotusXSL处理器进行交互作
用以格式化XML标记描述的数据。XML与XSL
配合使用,将为您提供一种定制数据传输的强大工具。
XML Servlet应用程序的样例
作为Servlet如何促进XML
传送定制数据包的样例,可考虑一个组织,其中的域销售代表使用不同的设备(如Notes客户机、浏览器或PDA
)从Domino
数据库下载信息。销售代表可向Domino应用程序请求所有与特定客户有关的信息。Servlet将来自不同数据源的信息集合到一
起并使用合适的XML
标记将数据打包。Servlet还可以使用LotusXSL processor将样式应用于使用XML
标记的数据并以最适合于连接设备
的格式传送数据。这种情况下,通过窄带电话线与PDA连接的销售代表比通过宽带网络连接与Notes
客户机连接的销售代表获取的信息要少
。以下图形显示连接设备、运行Servlet的Domino
应用程序以及后端数据库之间的关系:
在另一个关于Servlet如何提供有意义的定制数据的样例中,可考虑一个房地产应用程序,其所售房屋的数据存储在
Domino数据库中。一个
房地产代理商或潜在的购买者使用Web浏览器向Domino
应用程序请求所售房屋的信息。用户指定搜索标准,如所需的卧室间数。Servlet在
Domino
应用程序中运行,查找并装配与指定标准匹配的所有文档。Servlet动态折叠它在正确的XML标记(如<HOUSE>和
<HOUSETYPE>)中
找到的数据。然后使用LotusXSL processor来应用XSL样式表中的样式并将XML
标记的数据转换为HTML,将正确格式的数据推入请求的浏
览器。
创建和使用Servlet
可以从头开始创建Servlet,通过URL
引用现有的Servlet,或使用预置Servlet。每次修改Servlet时,必须重新启动服务器以查看所做
的改动。运行Servlet
涉及到编写Servlet、在Domino中启用Servlet支持以及必要情况下设置Servlet属性等方面的内容。
关于在Domino
服务器上运行Servlet的完整指导信息,请参阅Domino Designer R5的联机帮助。
关于Java servlet
的综合信息,请访问Sun Microsystems站点:<A
href="http://www.java.sun.com">http://www.java.sun.com
在Servlet中包括
XML
要在Java servlet中包括XML,需要LotusXSL Processor。可以从IBM的AlphaWorks
站点
(<A
href="http://alphaworks.ibm.com/formula/LotusXSL">http://alphaworks.ibm.com/formula/LotusXSL)下载
LotusXSL Processor。
相关主题
使用代理生成XML
1.在ADMIN的配置中的验证菜单内的标识符属性中更改user和cert口令。
2.服务器文档的“安全性”里
设置比较和记录“与保存在通讯录中的Notes
公用密钥比较”启用。
容许匿名的连接否、“校验Notes
标识符口令”起用
3.在个人和群组中的个人设置中设置“校验Notes标识符口令”。
4.在个人和群组中的设置中设置“校验Notes标识符口令”。
5.创建新的公钥
32、我们做为管理员应该做些什么?
此表列出了系统管理员每天、每周或每月应当完成的服务器维护任务,以确保服务器高效运行。任务
频率
备份服务器每天、每周、每月
监控文件路由每天
运行Fixup任务以修复所有被毁坏的数据库*
服务器启用和需要时
监控共享邮件数据库(MAILOBJ.NSF)每天
监控Administration Requests数据库
(ADMIN4.NSF)每周
监控需要维护的数据库每周
监控复制每天
监控调制解调器通讯每天
监控内存每月
监控磁盘空间
每天、每周、每月
监控服务器负载每月
监控服务器性能每月
监控Web服务器请求每月
监控服务器群集每天
*
如果数据库为Domino R5格式数据库并且没有使用事务记录,则可以使用Fixup任务修复损坏的数据库。如果数据库为Domino R5
格式数
据库并且使用了事务记录,则无法在此数据库上运行Fixup任务,这是因为Fixup
任务干扰事务记录保持数据库跟踪。必须从备份恢复损坏
的数据库。仍可以在Domino R4.x和更低格式的数据库上运行Fixup
任务。
33、关于定时关闭服务器的方法
在服务器配置,-》程序,
添加程序,在
程序中输入server
或nserver
命令中输入-q或-c
quit
在定时安排中,设置执行的时间就可以了。
34、id被盗记录
domino有个记账服务(billing),该服务可以记录所有访问这台domino的客户端信息,当然包括ip地址。就不用再用其他的工具了。
35、怎样设计表单来跟踪文档的作者?
在表单上加一个隐藏的共享域,其名字可以为from运行公式为:@If(@IsNewDoc ; @UserName;
From),这样这个域就记录了这片文档的作
者了。
36、在调试Lotus
Domino程序时,经常会触发执行qnc.exe程序并退出Notes,如何解决?
答:在调试Lotus
Domino/Notes程序时,由于程序设计的问题,我们经常会触发执行qnc.exe程序,并提示错误。其实qnc.exe执行目的只
是Notes的内存保护性措施,并不一定是程序本身有错误。为了便于调试程序,我们可以在Lotus
Domino指令窗口内键入qnc _u,使其暂停运行
。如果想恢复时可以再用qnc _i指令装载它。
37、在R5中如何将一个Domino
Web服务器配置为多个Web站点--虚拟服务器
解答您可以将一个Domino Web服务器设置为多个虚拟服务器,这样一个Domino
Web服务器就可以有多个Web站点.在配置虚拟服务器之前,您
必须设置每个虚拟服务器的网络连接.在R5中每个虚拟服务器可以有自己单独的IP地址,或多个名字映射到同一个IP地址.Domino不限制虚拟
服务器的数量,该数量主要决定于操作系统和系统硬件
**注意:在R4.6中每个虚拟服务器必须有自己单独的IP地址.
下面介绍如何创建虚拟服务器文档:
1.管理员启动Domino
Administrator软件,点击"配置"标签
2.选择视图"服务器"--"所有服务器文档",选中您想创建虚拟服务器的服务器文档
3.
点击上边的按钮"web"--"创建虚拟服务器"
4.选择"虚拟服务器",然后点击"确定"按钮
5.在"基本"标签下,完成以下域:
1) IP地址:该虚拟服务器使用的IP地址
2)主机名:(可选)该虚拟服务器的主机名
3)
缺省主页:(可选)当用户访问该虚拟服务器时显示的HTML文件,只有当"主页URL"域为空时该域才起作用.
6.点击"映射"标签,完成以下域:
1)主页URL:当用户访问该虚拟服务器时执行的URL命令,可以显示一个数据库或服务器上的数据库列表.该域的优先级比"缺省主页"域高.
2)
在剩下的域中填写其它文件的目录
7.点击"安全性"标签,为该虚拟服务器设置安全性选项.
8.保存该文档
9.
在服务器控制台上,输入命令tell http restart,重新启动http服务.
如何显示虚拟服务器文档:
管理员启动Domino
Administrator软件,点击"配置"标签,选择视图"web"--web服务器配置,则可以看到虚拟服务器文档,该文档是作
为服务器文档的答复文档出现的.
38、怎么记录用户退出
答:用LOTUS的unload事件,是在离开当前页面或关闭浏览器时激活,用这个事件给服务器发送一个url告知服务器就行了。这种方法可以最精
确的记录用户的登出时间。用会话就不那么精确了,因为它有一定的活动期,只有超时了才会记录。至于登陆信息定制domlog.nsf数据库的表
单。(主要是登录用户的信息)定制domlog.nsf数据库的视图。取到你需要的记录。
39、将一个普通html中的表单提交给notes数据库,用html中form的Action可以指定notes的某个代理。
html的表单这样写:
<form.
name=form1 action="<A
href="http://servername/path/dbname.nsf/agentname">http://servername/path/dbname.nsf/agentname"
method=get>
<!--method必须是get!-->
<><INPUT id=text1
name=openagent></P>
<!--第一个的name必须是openagent!-->
<><INPUT
id=text2
name=text2></P>
<!--可以在加若干个input!-->
<><INPUT
id=submit1 type=submit value=Submit
name=submit1></P>
</form>
代理这样写:
1.共享代理
2.运行代理的时间选择:从代理列表中选择执行
3.指定代理操作的文档选择:数据库中的全部文档
4.LotusScript.:
Dim
s As NotesSession
Set s = New NotesSession
Dim str as
String
str=s.documentcontext.query_string_Decoded(0)
'这个得到html表单中提交的所有域(文本匡等)输入的数据,包括域名称和域的内容
str
'你可以根据这个str生成一个new document,根据内容加入域
40、Notes数据库中文件夹和视图的限制
解答
实际上产品本身并没有一个预设定的限制,只是受可用句柄(handle)数目的限制.
句柄(handle)数目的上限是10495.当库中的文件夹和视图数
目接近限制时,Notes会报内存溢出方面的错误,类似下面的这些错误信息:
对于Notes
R5.X
"Maximum number of memory segments that Notes can support has been
exceeded"
对于NotesR6.X
"Insufficient memory - too many design elements
(Desk Design Pool)."
当如果一个数据库中包含了很多文件夹, Notes将会为每一个视图或者文件夹分配内存.最终,
Notes将无法获得足够的内存,因为它无法跟踪获
得所有内存的位置信息.(根本原因就是最大句柄数的限制.)
可选择的规避办法就是在数据库中将文件夹和视图的数目维持在合理的范围之内.或者缩短文件夹或者视图名字的长度.
41、服务器备份范围
保存原始Domino\Data目录的cert.id
server.id names.nsf log.nsf certlog.nsf
应用数据库
mail目录等数据库内容、保存原始
Notes\Data目录的user.id。
备份domino\notes.ini文件、备份数据库(在domino\data下):
*.dsk、names.nsf、admin4.nsf、bookmark.nsf、busytime.nsf、catalog.nsf、certlog.nsf、certsrv.nsf、events4.nsf、log.nsf
mail*.box、mail\*.*、nntppost.nsf、statmail.nsf、statrep.nsf、webadmin.nsf、所有IDs:
*.id\备份 setup.nsf数据库
42、HTTP提交附件限制(在ADMINISTRATOR中的INTERNET协议中)
1)HTTP书签里HTTP协议限制里的请求内容的最大大小
2)DOMINO
WEB引擎里的POST数据里
43、实现批量刷新数据库设计
1、首先要在配置或管理数据库中建立有关数据库的文档。
2、建script库,“RefrshDesign”
Declare Function W32_NSFDbOpen Lib
"nnotes.dll" Alias "NSFDbOpen" _
( Byval dbName As String, hdb As Long) As
Integer
Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose"
_
( Byval hdb As Long ) As Integer
Declare Function W32_DesignRefresh
Lib "nnotes.dll" Alias "DesignRefresh" _
(Byval Server As String, Byval hdb
As Long, Byval dwFlags As Long, _
Byval null0 As Long, Byval null1 As Long)
As Integer
Dim hDB As Long
Dim ret%
3、在建好的数据库信息的视图上选择若干文档,点击视图操作。
Dim session As New notessession
Dim ws As New notesuiworkspace
Dim
view As notesview
Dim db As notesdatabase
Dim dc As
notesdocumentcollection
Dim doc As notesdocument
Dim fullname As String
Dim TemplateServer As String
Dim i As Integer
TempLateSever =
"*********/OA" '--模板所在服务器的名称
Set db = session.currentdatabase
Set view =
ws.currentview.view
Set dc = db.unprocesseddocuments
If dc.count
<> 0 Then
If Msgbox("确定用模版服务器刷新指定数据库的设计?",48 + 4,"操作提示:") = 7 Then
Exit Sub
End If
For i = 1 To dc.count
Set doc =
dc.getnthdocument(i)
fullname = doc.database_server(0) + "!!" +
doc.database_dir(0) & "/" & doc.database_filename(0)
If fullname
<> "" Then
rc = W32_NSFDbOpen(fullname,hDb)
If rc = 0 Then
'Print "Refreshing Design of" & doc.database_name(0) & "......"
Call W32_DesignRefresh(TempLateSever, hDb, 0,0,0)
rc =
W32_NSFDbClose(hDb)
'Print "ok!"
Else
End If
End If
Next
End If
44、对门户网站邮件拒收的确认信
以下是新浪对我公司邮服拒收的处理:
尊敬的用户pennykristy:
您好!
十分抱歉给您带来的不便,您的问题可以用以下方法解决:
如果您是别的网站的邮箱管理员,贵网站的邮箱给新浪发邮件发不过来,请您用贵网站的邮箱给我们的工程师发一封邮件,主题是:有关给新
浪免费邮箱发信问题
在邮件内容中,请写明:单位名称、发件服务器IP地址、联系方法、联系人、邮件地址、电话、地址,发送给<A
href="mailto:mailmaster@staff.sina.com.cn">mailmaster@staff.sina.com.cn
工程师会和您联系的。
希望我们的回答能令您满意!
若还有问题,请您注意回信的时候一定要将上次回信附上,以便解决您的问题。
更多常见问题答疑请见:<A
href="http://tech.sina.com.cn/focus/sinahelp.shtml">http://tech.sina.com.cn/focus/sinahelp.shtml
谢谢您对新浪的支持
<A
href="mailto:webmaster@vip.sina.com">webmaster@vip.sina.com
2005-05-18
17:22:42
13号客服专员竭诚为您服务
新浪全国统一服务热线95105670(免长途费)
45.批量刷新邮件设计
load convert mail\*
mail6.ntf
46、如何更改验证者标识符(Cert.id)的口令
Administrator——>“配置”的页面,在右面“工具”的菜单中,打开“验证”。选择“标识符属性”。选择并打开验证者标识符(Cert.id)。
输入原口令,如输入正确则打开当前验证者标识符(Cert.id)的用户标识符对话框。在“基本”的页面中,选择“设置口令”。此时,就可以
输入新的口令,并再次确认。最后,点击“确定”即可。
47、管理单个数据库中的多语言输入
可以向任意的URL命令中添加charset=[MIME charset name]
参数来返回指定字符集中所要求的表单或页面,而不管浏览器中设置的首选语
言。服务器不能自动生成charset=[MIME charset name]
参数。它必须内置在应用程序中。
语法
[url=http://Host/Database/FormName?OpenForm&charset=[MIME]http://Host/Database/FormName?OpenForm&charset=[MIME[/url]
charset
name]
这里:
FormName是被打开的表单名称。
[MIME charset name]
是将用于返回的目标表单的字符集名称。
用法
charset=[MIME charset name]参数将覆盖表单中的
$$HTMLContentLang域。有关使用$$HTMLContentLang域启用多字符集以便用于数据库
输入的信息,请参阅《Lotus
Notes,Domino and Designer Release Notes -- Release
5.0.2》中的“管理单个数据库中的多语言输入”。
样例
某公司的销售人员分布在**、**和俄国。要求每个职员每月向某个单一数据库中提交一份业绩摘要。如果返回摘要表单的
URL命令使用
charset=[MIME charset name]
参数,则销售人员可以使用同一数据库中的英语、日语和俄语字符集。服务器接到命令后,它将返回指定字符
集中的目标表单。将返回使用日语字符集的目标表单的URL
命令显示如下。
<A
href="http://www.mercury.com/sales.nsf">http://www.mercury.com/sales.nsf...
m&charset=Shift_JIS
48、修复损坏数据库的方法
如果在数据库中遇到损坏,可以使用以下任何一种方法来尝试修正问题。由于损坏对记录的
R5数据库并不是大问题,这些方法主要用来解决
R4数据库和未记录的R5数据库中的损坏问题。
运行Fixup
修正损坏的视图和文档。
运行Updall修正损坏的视图和全文索引;如果视图损坏,请在运行Fixup之前运行Updall。
运行
Compact修正Fixup没有纠正的损坏问题;如果数据库是R5数据库,使用-C选项。
按SHIFT+F9键重建一个视图;按
CTRL+SHIFT+F9键重建数据库中的所有视图。
49、为Web定制“表单已处理”确认信息
Web
用户提交文档后,Domino使用缺省的“表单已处理”的确认信息回应用户。要重新设置缺省答复,可将计算文本域添加到表单中,给此域
命名为
$$Return,并使用HTML作为计算值来创建定制的批准。
显示个人化答复
下面的$$Return公式返回答复“Thank
you”,并附加上用户姓名:
who:= @If(@Left(From; " ") = ""; From; @Left(From; "
"));
@Return("<h2>Thank you, " + who +
"</h2><br><h4>
<a
href=/register.nsf/Main+View?OpenView>Main
View</a>");
50、显示定制的错误消息
要定制显示给Web
用户的错误消息外观,向数据库中添加定制的错误消息表单。如果发生错误条件,且其定制表单存在,则Domino
使用定制
表单来显示错误消息。否则,Domino
使用缺省错误消息表单。添加到数据库的消息表单将覆盖由管理员设置的服务器范围内的消息。
要在表单和错误条件之间创建关联,创建拥有下列名称之一的表单。然后创建名为
MessageString的可编辑的文本域来保存错误消息。添加要
与错误消息一起显示的其他文本、链接以及其他表单对象。表单名称
条件
$$ReturnAuthenticationFailure不能校验用户名称和口令。
$$ReturnAuthorizationFailure
用户对该数据库没有足够的存取级别。
$$ReturnDocumentDeleted成功删除文档。
$$ReturnGeneralError
出现了其他错误条件。
链接到另一页面
根据提交文档中的域值,在HTML中包括链接到另一页面的URL。下面的$$Return
公式根据用户选择的范围返回答复。例如:如果用户选择
欧洲,则消息“在意大利访问我们的站点”将显示一个链接,可链接到意大利的Web
站点(假定公式中的“stdAnswer”和“stdFooter”已预
先定义。)。
@If(Region="Asia"; stdAnswer +
"<h2>Visit our site in <a href=\"<A
href='http://www.japan.lotus.com\">Japanhttp://www.japan.lotus.com\">Japan</a></h2>"
+ stdFooter;
Region="Europe"; stdAnswer + "<h2>Visit our site in <a
href=\"<A
href='http://www.lotus.com\it_ciao/it_ciao.htm\">Italyhttp://www.lotus.com\it_ciao/it_ciao.htm\">Italy</a></h2>"
+
stdFooter;
stdAnswer + stdFooter);
返回另一页面
要跳转到不同的Web页面,可将页面的
URL用括号括起来放入页面。当用户提交文档时,Web客户机将显示引用的文档。例如:下面的
$$Return公式显示Lotus
**站点的主页。
"[http://www.japan.lotus.com]"
51、如果希望帮助用户快速创建和阅读文档,请在设计表单时参照以下指导进行:
设计表单
避免使用大的位图或图形。
避免使用表单属性“自动刷新域”。
相反,请对所选的域使用“按关键字变化刷新域”,或者编写一个
LotusScript.域事件,当用户从特定域移出时重新计算文档或更新其他域。
避免使用包含大量计算域的长表格。
设计域
尽量少用
@DbColumn或@DbLookup公式,或者将它们替换为更快的并支持查错的LotusScript.
程序。
在“条件隐藏”的条件中使用简单公式。
可能的话,避免重新计算域。否则,将这些域修改为“填写时计算”,使它们仅在文档被编写时计算,但是需要的话,可以在将来通过按钮、
操作或代理更新。
在域中使用
LotusScript.表单事件而不使用条件公式来设置域值。
例如:要在文档被保存时重新设置状态域,可以为QuerySave事件创建一个
Script,而不必编写一个使用@If(@IsDocBeingSaved;"x";"y")
的公式。
精简域的数目,特别是隐藏域的数目,使用表单事件而不是域公式来执行逻辑处理并避免不必要的重新计算。
例如:假如表单包含一个隐藏的计算域
State,该域确定文档处于工作流中何处以及需要被发送到何处。通过在QuerySave表单事件中设置域
值的LotusScript.
程序来替换此域,可以仅在文档被保存时设置域值,而在文档打开或刷新时不设置域值。
52、代理、servlet和CGI程序的比较
代理、servlet和CGI程序都允许对Domino Web应用程序的功能进行扩展。代理可以通过表单WebQueryOpen和
WebQuerySave事件与Web
应用程序紧密集成。Servlet通过Servlet API类可以获得一些特殊功能,如会话和Cookie
管理。由于Java日益受到人们的青睐,现今使
用servlet而不是CGI程序来开发新产品已成为大势所趋。但是,许多现有的CGI
程序仍在使用。
如果正在编写自己的应用程序并需要为服务器上的某些功能编程,则需对使用哪种类型的程序的选项作出选择。每种类型的程序均有各自的优
点而且可能成为特定情形下的最佳选择。以下是对每种程序类型的使用建议:
程序类型
最佳用途
代理读取或邮寄文档时执行Domino操作的程序。需要按预定时间或当数据库操作发生(如新邮件到来)时运行的程序。
Servlet
使用标准Java接口(如JDBC)的程序。使用HTTP会话维护或Cookie的程序。复杂或资源密集型Java程序。
CGI程序
需要对系统资源进行低级别访问的程序。通过非Java API与其他产品连接的程序。
以下对这些程序的属性所作的比较对程序的选用很有帮助。
程序可使用哪种语言进行编写?
代理:Java、LotusScript.或Notes
公式语言。这些语言本身均可跨平台使用。
Servlet:Java。本身可以跨平台使用。
CGI
程序:平台脚本语言,即任何能够编译为可执行文件的语言或跨平台的语言(如Java或Perl)。
程序存储在什么位置?
代理:存储在Domino
数据库中,这意味着代理可以利用数据库复制和群集服务器的功能。
Servlet:存储在文件系统中,通常是domino\servlet目录。
CGI
程序:存储在文件系统中,通常是domino\cgi-bin目录。
程序以什么方式被Web用户调用?
代理:由WebQueryOpen或
WebQuerySave事件自动调用,或者由OpenAgent
URL(如“http://acme.com/sales.nsf/results?OpenAgent”)
直接调用。代理还可由服务器事件(如新邮件的到来)或预先的定时安排来触发。
Servlet:直接由
URL调用。Domino可识别两种类型的servlet的URL。第一种类型通过名称指定
servlet(例如:
“http://acme.com/servlet/SQLDatabaseQuery?month=june”)。第二种类型指定一个
Domino管理员已经映射到servlet
的文件扩展名(
例如:“http://acme.com/sqlquery.esp?month=june”)。
CGI程序:直接由URL
调用(例如:“http://acme.com/cgi-bin/filesearch?string=widget”)。
服务器何时将程序载入或卸载?
代理:每次调用时装入,执行完毕后卸载。
Servlet:一次性装入;HTTP
任务关闭或重新启动时卸载。与代理或CGI程序相比,这一性能使servlet具有很大的优越性。但是,这也意
味着可以通过多个请求同时访问
servlet类,因此必须保证servlet代码的线程安全性。
CGI程序:每次调用时装入,执行完毕后卸载。
程序与Domino
的交互方式
代理:LotusScript.和Java代理可使用Domino对象类。公式代理可使用大多数
@function。
Servlet:可通过CORBA (Common Object Request Broker Architecture)接口访问
Domino。
CGI程序:可通过CORBA接口或通过Domino C或C++ API访问
Domino。
程序可获得哪些安全性保障?
代理:要调用代理,Web
用户必须对包含该代理的数据库具有“存放者”或更高存取级别。代理可以以其创建者或用户的身份运行。Domino
的
所有安全特性均适用于由代理执行的操作。
Servlet:对服务器小程序的访问可由“Domino目录”中的文件保护文档来控制。如果小程序通过
CORBA接口访问Domino,则可以指定一个
Domino用户名和Internet口令。Domino的安全性适用于所有CORBA
操作。
CGI程序:对该程序的访问可由“Domino目录”中的文件保护文档来控制。如果程序通过C API来访问
Domino,则会使用服务器标识符。如
果程序使用CORBA接口,则可以指定用户名和Internet口令。两种情况下,均可应用Domino
的安全性。
53、在Domino中运行servlet
样例
编写servlet
要编写servlet,需要一个
Java编译器和servlet的API。二者均可从Sun Microsystem的网站<A
href="http://java.sun.com">http://java.sun.com上获得。可下载
Java Development
Kit (JDK)(其中包含编译器和其他基本工具)和Java Servlet Development Kit (JSDK)(其中包含servlet API
的规范
、servlet的.JAR文件(jsdk.jar)和样例服务器小程序)。Sun站点还提供到Web上其他servlet
资源的链接。
还可以使用各种流行的Java开发环境来编写servlet。为了提供方便,Domino服务器和Designer安装程序中包含
jsdk.jar文件的拷贝。
这与Sun的JSDK提供的文件是完全一样的。
Sun定期更新JDK和JSDK。Domino 5.0
支持JDK 1.1.6和JSDK 2.0。Domino的季度维护版(QMR)经常会结合Sun的升级内容,因此应
该检查QMR
的版本注释以检验被支持的JDK和JSDK版本。
启用Domino支持的servlet
Servlet是由Domino Java
Servlet Manager(HTTP服务器任务的一部分)来装入和调用的。Java支持servlet的运行时间是由Domino
Java
Virtual Machine (JVM)提供的。HTTP任务启动时,可以自动启动服务器小程序管理者并装入JVM。HTTP
任务将把这些操作的状态信息
写入服务器控制台和日志文件中。
Servlet管理者是由“Domino
目录”的“服务器”文档中的设置来控制的。此设置位于“服务器”文档的“Internet协议”“Domino Web
引
擎”附签上。设置内容如下:
设置选项
Java servlet支持无:(缺省)HTTP任务不装入服务器小程序管理者或
JVM。
Domino servlet管理器:HTTP任务同时装入JVM和servlet管理器。
第三方Servlet支持:HTTP
任务装入JVM,但不装入Domino servlet管理器。这允许使用第三方servlet管理器,如IBM公司
的WebSphere
Application Server。
Servlet URL路径URL中的路径,通知Domino此URL指向一个
servlet。缺省路径为/servlet。
类路径一个或多个路径的列表,servlet管理器类加载程序将搜索此列表来查找servlet
及其相关类。此设置允许添加其他路径。可以指定
目录、JAR文件和ZIP文件。路径可以是绝对路径也可以是Domino数据目录的相对路径。缺省为
domino\servlet。
样例:
相对目录路径:domino\servlet
绝对目录路径:
c:\apps\MyServlets
JAR文件:c:\javamail\mail.jar
ZIP
文件:domino\servlet\sql.zip
Servlet文件扩充URL文件扩展的列表,示意Domino某个URL引用了
servlet。列表中的每个扩充必须通过servlets.properties
文件中的指令映射到单一的
servlet。缺省为无扩充。
以下设置控制Java Servlet API HttpSession接口的Domino Servlet
Manager的运行时间支持。不使用此接口的服务器小程序不受这些设
置的影响。
注释 HttpSession接口支持与
Domino中的“HTTP会话验证”功能是完全独立的。
设置选项
会话状态跟踪启用:(缺省)servlet管理器定期检查所有
HttpSession实例的用户活动。给定时间段内空闲的会话将被自动终止。
servlet管理器调用实例的
HttpSession.invalidate()成员函数通知servlet该会话已被终止。
禁用:不检查会话的活动状态。
空闲超时时间
等待用户不执行操作的分钟数,此后将终止会话。缺省为30分钟。
最大活动会话允许同时进行的活动的会话数。缺省为1,000
个会话。达到此限制时,空闲时间最长的会话将被终止。
会话持续启用:退出HTTP任务时,servlet管理器将把会话数据保存到Domino
数据目录中一个名为sessdata.ser的磁盘文件中
。会话数据将在HTTP任务再次启动时重新载入。Servlet
已经固定在会话中的对象如果执行 java.io.Serializable接口,则该对象也将被
保存。
禁用:(缺省)退出HTTP
任务时放弃所有会话数据。
用JVM加载程序装入servlet类
servlet
管理器类加载程序不会装入使用自身代码、创建定制类加载程序或执行其他某些受限制的操作的类。如果servlet所要求的类不能通
过servlet
管理器装入,可以试用Domino JVM类加载程序进行装入。JVM加载程序通常用于从与Domino一起安装的Java归档系统(特别
是
java.*和lotus.*软件包)中装入类。通过将servlet从Servlet管理者类路径移到JVM类路径,可以强制使用JVM
加载程序而不使
用servlet管理器加载程序来装入服务器小程序。JVM类路径由NOTES.INI变量JavaUserClasses
指定。
设置servlet的属性
单个servlet的特殊属性可以在位于Domino数据目录中名为
servlets.properties的文本文件中指定。可以指定以下属性:
别名
初始化参数
URL映射扩展
servlet
管理器启动时装载
这些属性是由servlets.properties
文件中的指令来指定的。指令的通用语法是:
servlet(s).<name>.<property>=<value(s)>
指令是区分大小写的。servlets.properties
文件还可以包含空行和以“#”号开头的注释行。servlets.properties
文件不是必须进行设置的
。Servlet的缺省属性是:无别名、无初始化参数、无映射扩展并按需要装入Servlet。
Servlet
别名
别名指令的语法是:
servlet.<alias-name>.code=<class-name>
例如:
servlet.SQLQuery.code=sql.database.query.Servlet
出于安全性的考虑,Domino
不允许servlet名包含将要在servlet URL中使用的周期。这样能够防止恶意用户通过servlet管理器任意加
载Java
包和类。如果服务器小程序有一个包名,则必须为其指定一个别名。以上的例子允许sql.database.query.Servlet servlet被诸如
“http://acme.com/servlet/SQLQuery?month=june”等URL调用。别名在将servlet
的实际名称对用户隐藏方面也很有用。
可以为servlet指定多个别名。servlet管理器在收到第一个指向所有别名的URL时会创建
servlet的一个新实例。新实例创建时,
servlet管理器将调用servlet的init()
成员函数。由于别名可用在属性文件的其他指令中,因此实例可以被赋予不同的属性。例如:可以
为每个别名指定相互独立的初始化参数。同样,由于即使创建了多个实例,servlet
类也只装入一次,因此servlet的实例可以通过使用静态
类变量来共享数据。
为安全起见,如果给servlet指定了别名,则该
servlet在URL中就不能通过类名来引用。这样可以隐藏servlet的真名。
初始化参数
可以在属性文件中指定为servlet
指定初始数据。Servlet可使用ServletConfig.getInitParameter
成员函数来访问这些数据。初始化指令
的语法是:
servlet.<alias or class
name>.initArgs=<name1=value1>,<name2=value2>,...
可以指定多个参数并以逗号进行分隔。例如:
servlet.SQLQuery.initArgs=target=db2,user=Domino,cacheSize=30
URL
映射扩展
URL映射扩展指令的语法是:
servlet.<alias or class
name>.extension=<extension> <extension> ...
可以给servlet
指定多个扩展,相互之间以空格分隔。所有扩展都必须包含在“服务器”记录的“Servlet file extensions”设置中。例如
:无论何时URL
指定扩展“sql”或“sq”,都能使Domino调用SQLQuery
servlet,请将“sql,sq”添加到服务器设置中,并将这一指令添
加到属性文件中:
servlet.SQLQuery.extension=sql
sq
这允许用户调用含有类似以下URL的servlet:
<A
href="http://acme.com/query.sql?month=june">http://acme.com/query.sql?month=june
启动时装入
缺省情况下,servlet
管理器在第一次接收到引用某个servlet的URL时将此servlet的类文件装入内存。但是,可以指定servlet
管理器
启动时就同时装入一个或多个servlet。这样可以防止用户在URL
首次要求装入小程序时被延误。
启动指令的语法如下:
servlets.startup=<alias or class>
<alias or class> ...
请注意“servlets”(服务器小程序)是复数形式,servlet
的名称必须使用空格分开。
如果给小程序指定了一个或多个别名,则可以在启动指令中包含这些别名。这样会使servlet
管理器装入小程序类然后为每个别名创建一个实
例。
servlet管理器装入servlet类之后,只要不是Domino HTTP
任务由控制台命令"tell http quit"终止或由控制台命令"tell http
restart"
重新启动,这些类将一直驻留在内存中。卸载服+
务器小程序之前,servlet管理器将为servlet的每个实例调用destroy()
成员函数,以使其有机会清理资源。
由JVM类加载程序装入的类在HTTP任务终止之前将一直保持加载状态。“tell http
restart”命令不会将类卸载。
属性文件样例
以下是servlets.properties文件的样例:
# Properties
for the sql
servlet
servlet.SQLQuery.code=sql.database.query.Servlet
servlet.SQLQuery.initArgs=cache=30
servlet.SQLQuery.extension=sql
#
Properties for the mail
servlet
servlet.MailServlet.initArgs=mime=enabled,smime=disabled
# Both
servlets should be loaded at startup
servlets.startup=SQLQuery
MailServlet
# end of file
样例:Java servlet
此servlet样例返回一个HTML
页面,上面显示浏览器与服务器小程序请求一起发送的所有HTTP标头。
import java.util.*;
import
java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public
class ExampleServlet extends HttpServlet {
public void doGet
(HttpServletRequest request, HttpServletResponse response) throws
IOException
{
response.setContentType("text/html");
ServletOutputStream ut =
response.getOutputStream();
out.println("<HTML><B>Headers sent with the
request:</B><BR>");
for (Enumeration headers =
request.getHeaderNames();
headers.hasMoreElements();)
{
String headerName = (String)
headers.nextElement();
out.println("<BR>" + headerName + ": " +
request.getHeader(headerName));
}
} //
end of method
} // end of class
编好此代码后,请将ExampleServlet.class文件拷贝到服务器的
domino\servlet中。由于此文件不需要特殊属性,因此不必创建
servlets.properties文件。输入下面的
URL(请使用自己的服务器名)即可从浏览器运行小程序:
<A
href="http://www.yourserver.com/servlet/ExampleServlet">http://www.yourserver.com/servlet/ExampleServlet
由服务器小程序返回的页面上的信息是由浏览器决定的。以下是使用
Netscape浏览器返回的HTML页面:
<HTML><B>Headers received with the
request:</B><BR>
<BR>ACCEPT-LANGUAGE:
en
<BR>CONNECTION: Keep-Alive
<BR>ACCEPT: image/gif,
image/x-xbitmap, image/jpeg, image/pjpeg, image/png,
*/*
<BR>USER-AGENT: Mozilla/4.05 [en] (Win95; U
;Nav)
<BR>ACCEPT-CHARSET: iso-8859-1,*,utf-8
<BR>HOST:
test1
54、Domino应用程序和XML
XML最明显的优点之一就是因为这种新兴的技术建立在HTML和SGML
的标准之上,所以它代表数据共享技术的发展,这种发展不要求新的硬
件和软件。XML与Domino应用程序结合得非常好。在XML
提供了描述数据并通过网络共享功能的应用程序中,Domino提供了使数据共享安
全、可靠且有效而需要的所有其他工具。除了提供用来编写XML数据和向
XML parser供应XML数据的媒体外,Domino Designer
还提供:
强大的开发环境,包括一套可用于建立协作性的电子商务应用程序的编程工具
保护数据所需的安全层
从数据库访问控制到单个域加密;使用户有效定位数据的搜索能力;工作流操作的消息处理,如定单确认、电子邮件
通知和文档评阅,除Domino Designer
提供的开发工具之外,还可以得到连接服务,允许您将应用程序与以下主后端系统连接起来:
ERP系统,如SAP、PeopleSoft、Oracle和JD
Edwards
关系数据库,如DB2、Sybase和Oracle
事务系统,如IBM CICS、MQ Series、WebSphere和
BEA Tuxedo
使用XML增强的应用程序
为了说明如何在Designer应用程序中集成
XML,可以考虑一个售书的联机站点,其中:描述每本书的数据的XML标记是标准标记,如
<bookTitle>和
<bookAuthor>。处理书的数据的所有应用程序都可使用这些标准标记描述书的特定数据。应用程序可使用这种标准数据格式与
书的供应商以及购买者进行交互。
您可构思的任何应用程序都可使用
XML。例如,可以构思一个自动供应商店,它维护具有自动部件的联机目录的一个电子商务站点。使用XML
作为描述部件信息的公共语言,购买代理商可以从不同的供应商处将关于部件价格和可用性的信息直接放入Domino
数据库。用户可以访问此
数据库来查找他们可联机定购的部件的最新信息。Domino
然后提供所有必要工具来完成定购部件和管理库存的安全联机事务处理。
另一个样例是人力资源的“自助式服务”应用程序,雇员可使用它访问并管理自己的个人数据。例如,公司可以在
Intranet站点上发布福利
信息,允许雇员使用Notes客户机或Web浏览器联机选择自己的福利。选择之后,雇员以XML
格式将数据提交给服务器(如IBM的
WebSphere Application Server)。服务器使用Java servlet将数据传递到
HR后端系统(例如:Peoplesoft数据库),并在事务完成后通
知Domino。XML标记描述被传递的数据,使该数据在Peoplesoft
数据库中代表的意义与在Domino应用程序中代表的相同。
在Designer应用程序中包括XML的方法
有几种方法可将XML包括在
Designer应用程序中并将数据供应给XML parser。
可以在表单或页面上输入描述数据的XML标记。通过将表单或页面的内容作为HTML
处理,可以向能够解释标记的XML parser供应XML。
XML
描述正在显示的数据。要为表单或页面上的数据定义格式和样式,可以使用通过扩展样式表语言(XSL)创建的样式表将数据转换为
HTML
,或者可以使用级联样式表(CSS)以直接在客户机上定义XML的样式。
还可以通过在列公式中包括XML标记以使用视图产生XML
数据。要将视图传递到服务器,必须将它嵌入页面或视图以便在正确的XML文档定
义标记中覆盖整个视图。
可以使用代理或servlet
动态生成或存储XML。代理用于在Domino应用程序中运行预定的过程。Servlet基于来自Web浏览器的请求在服
务器上运行。
关于
Domino DTD和如何使用Java方法生成XML的详细信息,请参阅《Programming
Guide》中的第三章。
应用设计
在表单或页面中放入XML
表单是用于XML的最好工具。可以输入XML
标记,并在数据的标记中包括域。结果是XML文档,带有传递到XML parser时非常有意义的数
据。还可以将XML放到页面上。Domino
Designer中的页面是显示信息的数据库设计元素。可对传统的应用程序内容使用页面(如主页),或
使用XML
标记来描述页面上的数据。您将在关于在视图中使用XML一节中了解到,页面有助于嵌入视图并添加处理视图所需的XML
标记。页
面还有助于创建可扩展的样式表(XSL)或级联样式表(CSS)以指导服务器或浏览器如何格式化使用XML标记描述的数据。
使用
XML元素定义表单上的数据
当在表单或页面上使用XML元素时,必须遵循一定的规则以构建有效的XML,而且必须正确格式化XML
标记。
XML标记与HTML标记非常相似。但有一些不同的规则用于构建XML标记,当标记数据时必须遵循它们。例如,嵌入XML的要求比嵌入
HTML
标记的要求更严格。关于使用XML标记来标记数据的详细信息,请参阅IBM XML Web站点:<A
href="http://www.ibm.com/xml">http://www.ibm.com/xml
作为在表单上使用XML
的样例,联机手册目录中每本书的输入项都可能是如下所示:
<?xml version="1.0"
encoding="UTF-8"?>
<BOOK>
<bookTitle>Chess for the
Master</bookTitle>
<bookCategory>Games</bookCategory>
<bookAuthor>Alice
B.
Charles</bookAuthor>
<bookPrice>10</bookPrice>
<bookListPrice>12</bookListPrice>
<bookISBN>0-980-38475-81</bookISBN>
<bookDatePublished>April
1997</bookDatePublished>
<bookAbstract>The authority on all the
latest chess moves, including the entire Big Blue
arsenal.</bookAbstract>
</BOOK>
以XML格式创建文档
1.
新建一个表单或页面。
2.输入文档类型声明,如下所示:
<?xml version="1.0" ?>
可以选择性地添加编码参考,如下所示:
<?xml version="1.0" encoding="UTF-8"
?>
3.输入XML元素,一般是带有子元素的根元素。
4.输入存有要使用XML
标记的数据的域。
5.选择“设计”“表单属性”。
6.在“高级”附签上,选择“将文档内容作为
HTML”。
该属性通知Domino将所有文档文本传递给HTTP请求者,而不必生成HTML标记。
7.
保存并关闭表单。
8.要查看从表单创建的文档,可创建一个使用表单公式的视图(该表单公式解析为XML表单名称)。
使用样式表格式化
XML数据
XML
的属性之一是它只描述数据而不提及数据的外观。对于计算机到计算机的事务,外观并不重要,但如果要将数据显示给用户时(例如:将
其贴在Web
站点上),外观就很重要。XML文档通常是依靠样式表来确定数据的布局和外观。一些浏览器为通俗元素(如<;Para>、<List>和
<Item>)提供简单的缺省样式,但通常情况下必须使用样式表来描述数据格式。随XML可以使用两种类型的样式表:
扩展样式表语言
(XSL)描述如何将XML转换为HTML或另一种版本的XML。
级联样式表(CSS)直接在支持CSS的浏览器上定义XML
的样式。
要使用样式表,可在文档类型声明之后和根元素之前直接插入样式表参考。例如:
<?xml version="1.0"
encoding="UTF-8"?>
<?xml-stylesheet type="text/css"
href="bookdisplay.css"?>
<BOOK>
如果在页面上创建了一个样式表,可设置页属性为“将页面内容作为
HTML”。
将关于书的信息转换为HTML的XSL样式表可能如下所示:
<?xml version="1.0"
?>
<xsl:stylesheet xmlns:xsl="<A
href="http://www.w3.org/TR/WD-xsl">http://www.w3.org/TR/WD-xsl" >
<xsl:template
pattern="BOOK">
<HTML>
<HEAD>
<TITLE><xsl:value-of
select="BOOKTITLE" /></TITLE>
</HEAD>
<BODY
bgcolor="F0FFF8">
<B><xsl:value-of
select="BOOKAUTHOR"/></B>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
<?xml:stylesheet
type="text/xsl" href="/roibooks.nsf/bookform.xsl"?>
级联样式表(CSS)并不将XML
转换为HTML,而是直接向服务器提供如何格式化每个XML元素的指令。书的CSS可能如下所示:
BOOK {
display:
block;
border: 1px solid #cccccc;
}
BOOKTITLE {
display:
block;
float: left;
margin-right: 10px;
padding:
5px;
}
BOOKAUTHOR {
display: block;
font-style.
italic;
}
相关主题
在Designer应用程序中包括XML
Domino应用程序和XML
XML
术语
应用设计
使用视图生成XML
视图使用户可以控制哪些文档以XML显示并可以跟踪信息和将其转换到XML中以通过
Intranet或万维网分发。可以在Lotus Web站点
<A
href="http://www.lotus.com/xml">http://www.lotus.com/xml上的ROI Books
应用程序中找到此部分中描述的视图。
将XML标记映射到视图
为了使用视图产生XML,必须将XML标记从DTD
映射到视图列中。一旦创建了视图并将XML标记映射到其中后,就可以将视图嵌入到页面中
。嵌入到页面中的视图在Web上保持了其在Notes
客户机应用程序中的同样功能,并使用户可以控制视图显示的大小及外观。对于显示XML
的视图,页面包含了XML声明和根元素。
样例
ROI
Books应用程序使用列公式将文档中的每个元素和域分配给“XML
视图”中的列。第一个子元素的列公式还包含打开父元素标记,而最后
一个子元素的列公式包含关闭父元素标记。例如,第一列的列公式为:
"<BOOK><BOOKTITLE>"+bookTitle+"</BOOKTITLE>"
父元素是
<BOOK>,子元素是<BOOKTITLE>,bookTitle是包含<BOOKTITLE>
标记内容的域名。<BOOK>中有多个子元素包括在此视图中,所以
<BOOK>元素直到添加了最后一个子元素后才关闭。在ROI
Books
应用程序中,最后一个子元素被分配给视图的最后一列。最后一列的公式为
:
"<BOOKPUBLISHDATE>"+bookDatePublished+"</BOOKPUBLISHDATE></BOOK>"
“XML
视图”被嵌入到包含XML声明和根元素<BOOKCATALOG>的页面中。
将XML映射到视图
1.
创建一个视图并打开。
2.选择“编辑”“属性”以打开“视图”属性框。
3.单击“高级”附签。
4.在“Web访问”中,选择“将视图内容作为HTML”。如果未选择此属性,Domino为视图内容生成
HTML。另外,如果未选择此属性,
则嵌入页面中的视图内容不可见。
5.单击“对象”附签中的“View
Selection”并添加选择公式以定义哪些文档将包括在视图中。例如:用于联机书店的应用程序包含已
批准定单的视图。使用以下公式为视图选择文档:
SELECT
status="Approved"
6.单击“对象”附签中的“Form. Formula”并输入公式以选择模板表单。
7.将列添加到视图中。
8.单击视图的第一列。
9.使用以下语法在Script.
区域中输入列公式。
"<;PARENT><CHILD>"+fieldname+"<\CHILD>"
如果某列中有多个元素,在第一个列公式末尾添加一个分号
(;),并在下面为下一个元素添加列公式。
"<;PARENT><CHILD>"+fieldname+"<\CHILD>";
"<CHILD>"+fieldname+"<\CHILD>";
"<CHILD>"+fieldname+"<\CHILD>"
提示
使用以下语法使域成为元素的一个属性。
"<CHILD
attributeName=\""+fieldname+"\">"+fieldname2+"</CHILD>
10.
单击第二列并使用以下语法将列公式键入到Script.
区域中。
"<CHILD>"+fieldname+"<\CHILD>"
11.对每个XML元素(最后一个除外)重复步骤
10。
12.对最后一个子元素使用以下语法。
"<LASTCHILD>"+fieldname+"<\LASTCHILD></PARENT>"
在页面中嵌入视图
1.打开或创建一个页面。
2.选择“设计”“页面属性”。
3.单击“页面信息”附签。
4.
在“Web访问”中,选择“将页面内容作为HTML”,然后关闭“页面”属性框。
5.在希望显示嵌入视图的位置之上键入XML
声明。
6.将光标置于希望显示嵌入视图的位置。
7.选择“创建”“嵌入元素”“视图”。
8.
(可选)如果不希望在所有环境中显示相同的视图,请单击“选择基于公式的视图”。单击“确定”关闭对话框后,在“编程”窗格
中编写公式以便显示适当的视图。
9.(可选)单击嵌入视图,并选择“元素”“视图属性”,更改对齐方式或样式,或在某个条件下隐藏此元素。
10.
在视图下键入一个闭合的根标记。
要删除嵌入视图,请单击“工作”窗格中的嵌入视图并选择“编辑”“清除”。
相关主题
在Designer
应用程序中包括XML
Domino应用程序和XML
XML术语
在表单或页面中放入XML
应用设计
使用代理生成
XML
使用代理生成XML的最大优点之一是具有灵活性。可以基于事件或对URL命令的响应设置代理定时运行。这种灵活性对于创建自动
XML应用
程序是很有必要的。例如:书店的Web
站点包含一个数据库,其客户向每月一次的新闻简报投稿。其中有一个编辑和批准工作流进程,负责在
稿件被批准后将它们移到系统中。代理每小时都要运行以收集可以发表的稿件并将稿件转换成
XML。然后该代理将稿件作为静态XML文档置于
另一个数据库中,订阅者可在此收集文档。
ROI Books应用程序包含一个称为
createXML的代理,此代理为视图中的每个文档生成XML并基于浏览器或服务器的请求将其发送出去。要
查看此代理的输出,在Microsoft
Internet Explorer 5中打开ROI Books应用程序并单击XML Agent链接,或使用OpenAgent URL
命令
运行代理:
<A
href="http://host/roiBooks.nsf/createXML?OpenAgent">http://host/roiBooks.nsf/createXML?OpenAgent
编写的代理不仅可以打印输出,也可使用
LSO或DECS连接器API将XML输出保存在字符串变量中并将其写入静态XML文档或另一个数
据库系统中。
样例:XML
代理
此样例是LotusScript.代理,它在称为XML的视图中提取每个文档、根据其内容创建XML并打印输出。
Dim s As
New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim
view As NotesView
Set db = s.currentDatabase
Set view = db.GetView( "XML"
)
Set doc = view.GetFirstDocument
Print "Content-type:
text/xml"
'Prevents Domino from sending default headers.
"<BOOKCATALOG>"
'BOOKCATALOG is the root element of the XML
document.
While Not ( doc Is Nothing )
'Loop as long as there are document
objects available.
Print "<BOOK>"
'Send the parent element for each book document.
"<bookTitle>"+doc.bookTitle(0)+"</bookTitle>"
"<bookAuthor>"+doc.bookAuthor(0)+"</bookAuthor>"
"<bookPrice>"+doc.bookDiscountPrice(0)+"</bookPrice>"
"<bookCategory>"+doc.bookCategory(0)+"</bookCategory>"
Print "</BOOK>"
'Close the book element
tag.
Set doc = view.GetNextDocument( doc )
'Get
the next document in the view.
Wend
"</BOOKCATALOG>"
'Closes the root element.
相关主题
在Designer
应用程序中包括XML
Domino应用程序和XML
XML术语
应用设计
使用Java servlet生成
XML
Servlet是为响应Web浏览器的请求而运行的Java程序。与代理不同,当Web服务器启动且驻留在服务器上时
Servlet才装载。它们通常
用于动态生成和更新Web页以及在不同的应用程序之间交换数据。可以扩展Servlet的功能,以使用XML
作为应用程序之间的通用语言在应
用程序之间架起一座桥梁。Java servlet不仅能产生XML标记并传递到服务器以进行处理,Servlet
还可以与LotusXSL处理器进行交互作
用以格式化XML标记描述的数据。XML与XSL
配合使用,将为您提供一种定制数据传输的强大工具。
XML Servlet应用程序的样例
作为Servlet如何促进XML
传送定制数据包的样例,可考虑一个组织,其中的域销售代表使用不同的设备(如Notes客户机、浏览器或PDA
)从Domino
数据库下载信息。销售代表可向Domino应用程序请求所有与特定客户有关的信息。Servlet将来自不同数据源的信息集合到一
起并使用合适的XML
标记将数据打包。Servlet还可以使用LotusXSL processor将样式应用于使用XML
标记的数据并以最适合于连接设备
的格式传送数据。这种情况下,通过窄带电话线与PDA连接的销售代表比通过宽带网络连接与Notes
客户机连接的销售代表获取的信息要少
。以下图形显示连接设备、运行Servlet的Domino
应用程序以及后端数据库之间的关系:
在另一个关于Servlet如何提供有意义的定制数据的样例中,可考虑一个房地产应用程序,其所售房屋的数据存储在
Domino数据库中。一个
房地产代理商或潜在的购买者使用Web浏览器向Domino
应用程序请求所售房屋的信息。用户指定搜索标准,如所需的卧室间数。Servlet在
Domino
应用程序中运行,查找并装配与指定标准匹配的所有文档。Servlet动态折叠它在正确的XML标记(如<HOUSE>和
<HOUSETYPE>)中
找到的数据。然后使用LotusXSL processor来应用XSL样式表中的样式并将XML
标记的数据转换为HTML,将正确格式的数据推入请求的浏
览器。
创建和使用Servlet
可以从头开始创建Servlet,通过URL
引用现有的Servlet,或使用预置Servlet。每次修改Servlet时,必须重新启动服务器以查看所做
的改动。运行Servlet
涉及到编写Servlet、在Domino中启用Servlet支持以及必要情况下设置Servlet属性等方面的内容。
关于在Domino
服务器上运行Servlet的完整指导信息,请参阅Domino Designer R5的联机帮助。
关于Java servlet
的综合信息,请访问Sun Microsystems站点:<A
href="http://www.java.sun.com">http://www.java.sun.com
在Servlet中包括
XML
要在Java servlet中包括XML,需要LotusXSL Processor。可以从IBM的AlphaWorks
站点
(<A
href="http://alphaworks.ibm.com/formula/LotusXSL">http://alphaworks.ibm.com/formula/LotusXSL)下载
LotusXSL Processor。
相关主题
使用代理生成XML