栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Seam / Spring WebFlow应用程序中的StackOverflowError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Seam / Spring WebFlow应用程序中的StackOverflowError

无论是

SeamApplication
FlowApplication
有缺陷的正确委派到包装中的应用。解决它的一种方法是通过
FlowApplicationFactory

首先,获取其原始源代码并将其放入webapp项目的Java源文件夹中,并保持其原始包。您不一定需要操纵JAR。中的类的

/WEB-INF/classes
加载优先级高于JAR中的类。

然后按如下方式操作该类(基于OmniFaces

OmniApplicationFactory
):

public class FlowApplicationFactory extends ApplicationFactory {    private final ApplicationFactory wrapped;    private volatile Application application;    public FlowApplicationFactory(ApplicationFactory wrapped) {        this.wrapped = wrapped;    }    @Override    public Application getApplication() {        return (application == null) ? createFlowApplication(wrapped.getApplication()) : application;    }    @Override    public synchronized void setApplication(Application application) {        wrapped.setApplication(createFlowApplication(application));    }    private Application createFlowApplication(final Application application) {        Application newApplication = application;        while (!(newApplication instanceof FlowApplication) && newApplication instanceof SeamApplication) { newApplication = ((SeamApplication) application).getDelegate();        }        if (!(newApplication instanceof FlowApplication)) { newApplication =  new FlowApplication(application);        }        return (this.application = newApplication);    }}

因此,在创建时

FlowApplication
,它将首先检查已包装的应用程序,如果之前尚未创建,则将其重新使用。

请注意,该

SeamApplication
依赖项很尴尬,但这只是为了修正它。JSF2通过新
ApplicationWrapper
类使您变得更轻松,您可以使用它而不是
SeamApplication
createFlowApplication()
块中使用。

如果这一切仍然无法正常工作,那么也许

SeamApplicationFactory
初始化
FlowApplicationFactory
。您可以通过按期望的顺序显式地重新声明
<application-factory>
webapp自身
faces-config.xml
中的条目来强制排序(错误修正为最后一个):

<factory>    <application-factory>org.jboss.seam.jsf.SeamApplicationFactory</application-factory>    <application-factory>org.springframework.faces.webflow.FlowApplicationFactory</application-factory></factory>

否则,您可能想要执行与上述相同的操作

SeamApplicationFactory
(显然是在代码中
FlowApplication
SeamApplication
交换)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号