标签: lotus-domino

java.lang.ClassCastException的含义:someClass与someClass不兼容

我在XPage应用程序中经常遇到异常:

java.lang.ClassCastException: someClass incompatible with someClass.
Run Code Online (Sandbox Code Playgroud)

两个提到的类都是相同的,它是用作会话bean的类.我无法谷歌任何覆盖我的问题的东西.对此的通常解释是设计元素的变化,而不是我的情况.

从那时起,直到重启http任务或重新保存faces-config.xml,XPage应用程序变得不可用(使用会话bean someClass的页面).

在某些情况下,这与其他例外有关:

com.ibm.jscript.InterpretException: Script interpreter error, line=x, col=y: 
Java method 'method(signature containg someClass)'
on java class 'someOtherClass' not found
Run Code Online (Sandbox Code Playgroud)

这种行为的背后是什么?

java classcastexception lotus-domino xpages

13
推荐指数
2
解决办法
9705
查看次数

有人在nsf中使用javascript原型后如何在Domino服务器中清理SSJS?

如果有人在nsf中使用javascript原型,如何清理Domino服务器中的SSJS(服务器端Javascript)?

马克·罗登发现了XPage SSJS的一个巨大弱点 :(感谢David Leedy告诉我这件事并向我展示这篇文章).

如果您有以下SSJS代码:

var dummyObj = {}
dummyObj.prototype.NAME = "Johann"
Run Code Online (Sandbox Code Playgroud)

XPages SSJS并不关心你使用var(var表示变量必须是本地的),它使dummyObj.NAME在整个服务器中可见,其值为Johann.因此,如果同一服务器中的另一个nsf使用具有相同名称的var,则它将继承整个原型:

var dummyObj = {}
println(dummyObj.NAME) /*prints "Johann" */ 
Run Code Online (Sandbox Code Playgroud)

这是一个巨大的错误(一个使得不可靠的XPage SSJS IMO).即使你根本不使用原型,如果他的应用程序中的其他人做了类似这样的事情:

String.prototype.split = function(){ return "I broke this method" }
Run Code Online (Sandbox Code Playgroud)

它将破坏使用无辜split()的同一服务器中的所有应用程序.

所以,问题是:如果有人"错误地"在NSF中写下以下SSJS(XPages服务器端Javascript):

String.prototype.split = function(){ return "I broke this method" }
Run Code Online (Sandbox Code Playgroud)

如何将String.prototype.split()修复为原始值?

正如Mark Roden所说,重启HTTP任务并不能解决问题.

////////////////////////////////////////////////// /////////

编辑1:为什么我认为这是一个巨大的错误:

我是Javascript粉丝但IMHO @MarkyRoden在SSJS中发现了一个巨大的错误.垫片和填充物实际上不是主要问题.Eval被认为是一种不好的做法,但原型对象是基本Javascript的基本元素.这是向Javascript类添加方法的标准和首选方法,它还需要继承和各种OOP内容.因此,您需要在服务器级别使用某种命名空间以避免冲突.所有这些都非常糟糕,但最大的问题是,一个应用程序中的一行代码可能会破坏服务器中的所有应用程序.是的,您可以信任您的开发人员,但其中一人可能会错误地编写错误的行,并且Domino服务器也可以拥有来自不同软件供应商的数百个应用程序.在代码审查中设置责任不是一个可靠的程序.也许是时候在SSJS中拥有一个真正的javascript引擎,比如V8,Spidermonkey,Chakra或Rhino.作为一种解决方法,我正在思考Tommy Valand 在SSJS中与Rhino想法.

编辑2:情况更糟.你可以这样做:

prototype.importPackage = null
Run Code Online (Sandbox Code Playgroud)

要么

prototype.Array = null
Run Code Online (Sandbox Code Playgroud)

正如你在@SvenHasselbach的文章中看到的那样:http …

prototype lotus-notes lotus-domino xpages xpages-ssjs

11
推荐指数
1
解决办法
850
查看次数

Lotus Notes/LotusScript - 如何用德语而不是英语设置日期?

我正在编写向用户发送邮件的代码.邮件文本包含日期.正确计算日期时,即使所有用户都使用德语Windows操作系统并在Notes首选项中将德语设置为其语言,日期也会以英语显示.这是我的代码:

Set dt = New NotesDateTime(doc.GetItemValue("abc")(0))          
dts = Format$(dt.LSLocalTime, "dddd, dd. MMMM yyyy")
mailText = replaceSubstring(mailText, "Datum", dts, True)
Run Code Online (Sandbox Code Playgroud)

在邮件中,日期显示为,例如,

2015年12月9日星期三

什么时候应该出现

Mittwoch,09.Dezember 2015

用户单击Notes客户端中的按钮后执行代码.并非所有邮件都有此问题,但我无法在遇到此问题的用户的操作系统和Notes首选项设置中检测到任何错误.我怎样才能让这个日期以德语而不是英语出现?

lotus-notes lotusscript lotus-domino

11
推荐指数
1
解决办法
479
查看次数

Lotus Notes/Domino开发的版本控制的最佳实践

请分享您如何为Lotus Notes/Domino开发进行版本控制.

我想在SVN存储库中放入所有脚本,视图,自定义表单,脚本库等.

也接受半自动化方法(即,如果我找到一种方法将表单的所有事件脚本放在一个文件中,并且能够将它作为整个文件放回Notes Designer中).

svn version-control lotus-notes lotus lotus-domino

8
推荐指数
1
解决办法
7153
查看次数

检查方法是用户文档作者?

Hello Domino程序员!

我在Lotus数据库+ xpages上工作,我遇到了以下问题:

我在文档上有作者和读者字段,两者都可以包含用户和组.使用NamePicker控件在XPage上设置这两个字段.保存文档时,我想在用户无权执行此操作时隐藏"编辑"按钮.

有没有办法只检查文档,数据源或上下文 - 如果当前用户是文档作者?或者我必须检查一下,比较作者字段 - 多个用户名和组与当前用户名?

任何帮助将不胜感激.

lotus-notes author lotus lotus-domino xpages

8
推荐指数
1
解决办法
1097
查看次数

如果撤消读取器访问,则在服务器到服务器复制期间会发生什么

我想了解以下Lotus-Domino服务器到服务器复制方案中发生的情况:

  • 服务器A具有A数据库的副本.
  • 服务器B具有相同数据库的副本.
  • 两台服务器都具有数据库管理员访问权限,包括删除文档权限.
  • 复制器进程刚刚复制了A和B,并且所有进程都是同步的.
  • 该数据库包含一个注释,其中包含一个提及两个服务器的reader字段.
  • 在服务器A上,从reader字段中删除服务器B的条目.
  • 服务器A使用B启动复制.

在这种情况下,我希望服务器A将从服务器B中删除文档.方案有变化,服务器C与B复制,B用A启动复制.

我有一个围绕这个期望构建的应用程序,并且它在大多数情况下都运行良好.但是有一些注释保留在服务器B上,并且从复制过程中排除.OID仍然不同.在某些情况下,DSN会在两个备注上更新,而在复制过程中没有任何结果.

replication lotus-notes lotus-domino

7
推荐指数
1
解决办法
3233
查看次数

用于与Domino集成的API

我是Lotus/Domino世界的新手,并且负责以下Domino任务.

访问用户的Domino邮箱(来自中间件服务器)并从中删除某些恶意电子邮件.

其他背景 - 有一个外部安全工具/流程可以分析所有传入的电子邮件,并可以将电子邮件标记为恶意.如果它被标记为恶意,那么我想从相应用户的收件箱中删除此电子邮件.

在我的环境中部署的Domino服务器是 - Lotus/Domino 9

我的解决方案将部署在自己的中间件服务器(基于Linux)上,并将接收有关需要删除哪些电子邮件的传入通知.

我想最好使用Java实现此功能

我研究并发现了在Domino服务器上访问用户收件箱的潜在选择

  1. 我看到有一个用于Domino的C/C++ API工具包 - https://www.ibm.com/developerworks/lotus/documentation/capi/.乍一看,C API看起来很复杂.另外我需要安装Notes客户端(在我的中间件服务器上),以便我可以远程调用C API?
  2. 是否有可用于连接/访问Domino的Java API?我找到了几个相关的资源 - http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/H_10_NOTES_CLASSES_ATOZ_JAVA.html和www-10.lotus. com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName = API%20文档似乎表明存在一些Java/REST API接口但是我不确定是否可以使用它来访问收件箱/邮箱数据.它似乎表示"日历"数据,但没有关于电子邮件/邮箱数据.
  3. 我在研究时遇到了OpenNTF Domino API项目(www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API),而且似乎有一个Java API.我应该用这个吗?

从外部服务器角度访问Domino的最佳方法是什么?我是否坚持使用"C/C++"API或者是否可以利用相对(更易于理解和使用)的REST/Java API?我还必须在我的中间件服务器上安装Notes客户端,以便我可以调用API(C/C++或Java)吗?

谢谢,

java lotus-notes lotus lotus-domino domino-designer-eclipse

7
推荐指数
1
解决办法
4669
查看次数

bluemix xpages性能和架构

我有一些关于bluemix xpages运行时的问题.

截至目前(2016年8月)Xpages NoSQL数据库仍处于试验阶段.这个NoSQL服务是否有ETA成为GA?

截至目前,为了更好地控制性能,必须配置单独的多米诺骨牌服务器来托管NSF数据存储区,如https://developer.ibm.com/bluemix/2015/11/10/hybrid-xpages-applications中所述-on-bluemix /

什么是最小化XPage前端和托管NSF数据存储的后端服务器之间的流量延迟的最佳做法?domino服务器应该托管在IBM SoftLayer上吗?

XPage运行时是否提供对Xpages运行时和NSF后端之间的网络性能的可见性?

我假设可以增加xpages运行时实例的数量来处理增加的流量(水平缩放).但是,存储NSF的多米诺后端最终会成为瓶颈,只能通过增加机器的功率(CPU/RAM)来扩展.(垂直缩放).是否有计划提供可以水平扩展的Xpages NoSQL后端?

在混合bluemix xpages设置中,xpages运行时可以使用自定义server.id站起来.

当通过增加实例数来扩展xpages运行时时,是否所有实例都使用相同的server.id?AFAIK,在多米诺骨牌域中,每个服务器都使用唯一的server.id.这应该引起关注吗?

是否可以在任何其他cloudfoundry实例上运行xpages buildpack(在某些许可下)?

提前感谢您的回复.

lotus-domino xpages pivotal-cloud-foundry ibm-cloud

7
推荐指数
1
解决办法
237
查看次数

注释错误:读取视图条目时未在索引中找到条目

我的xPage SSJS失败了:

viewEntry = view.getNext(viewEntry);
Run Code Online (Sandbox Code Playgroud)

有错误

注释错误:索引中找不到条目

我确实将此选项设置为false但它没有帮助:

view.setAutoUpdate(false);
Run Code Online (Sandbox Code Playgroud)

所以我怀疑它失败了,因为用户因为阅读器访问集而无法访问NEXT文档.因此,在视图中但在TOTALS中无法看到此类文档.怎么解决?

副问题是如果崩溃Domino服务器那么

这是我的代码:

var view:NotesView = database.getView("xxxxxxx");
view.setAutoUpdate(false);
var viewNav:NotesViewNavigator = view.createViewNav();
var viewEntry:NotesViewEntry = viewNav.getFirst();

while (viewEntry != null) {
    if (viewEntry.isCategory()){
        // I work with category entry data
    } else if(viewEntry.isTotal()){
        // I collect totals
    } else {
        // I work with view entry
    }

    var tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
    viewEntry.recycle();
    viewEntry = tmpEntry;
}
Run Code Online (Sandbox Code Playgroud)

它失败了:viewNav.getNext(viewEntry)

Script interpreter error, line=1001, col=37: [TypeError] Exception occurred calling method NotesViewNavigator.getNext(lotus.domino.local.ViewEntry)
Notes error: Entry …
Run Code Online (Sandbox Code Playgroud)

lotus-notes lotus-domino xpages

7
推荐指数
1
解决办法
357
查看次数

Lotus Domino Designer 8.5.3的Mercurial设置

致力于安装Mercurial Source Control并使用Lotus Domino Designer 8.5.3.

使用了来自Lotusphere 2012的Declan的powerpoint"AD102:IBM Lotus Domino Developer的源代码控制"作为指南.

到目前为止我所做的是:

  1. 通过CI1LPEN.exe安装文件安装8.5.3客户端和Designer
  2. 从设计器首选项启用Eclipse插件安装
  3. 来自http://cbes.javaforge.com/update的文件,应用程序,安装1.6.0 MercurialEclipse和1.4.3 Mercurial二进制文件
  4. 通过转到文件,应用程序,应用程序管理并列出它们来安装它们
  5. 封闭的Domino设计师和客户端.重新启动.
  6. 当我在Designer中打开应用程序并交替单击它的标题时,未列出"团队开发"选项.因此无法"为此应用程序设置源代码管理"..

是否还需要安装其他任何先决条件,或者我应该选择不同的安装包?

mercurial lotus lotus-domino

6
推荐指数
1
解决办法
844
查看次数