我在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)
这种行为的背后是什么?
如果有人在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 …
我正在编写向用户发送邮件的代码.邮件文本包含日期.正确计算日期时,即使所有用户都使用德语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/Domino开发进行版本控制.
我想在SVN存储库中放入所有脚本,视图,自定义表单,脚本库等.
也接受半自动化方法(即,如果我找到一种方法将表单的所有事件脚本放在一个文件中,并且能够将它作为整个文件放回Notes Designer中).
Hello Domino程序员!
我在Lotus数据库+ xpages上工作,我遇到了以下问题:
我在文档上有作者和读者字段,两者都可以包含用户和组.使用NamePicker控件在XPage上设置这两个字段.保存文档时,我想在用户无权执行此操作时隐藏"编辑"按钮.
有没有办法只检查文档,数据源或上下文 - 如果当前用户是文档作者?或者我必须检查一下,比较作者字段 - 多个用户名和组与当前用户名?
任何帮助将不胜感激.
我想了解以下Lotus-Domino服务器到服务器复制方案中发生的情况:
在这种情况下,我希望服务器A将从服务器B中删除文档.方案有变化,服务器C与B复制,B用A启动复制.
我有一个围绕这个期望构建的应用程序,并且它在大多数情况下都运行良好.但是有一些注释保留在服务器B上,并且从复制过程中排除.OID仍然不同.在某些情况下,DSN会在两个备注上更新,而在复制过程中没有任何结果.
我是Lotus/Domino世界的新手,并且负责以下Domino任务.
访问用户的Domino邮箱(来自中间件服务器)并从中删除某些恶意电子邮件.
其他背景 - 有一个外部安全工具/流程可以分析所有传入的电子邮件,并可以将电子邮件标记为恶意.如果它被标记为恶意,那么我想从相应用户的收件箱中删除此电子邮件.
在我的环境中部署的Domino服务器是 - Lotus/Domino 9
我的解决方案将部署在自己的中间件服务器(基于Linux)上,并将接收有关需要删除哪些电子邮件的传入通知.
我想最好使用Java实现此功能
我研究并发现了在Domino服务器上访问用户收件箱的潜在选择
从外部服务器角度访问Domino的最佳方法是什么?我是否坚持使用"C/C++"API或者是否可以利用相对(更易于理解和使用)的REST/Java API?我还必须在我的中间件服务器上安装Notes客户端,以便我可以调用API(C/C++或Java)吗?
谢谢,
我有一些关于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(在某些许可下)?
提前感谢您的回复.
我的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) 致力于安装Mercurial Source Control并使用Lotus Domino Designer 8.5.3.
使用了来自Lotusphere 2012的Declan的powerpoint"AD102:IBM Lotus Domino Developer的源代码控制"作为指南.
到目前为止我所做的是:
是否还需要安装其他任何先决条件,或者我应该选择不同的安装包?
lotus-domino ×10
lotus-notes ×7
xpages ×5
lotus ×4
java ×2
author ×1
ibm-cloud ×1
lotusscript ×1
mercurial ×1
prototype ×1
replication ×1
svn ×1
xpages-ssjs ×1