我有一个JSF 2.1.21应用程序与客户端状态保存方法.我也使用PrimeFaces 3.5 + Tomcat 7.0.37.
我使用OmniFaces完整的ajax异常处理程序来显示自定义错误页面,并在出现问题时通过堆栈跟踪向我发送电子邮件.
每天我都会收到至少一封带有java.lang.IndexOutOfBoundsException的电子邮件.它似乎与重新部署应用程序有关,但我无法重现它.
这是堆栈跟踪:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at javax.faces.component.AttachedObjectListHolder.restoreState(AttachedObjectListHolder.java:165)
at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1566)
at com.sun.faces.application.view.FaceletPartialStateManagementStrategy$2.visit(FaceletPartialStateManagementStrategy.java:380)
at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreView(FaceletPartialStateManagementStrategy.java:367)
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:138)
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:569)
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:141)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301)
at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:59)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at br.com.spdata.tecnico.filter.MobileFilter.doFilter(MobileFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个applet,允许从webapp上传FTP ...
发送操作正常,但我希望能够取消正在存储的文件.
我对线程不是很流利.我的第一次尝试是在取消线程中调用ftp.abort(),但是当storeFile方法完成时才调用abort方法,就像发送线程锁定ftp对象一样.
所以我更改了代码以中断发送线程并在复制流监听器中检查它.文件存储按预期停止,但ftp.abort()调用挂起应用程序,它永远不会完成.
有任何想法吗?
谢谢,菲利普
发送操作:
botaoEnviar.setEnabled(false);
botaoCancelar.setEnabled(true);
textField.requestFocus();
threadEnvio = new Thread(new Runnable()
{
@Override
public void run()
{
FileInputStream fis = null;
try
{
if(arquivoSelecionado == null)
{
throw new IllegalArgumentException("Arquivo deve ser informado");
}
try
{
ftp = new FTPClient();
ftp.connect("192.168.1.243");
}
catch(Exception e)
{
throw new FtpConnectionException("Não foi possível conectar no servidor FTP", e);
}
if(!ftp.login("c001", "0AJF2J36"))
{
throw new IllegalArgumentException("Não foi possível autenticar no servidor FTP");
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setCopyStreamListener(new CopyStreamAdapter()
{
@Override
public …
Run Code Online (Sandbox Code Playgroud) 我有一些需要按顺序运行的测试,所以我将@Test(singleThreaded = true)添加到他们的类中.
工作正常,问题是@Test在类级别,所有方法都由TestNG执行,即使他们没有@Test注释,所以最终这会导致我的团队中的某个人想要禁用测试时浪费时间并且由于他不知道这种特殊性,他只评论@Test而不是整个方法,所以稍后这个应该被禁用的测试最终会使构建过程失败.
有办法避免这种情况吗?
谢谢
我正在开发一个应用程序,其中Google Drive将用于管理一些文档.我们的想法是创建一个包含一些初始模板数据的文档,并通过将其添加为文档的协作者来为用户提供访问权限.
我熟悉OAuth身份验证过程,我在系统的另一部分用它来管理用户日历...
但在这种情况下,这些文档将存储在公司的通用帐户中,因此我无法获得身份验证的批准提示,因为用户将没有该帐户的密码.
我想在此帐户中直接进行身份验证,可以使用Java代码中的硬编码用户名和密码.
问题是这种身份验证方法被删除了,我没有找到重新安置空间.
有任何想法吗?
先谢谢,菲利普
我正在开发一个JavaScript客户端,将文件直接上传到Amazon S3.
<input type="file" id="file-chooser" />
<button id="upload-button">Upload to S3</button>
<div id="results"></div>
<script type="text/javascript">
var bucket = new AWS.S3({params: {Bucket: 'myBucket'}});
var fileChooser = document.getElementById('file-chooser');
var button = document.getElementById('upload-button');
var results = document.getElementById('results');
button.addEventListener('click', function() {
var file = fileChooser.files[0];
if (file) {
results.innerHTML = '';
var params = {Key: file.name, ContentType: file.type, Body: file};
bucket.putObject(params, function (err, data) {
results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
});
} else {
results.innerHTML = 'Nothing to upload.';
}
}, false);
</script> …
Run Code Online (Sandbox Code Playgroud) 我将我的应用程序从PrimeFaces 3.5.18 + Mojarra 2.1.26移植到PrimeFaces 4.0.2 + Mojarra 2.2.4.
当我重新启动服务器时,我得到一个ViewExpiredException.
服务器日志包含: ERROR: MAC did not verify!
我知道默认情况下,MyFaces会生成一个随机密码来对视图状态进行编码,因此每次服务器重新启动时,都会生成一个新的随机密码.Mojarra 2.2的行为方式是否相同?
在这种情况下,我需要设置哪些上下文参数?谷歌搜索Mojarra 2.2上下文参数我能找到的最好的是这个,但是在MyFaces中没有SECRET或MAC_SECRETS参数
先谢谢,菲利普
amazon-s3 ×1
file-upload ×1
ftp ×1
google-api ×1
html5 ×1
java ×1
javascript ×1
jsf-2 ×1
jsf-2.2 ×1
mojarra ×1
state-saving ×1
testng ×1
tomcat7 ×1