我的问题与 developerworks 论坛上发布的问题相对相同(由于迁移,论坛是只读的),即:
我有一个与外部 Web 服务接口的 http 适配器。部分有效载荷是音频和图像。我们达到了表单大小限制。请参阅本文末尾附加的例外情况。我在之前的帖子中读到过需要调整码头配置以适应更大的有效载荷。我们想在服务器端应用层控制这个大小限制,并考虑创建一个 jetty-web.xml 来定义最大表单大小:
400000
在 Worklight 中,这是解决此问题的正确方法吗?
如果这是正确的方法,您能否提供详细信息,jetty-web.xml 是否应该放在 server/conf 下,还是需要放在应用程序战争的 WEB-INF 下?
如果该文件需要放在WEB-INF 下,您能解释一下如何在WL 项目构建期间将这个文件放在WEB-INF 下。
谢谢 E: Ajax 请求异常: Form too large802600>200000 2013-02-06 11:39:48 FWLSE0117E: Error code: 1, error description: INTERNAL_ERROR, error message: FWLSE0069E: an internal error occurred during gadget request Form too large802600> 200000, 用户身份 {wl_authenticityRealm=null, GersServiceAdapterRealm=(name:USAEMP4, loginModule:GersServiceAdapterLoginModule), wl_remoteDisableRealm=(name:NullLoginModule, loginModule:NullLoginModule), SampleAppRealm=null, wl_antiXSRFRealm=(name:antiXSRF, loginModule:WLAndeviceProvisioningModule:WLAn =null, WorklightConsole=null, wl_deviceNoProvisioningRealm=(name:device, loginModule:WLDeviceNoProvisioningLoginModule), myserver=(name:3e857b6a-d2f6-40d1-8c9c-10ca1b96c8df, loginModule:WeakDummy), wl_anonymousUserRealm=(name:3e857b6a-d2f6-40d1-8c9c-10ca1b96c8df, loginModule:WeakDummy)}。
我有完全相同的问题:我向工作灯适配器发送了大量数据,但我的应用程序失败,日志中出现以下错误消息:
2013-08-21 09:48:17] FWLSE0020E: Ajax request exception: Form too large202534>200000
[2013-08-21 09:48:18] FWLSE0117E: Error code: 1, error description: INTERNAL_ERROR, error message: FWLSE0069E: An internal error occurred during gadget request Form too large202534>200000, User Identity {wl_authenticityRealm=null, wl_remoteDisableRealm=(name:null, loginModule:NullLoginModule), SampleAppRealm=null, wl_antiXSRFRealm=(name:b2isf3704k2fl8hovpa6lv9mig, loginModule:WLAntiXSRFLoginModule), wl_deviceAutoProvisioningRealm=null, WorklightConsole=null, wl_deviceNoProvisioningRealm=(name:40a24da9-0a32-464a-8dec-2ab402c683ae, loginModule:WLDeviceNoProvisioningLoginModule), myserver=(name:2b1a7864-37c4-47f0-9f5c-49621b6915b5, loginModule:WeakDummy), wl_anonymousUserRealm=(name:2b1a7864-37c4-47f0-9f5c-49621b6915b5, loginModule:WeakDummy)}.
这发生在通过调用 WL.Client.invokeProcedure(...) 调用适配器过程并在被调用过程的第一行之前......如果我尝试记录被调用过程的开始,我的调试日志中没有写入任何内容...
我可以给你我的源代码:
这个由 dhtml 用户事件 (onclick) 调用:
// Construct the param to pass to the WL adapter insert procedure
var paramObject = {
QCDART: machine, // machine is a javascript variable as long int
QTITRE: title, // title is a javascript variable as string(255)
QDESC: desc, // desc is a javascript variable as string(255)
QHODAT: todayDateDb2IntFormat, // todayDateDb2IntFormat is a javascript variable as long int
QACTIF: active, // active is a javascript variable as int
SSRCFIC: currentPdfFileDataBase64, // currentPdfFileDataBase64 is a javascript variable as base64 encoded string from a binary file > 150 ko approx.
SMIMFIC: 'application/pdf',
SSIZFIC: currentPdfFileSize // currentPdfFileSize is a javascript variable as long int
};
// Construct adapter invocation data
var invocationData = {
adapter : 'IseriesDB2Backend', // adapter name
procedure : 'addModeleReleves', // procedure name
parameters : [paramObject] // parameters if any
};
WL.Client.invokeProcedure(invocationData, {
timeout: 60000,
onSuccess: function() {
// Notify success
alert('OK');
}, // invokeProcedure success callback
onFailure: function(invocationResult) {
alert('ERROR');
} // invokeProcedure failure callback
});
这是我的适配器源代码:
var addModeleReleveStatement = WL.Server.createSQLStatement("select QCDDOC from FINAL TABLE (insert into ERIHACFICH.DOCENTQ (QCDART, QTITRE, QDESC, QHODAT, QACTIF) values (?, ?, ?, ?, ?))");
function addModeleReleves(params) {
WL.Logger.debug('Starting adapter procedure...');
var modeleReleveResult = WL.Server.invokeSQLStatement({
preparedStatement : addModeleReleveStatement,
parameters : [params.QCDART, params.QTITRE, params.QDESC, params.QHODAT, params.QACTIF]
});
if(modeleReleveResult.isSuccessful) {
WL.Logger.debug('Success !');
}
WL.Logger.debug('Adapter procedure ended !');
// Return result (with the last id inside)
return modeleReleveResult;
}
如果名为 currentPdfFileDataBase64 的 javascript 变量很小,则一切正常,但如果它超过大约 200000 个字符的长度,它将失败......
最后,我可以说问题出现在开发环境(WL Studio 5.0.6 + WL Server 5.0.6),我没有在基于SLES + Websphere application server 7 + worklight的生产环境上测试它。
谢谢你的帮助