站点jsp空间

jsp空间  时间:2021-01-07  阅读:()

版权所有IBM公司2009商标通过单击操作创建IBMLotusWebContentManagement站点结构第1页,共21通过单击操作创建IBMLotusWebContentManagement站点结构HebbaSoliman高级软件工程师EMCAhmedKhairyIT专家EMC2009年12月29日了解一种使您能够以自动化方式在IBMLotusWebContentManagement中定义站点结构的简单解决方案.
这个解决方案使您能够节省花在既耗时又沉闷的任务上面的时间.

编辑注:您很精通这个主题吗希望分享您的经验吗请马上加入到IBMLotus软件wiki项目.
LotusWebContentManagementwiki简介如果您使用IBMLotusWebContentManagement的话,一个经常出现的任务就是定义站点结构.
这个任务本身是重复的并且十分耗时;您必须采取10多个不同的步骤来创建一个站点或站点区域.
而且,站点结构被有意设计为不可移植;您无法将站点结构从一个服务器上的某个库导出到另一个服务器上的不同库.
相反,您需要手动重新创建整个站点结构.
由于构成单一站点结构的站点和站点区域数可能会达到数千个,因此您需要一种方法来自动化完成站点结构的定义并使它易于迁移、导出和导入.
在本文中,您将学习一种简单的方法来将站点结构定义为一个XML文件并进行相应的部署.
先决条件您应当熟悉以下这些技术:IBMWebSpherePortalV6.
0和更高版本,以及它的管理和组件IBMLotusWebContentManagementXML为了演示如何在LotusWebContentManagement中创建站点结构且无需手动创建所有站点和站点区域,本文使用LotusWebContentManagementAPI和一个包含站点结构的XML文件.
您可以通过针对本文下载部分提供的XML模式对包含站点结构的XML文件进行验证来创建它.
XML模式将验证结构和必要字段来预防运行时错误.
developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第2页,共21您可以定义许多站点、站点区域和默认内容来在包含完整站点结构的XML文档中创建站点结构.
首先,创建下面这些必要部件:LotusWebContentManagement库将在站点结构中使用的编写模板将在站点结构中使用的演示模板将在安全设置部分中使用的用户将在编写模板中使用的工作流、工作流操作和工作流阶段然后,以XML文件的形式定义站点结构,指定库、站点、站点区域等等.
为了确保提供的信息足够用于在LotusWebContentManagement中创建站点,XML文件根据本文下载部分提供的XSD文件中定义的模式进行构建.
XSD文件包含创建完整站点结构所需的所有验证,以及包含某些字段的默认内容.
您可以创建一个JSP组件来解析XML文件并创建其中定义的站点区域.
实现在这个小节中,我们将描述实现解决方案所需的步骤.
我们首先将讨论如何创建XML文件和XSD文件,随后讨论用于解析文件的JSP组件.
XML创建XML文件包含创建站点结构的所有信息.
它包含库名、站点结构、站点区域结构和默认内容.
需要在与您的需求相对应的结构中创建一个XML文件.
参见清单1中的XML示例,它与图1所示的站点结构相对应.
图1.
站点结构站点结构由一个站点区域组成;这个站点区域反过来又由另一个站点区域组成.

清单1.
创建站点结构所使用的XML示例auth_newspt_newsDetail[allauthenticatedportalusers]anonymousportaluserDefault_NewsDefault_Newsauth_newsibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第3页,共21txt_headlineHeadlinefordefaultContentrtf_bodyBodyforthedefaultContentDefault_NewsDefault_Newsauth_newstxt_headlineHeadlinefordefaultContentrtf_bodyBodyforthedefaultContentDefault_Newsauth_newspt_newsDetail[allauthenticatedportalusers]anonymousportaluser图2展示了XML元素和实现解决方案后生成的输出之间的样例映射.
图2.
XML与LotusWebContentManagement对象和区段之间的映射developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第4页,共21如您所见,实际站点结构与XML文件之间的映射非常简单,具有一个表示库的根元素.
这个根元素随后包含另一个与站点对应的元素,定义它的名称并显示名称.
站点区域以嵌套方式在XML文件中定义,用于获得必需的站点结构.
每个站点和站点区域都包含一个设置区段,其中包含安全设置和模板映射区段.
下面是必须加以考虑的限制因素:安全设置和模板映射可以在各自的元素或树中的最高级别的站点或站点区域中针对每个站点或站点区域创建,并且其子元素将从父元素中继承.
内容安全设置和工作流被添加到编写模板组件中,而不是XML文件中的默认内容区段中.
模板映射和默认内容创建中使用的编写模板和演示模板必须提前创建.

通过定义默认内容的名称,默认内容可以在多个站点区域中重用.
当您在XML文件中定义了完整的默认内容元素后,您可以通过定义一个只包含名称元素的默认内容标记来使用它.
如果默认内容已经存在于库中,也可以使用在多个不同位置重用默认内容这一特性.
XML模式验证如前所述,为了避免丢失LotusWebContentManagement用于站点创建的数据,您需要使XML文件遵从一个XSD文件.
这种遵从性可以保证表1中列出的验证是有效的.
表1.
XML模式元素/属性验证元素元素/属性类型有效范围值LibrarySites元素0.
.
nNALibraryName属性必要字符串SiteSiteArea元素0.
.
nNASiteName属性必要字符串SiteDisplayName属性可选字符串SiteSettings元素可选NASiteAreaSiteArea元素0.
.
nNASiteAreaName属性必要字符串SiteAreaDisplayName属性可选字符串SiteAreaSettings元素可选NASiteAreaDefaultContent元素可选NADefaultContentName元素必要NADefaultContentDisplayName元素可选NADefaultContentAuthoringTemp元素可选(如果已定义了项的话)NADefaultContentTextComponent元素0.
.
nNADefaultContentRichTextComponent元素可选NATextComponentFieldName元素必要(像在编写模板中一样引用LotusWebContentManagementTextComponent字段名)NAibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第5页,共21TextComponentTextComponent元素必要NATextComponentFieldName元素必要(像在编写模板中一样引用LotusWebContentManagementRichTextComponent字段名)NATextComponentTextComponent元素必要NASettingsTemplateMapping元素0.
.
nNASettingsSecuritySettings元素可选NATemplateMappingAuthoringTemp元素必要(引用LotusWebContentManagement编写模板名)NATemplateMappingPresentationTemp元素必要(引用LotusWebContentManagement演示模板)NASecuritySettingsAccessRight元素0.
.
nNAAccessRightType属性必要addReadAccessMembers/addEditAccessMembersoraddDeleteAccessMembersAccessRightAccess元素1.
.
nNAJSP组件您已经在一个遵循XSD的XML文件中定义了您的站点结构,现在需要创建一个JSP组件来处理对XML文件的解析,并使用LotusWebContentManagementAPI将站点结构导入到LotusWebContentManagement库来执行实际的LotusWebContentManagement站点创建工作.
选择New-JSP组件.
使用名称jsp_createSiteStructure创建JSP组件,然后将其指向路径为/jsp/html/createSiteStructure.
jsp的JSP文件.
将您的JSP组件存储在本地Renderingportlet中.
这个JSP文件的物理路径位于一个目录中,类似清单2中的代码.
清单2.
物理路径目录installedAppsWCM_Local_ng_Portlet_PA_dvme0nk.
earPA_dvme0nk.
warjsphtmlcreateSiteStructure.
jspJSP文件创建了一个称为CreateSiteStructure的按钮,单击此按钮时将开始解析XML文件,首先将解析每一个站点.
XML文件的路径现在可以进行编辑.
清单3中的文件被认为位于与JSP文件相同的位置.
代码将进入工作空间并连接到文件中的定义的库.
参见清单3中的代码.
清单3.
创建新的评论内容的JSP文件.
.
.
developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第6页,共21这里使用了一个实用类,它包含了JSP代码中用来创建站点结构的所有helper方法.
基于本文的目的,可以创建一个名为wcmUtil.
jsp的JSP组件来包含所有这些方法.
这个JSP组件被包含在createSiteStructure.
jsp中,如清单3所示,使用其中的.
清单4-20展示了在helper类中用于创建站点结构的方法.
清单4.
连接到工作空间和库privateWorkspaceworkspace;/**ConnecttoLotusWebContentManagementworkspacewithcurrentuserif*loggedinoranonymousifuserisnotloggedin**SettheLotusWebContentManagementdocumentlibrarytoaLibraryName*/publicWorkspaceopenWorkspaceLibrary(HttpServletRequestrequest,StringaLibraryName)throwsServiceNotAvailableException,OperationFailedException{//ConnecttoWCMWorkspaceif(request.
getUserPrincipal()!
=null){workspace=WCM_API.
getRepository().
getWorkspace(request.
getUserPrincipal());}else{workspace=WCM_API.
getRepository().
getAnonymousWorkspace();}//setlibrarytothepassedlibrarynameif(workspace!
=null){DocumentLibrarydocLib=workspace.
getDocumentLibrary(aLibraryName);if(docLib!
=null){workspace.
setCurrentDocumentLibrary(docLib);}}returnworkspace;}清单5.
解析和创建站点/**Parsesiteelement*Ifsitealreadyavailable,retrievethesiteobject,editthesite*Ifsitenotalreadycreated,createanewsiteandsetthenameand*displaynameanditssettings*Savethesitetotheworkspace*/publicSitecreateSite(ElementaSiteElement){StringsiteName=aSiteElement.
getAttribute("Name");StringsiteDisplayName=aSiteElement.
getAttribute("DisplayName");Sitesite=null;try{DocumentIdsiteId=getWCMDocumentByName(siteName,DocumentTypes.
Site);if(siteId!
=null){site=(Site)workspace.
getById(siteId);developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第8页,共21}else{site=workspace.
createSite();site.
setName(siteName);}site.
setTitle(siteDisplayName);site=(Site)retrieveAddSettings(site,aSiteElement,false);workspace.
save(site);}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();}returnsite;}清单6.
解析和创建站点区域/**Parsesiteareaelement*Ifsiteareaalreadyavailable,retrievethesiteareaobject,editthesitearea*Ifsiteareanotalreadycreated,createanewsiteareaandsetthename*anddisplaynameanditssettings*Addadefaultcontenttothesiteareaifavailable*Savethesiteareatotheworkspace*/publicSiteAreacreateSiteArea(ElementaSiteAreaElement,DocumentIdparentId){StringsiteAreaName=aSiteAreaElement.
getAttribute("Name");StringsiteAreaDisplayName=aSiteAreaElement.
getAttribute("DisplayName");SiteAreasa=null;try{StringparentPath=workspace.
getPathById(parentId,true,true);StringsiteAreaPath=parentPath+"/"+siteAreaName;DocumentIdsiteAreaId=getWCMDocumentByPath(siteAreaPath,Workspace.
WORKFLOWSTATUS_ALL);if(siteAreaId!
=null){sa=(SiteArea)workspace.
getById(siteAreaId);}else{sa=workspace.
createSiteArea(parentId,null,1);}sa=(SiteArea)retrieveAddSettings(sa,aSiteAreaElement,true);if(sa!
=null){sa.
setTitle(siteAreaDisplayName);sa.
setName(siteAreaName);workspace.
save(sa);sa=addDefaultContentToSiteArea(sa,aSiteAreaElement);if(sa!
=null){booleansaved=saveToWorkspace(sa);System.
out.
println("sitearea="+sa.
getName());if(!
saved){returnnull;}//checkingifsiteareacontainsanyothersiteareachildrenNodeListSiteAreaNodeList=aSiteAreaElement.
getChildNodes();for(Nodenode=aSiteAreaElement.
getFirstChild();node!
=null;ibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第9页,共21node=node.
getNextSibling()){if(node.
getNodeType()==Node.
ELEMENT_NODE&&node.
getNodeName().
equals("SiteArea")){ElementsiteAreaEL=(Element)node;SiteAreachildSA=createSiteArea(siteAreaEL,sa.
getId());if(childSA!
=null){System.
out.
println("childSAfor="+sa.
getName()+"="+childSA.
getName());}else{returnnull;}}}}else{returnnull;}}returnsa;}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();}returnnull;}清单7.
解析和创建默认内容/**Parsethedefaultcontentelement*Ifcontentalreadyavailable,retrievethecontentobject,andeditit*Ifcontentnotalreadycreated,createanewcontentobjectandsetthe*nameanddisplaynameanditssettings*Ifauthoringtemplateprovided,overwriteifalreadyset*Addtextcomponentsandrichtextcomponentstothecontent*Savethedefaultcontenttothesitearea*/publicSiteAreaaddDefaultContentToSiteArea(SiteAreaaSiteArea,ElementaSiteAreaElement){DocumentIddefaultContentId=null;Elementdefaultel=getChildByName(aSiteAreaElement,"DefaultContent");StringcontentName=getElementValueByTagName("Name",defaultel);defaultContentId=getWCMDocumentByName(contentName,DocumentTypes.
Content);Contentcontent=null;StringcontentDisplayName=getElementValueByTagName("DisplayName",defaultel);StringauthoringTempName=getElementValueByTagName("AuthoringTemp",defaultel);DocumentIddefaultAuthId=null;if(!
authoringTempName.
equals("")){defaultAuthId=getWCMDocumentByName(authoringTempName,DocumentTypes.
AuthoringTemplate);}System.
out.
println("defaultAuthId="+defaultAuthId);try{developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第10页,共21//ifcontentalreadyexistinginthelibrary,re-useitif(defaultContentId!
=null){content=(Content)workspace.
getById(defaultContentId);//ifauthoringtemplateprovidedinthefile,overwritetheexistingoneif(defaultAuthId!
=null){content.
setAuthoringTemplateID(defaultAuthId);}}elseif(defaultAuthId!
=null){//ifcontentnotavailable,createanewonecontent=workspace.
createContent(defaultAuthId,aSiteArea.
getId(),null,ChildPosition.
START);defaultContentId=content.
getId();content.
setName(contentName);}else{System.
out.
println("Exception=AuthoringTemplatefordefaultcontent"+contentName+"ismissing");returnnull;}if(!
contentDisplayName.
equals("")){content.
setTitle(contentDisplayName);}content=retrieveAddTextComponentToContent(content,defaultel);if(content==null){returnnull;}content=retrieveAddRichTextComponentToContent(content,defaultel);if(content==null){returnnull;}while(!
content.
isPublished()){content.
nextWorkflowStage();}workspace.
save(content);}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();}System.
out.
println("defaultContentfor="+aSiteArea.
getName(defaultContentId.
getName());aSiteArea.
setDefaultContent(defaultContentId);returnaSiteArea;}清单8.
解析文本组件/**ParseDefaultContentelement*Searchfortextcomponentelements*Loopingoveralltextcomponentchildelements*CallingmethodaddTextComponenttoaddthe*textcomponenttothecontent*/publicContentretriveAddTextComponentToContent(ContentaContent,ElementaContentElement){NodeListtexttnl=aContentElement.
getChildNodes();ibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第11页,共21for(Nodenode=aContentElement.
getFirstChild();node!
=null;node=node.
getNextSibling()){if(node.
getNodeType()==Node.
ELEMENT_NODE&&node.
getNodeName().
equals("TextComponent")){ElementtextCompel=(Element)node;StringtextField=getElementValueByTagName("FieldName",textCompel);Stringtext=getElementValueByTagName("Value",textCompel);aContent=addTextComponent(aContent,textField,text);if(aContent!
=null){System.
out.
println("addingtextField="+textField+"tocontent"+aContent.
getName());}}}if(aContent==null){returnnull;}else{returnaContent;}}清单9.
解析富文本组件/**ParseDefaultContentelement*Searchforrichtextcomponentelements*Loopingoverallrichtextcomponentchildelements*CallingmethodaddRichTextComponenttoaddtherichtext*componenttothecontent*/publicContentretrieveAddRichTextComponentToContent(ContentaContent,ElementaContentElement){NodeListrichTexttnl=aContentElement.
getChildNodes();for(Nodenode=aContentElement.
getFirstChild();node!
=null;node=node.
getNextSibling()){if(node.
getNodeType()==Node.
ELEMENT_NODE&&node.
getNodeName().
equals("RichTextComponent")){ElementrichtextCompel=(Element)node;StringtextField=getElementValueByTagName("FieldName",richtextCompel);Stringtext=getElementValueByTagName("Value",richtextCompel);aContent=addRichTextComponent(aContent,textField,text);if(aContent!
=null){System.
out.
println("addingrichtextField="+textField+"tocontent"+aContent.
getName());}developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第12页,共21}}if(aContent==null){returnnull;}else{returnaContent;}}清单10.
创建和添加文本组件/**Gettextcomponentfromthecontentaccordingto*thetextcomponentname*Setthetextcomponentwiththevaluesent*Addthetextcomponenttothecontent*/publicContentaddTextComponent(ContentaContent,StringaTextField,StringaValue){try{TextComponenttxtComp=(TextComponent)aContent.
getComponent(aTextField);txtComp.
setText(aValue);aContent.
setComponent(aTextField,txtComp);}catch(ComponentNotFoundExceptionex){System.
out.
println("Exception:"+aTextField+"isnotavalidTextComponent");returnnull;}catch(Exceptione){System.
out.
println("Exception="+e);returnnull;}returnaContent;}清单11.
创建和添加富文本组件/**GetrichtextcomponentfromthecontentaccordingtotheRTFname*Settherichtextcomponentwiththevaluesent*Addtherichtextcomponenttothecontent*/publicContentaddRichTextComponent(ContentaContent,StringaTextField,StringaValue){try{RichTextComponentrichTxtComp=(RichTextComponent)aContent.
getComponent(aTextField);richTxtComp.
setRichText(aValue);aContent.
setComponent(aTextField,richTxtComp);RichTextComponentrtf=(RichTextComponent)aContent.
getComponent(aTextField);}catch(ComponentNotFoundExceptionex){System.
out.
println("Exception:"+aTextField+"isnotavalidRichTextComponent");returnnull;}catch(Exceptione){System.
out.
println("Exception="+e);returnnull;}returnaContent;}ibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第13页,共21清单12.
解析设置元素/**Parsesiteareaorsiteelement*Searchforsettingselement*callmethodretrieveAddTemplateMappingtoaddtemplatemappingtositeorsitearea*callmethodaddSecuritySettingstoaddsecuritysettingstositeorsitearea*/publicObjectretrieveAddSettings(SiteFrameworkContaineraWCMObject,ElementaObjectElement,booleanisSiteArea){Elementsettingsel=getChildByName(aObjectElement,"Settings");if(settingsel!
=null){if(isSiteArea){aWCMObject=(SiteArea)retrieveAddTemplateMapping(aWCMObject,settingsel);aWCMObject=(SiteArea)addSecuritySettings(aWCMObject,settingsel);}else{aWCMObject=(Site)retrieveAddTemplateMapping(aWCMObject,settingsel);aWCMObject=(Site)addSecuritySettings(aWCMObject,settingsel);}}returnaWCMObject;}清单13.
将SecuritySettings添加到LotusWebContentManagement对象/**Parsesettingselement*SearchforSecuritySettingselement*ForeverySecuritySettingselement,findtheAccessRightelement*loopovertheAccessRightelementsandgetthetypeoftheaccess*Accordingtotheaccesstype,aspecificmethodinLotus*WebContentManagement*willbecalledtoaddtheaccessrights*/publicObjectaddSecuritySettings(SiteFrameworkContaineraWCMObject,Elementsettingsel){for(Nodenode=settingsel.
getFirstChild();node!
=null;node=node.
getNextSibling()){if(node.
getNodeType()==Node.
ELEMENT_NODE&&node.
getNodeName().
equals("SecuritySettings")){Elementsecel=(Element)node;NodeListaccessRightsnl=secel.
getChildNodes();for(NodeaccessRightNode=secel.
getFirstChild();accessRightNode!
=null;accessRightNode=accessRightNode.
getNextSibling()){if(accessRightNode.
getNodeType()==Node.
ELEMENT_NODE&&accessRightNode.
getNodeName().
equals("AccessRight")){ElementaccessRightsel=(Element)accessRightNode;StringaccessType=accessRightsel.
getAttribute("Type");NodeListaccessnl=accessRightsel.
getChildNodes();if(accessnl!
=null){for(inty=0;y0){returnfalse;}}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();returnfalse;developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第16页,共21}returntrue;}清单16.
按路径检索LotusWebContentManagement对象/**ThisisahelpermethodthatretrievesaLotusWebContentManagement*objectbyitspathandreturnstheDocumentId*/publicDocumentIdgetWCMDocumentByPath(StringwcmPath,intworkFlowStatus){DocumentIdwcmDocumentId=null;try{if(wcmPath!
=null){DocumentIdIteratordocIdIter=workspace.
findByPath(wcmPath,workFlowStatus);if(docIdIter!
=null&&docIdIter.
hasNext()){wcmDocumentId=docIdIter.
nextId();}}}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();}returnwcmDocumentId;}清单17.
按名称检索子元素/**Thisisahelpermethodthatgetsthechildelementaccordingto*itsnameofanotherelementif*itcontainsonlyonechildwiththatname*/privateElementgetChildByName(Elementelement,Stringname){ElementrEl=null;for(Nodenode=element.
getFirstChild();node!
=null;node=node.
getNextSibling()){if(node.
getNodeType()==Node.
ELEMENT_NODE&&node.
getNodeName().
equals(name)){rEl=(Element)node;break;}}returnrEl;}清单18.
按名称检索元素值/**Thisisahelpermethodthatreturnsastringvalueofthegivenelement*/publicStringgetElementValueByTagName(StringaTagName,ElementaElement){StringelementValue="";NodeListnodeList=aElement.
getElementsByTagName(aTagName);if(nodeList!
=null&&nodeList.
getLength()>0){Elementel=(Element)nodeList.
item(0);elementValue=el.
getFirstChild().
getNodeValue();}returnelementValue;}ibm.
com/developerWorks/cn/developerWorks通过单击操作创建IBMLotusWebContentManagement站点结构第17页,共21清单19.
按名称检索LotusWebContentManagement对象/**ThisisahelpermethodthatreturnstheDocumentIdofaLotusWeb*ContentManagementobjectbasedonitsname*/publicDocumentIdgetWCMDocumentByName(StringwcmName,DocumentTypedocumentTypes){DocumentIdwcmDocumentId=null;try{if(wcmName!
=null){DocumentIdIteratordocIdIter=workspace.
findByName(documentTypes,wcmName);if(docIdIter!
=null&&docIdIter.
hasNext()){wcmDocumentId=docIdIter.
nextId();}}}catch(Exceptione){System.
out.
println("Exception="+e);e.
printStackTrace();}if(wcmDocumentId==null&&((documentTypes.
equals(DocumentTypes.
AuthoringTemplate))||(documentTypes.
equals(DocumentTypes.
PresentationTemplate)))){System.
out.
println("Exception:"+wcmName+"couldnotbefoundintheRepository");}returnwcmDocumentId;}清单20.
关闭LotusWebContentManagement工作空间/***ClosestheLotusWebContentManagementworkspace*/publicvoidcloseWorkspace(){WCM_API.
getRepository().
endWorkspace();}注意:在这里给出异常处理只是出于演示目的,而不适合用于生产目的.
应当在必要时进行修改以满足您的预期和要求.
helper类给出一些重要警告:用户将收到一条警告消息,表示出现一些错误并且创建无法成功完成.
错误被记录到SystemOut.
log文件中,因此您可以从该文件获得更多有关错误的消息.
当在存储库中没有找到用户时将出现错误,这将导致一个错误被记录到日志中,但是也会为用户生成一条CreationCompleted消息.
增强使用本文给出的解决方案可以进一步实现增强.
例如,您可以执行下面的操作:使用XML创建内容向默认内容添加更复杂的组件通过只更改站点区域的名称,修改XML以多次创建相同的结构developerWorksibm.
com/developerWorks/cn/通过单击操作创建IBMLotusWebContentManagement站点结构第18页,共21结束语在本文中,我们给出了一个简单的解决方案,它使您能够以一种自动化方式定义站点结构.
使用这种解决方案的用例非常多样;例如,您可能需要在多个服务器上定义站点区域,或者您的站点中具有大量重复的站点结构.
这个解决方案帮助您避免将时间浪费在执行大量既耗时又单调的任务上.

优林云(53元)哈尔滨电信2核2G

优林怎么样?优林好不好?优林 是一家国人VPS主机商,成立于2016年,主营国内外服务器产品。云服务器基于hyper-v和kvm虚拟架构,国内速度还不错。今天优林给我们带来促销的是国内东北地区哈尔滨云服务器!全部是独享带宽!首月5折 续费5折续费!地区CPU内存硬盘带宽价格购买哈尔滨电信2核2G50G1M53元直达链接哈尔滨电信4核4G50G1M83元直达链接哈尔滨电信8核8G50G1M131元直...

racknerd新上架“洛杉矶”VPS$29/年,3.8G内存/3核/58gSSD/5T流量

racknerd发表了2021年美国独立日的促销费用便宜的vps,两种便宜的美国vps位于洛杉矶multacom室,访问了1Gbps的带宽,采用了solusvm管理,硬盘是SSDraid10...近两年来,racknerd的声誉不断积累,服务器的稳定性和售后服务。官方网站:https://www.racknerd.com多种加密数字货币、信用卡、PayPal、支付宝、银联、webmoney,可以付...

Hostodo:$34.99/年KVM-2.5GB/25G NVMe/8TB/3个数据中心

Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...

jsp空间为你推荐
免费虚拟主机求免费的虚拟主机,一定要推荐自己用过了的好东东!电信主机租用请问放个服务器在电信机房一般要什么配置?租金多少?成都虚拟空间五星网络隶属于成都冠一科技有限公司,虚拟空间购买了不到一个月不能访问2次,质量真差啊!国内最好的虚拟主机国内安全性最好的虚拟主机空间商有哪些?虚拟主机评测网求推荐一些适合个人博客网站的虚拟主机的服务商虚拟主机管理系统虚拟主机管理系统那一家好?深圳虚拟主机需要一个虚拟主机???很急!!虚拟主机99idc如何选择虚拟主机的的操作系统以及更换操作系统是注意事项广西虚拟主机网站icp备案流程安徽虚拟主机合肥蜀山区哪家网络公司做网站最好
日本动态vps 花生壳免费域名 edgecast 5折 128m内存 163网 cloudstack 警告本网站 圣诞节促销 空间服务商 最好的免费空间 腾讯实名认证中心 超级服务器 彩虹云 smtp虚拟服务器 便宜空间 net空间 湖南idc 中国域名 免费个人主页 更多