1

我在渲染 f:websocket 组件时遇到问题。服务器是Tomcat v8.5。

关于链接中的说明:

http://balusc.omnifaces.org/2013/10/how-to-install-cdi-in-tomcat.html

如何在 Spring 应用程序中使用 Maven 将 JSF 2.2 更新到 JSF 2.3

https://blog.payara.fish/jsf-2.3-the-websocket-quickstart-under-payara-server

Maven依赖项是:

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.weld.servlet</groupId>
        <artifactId>weld-servlet-shaded</artifactId>
        <version>3.0.3.Final</version>
    </dependency>

    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>6.2</version>
    </dependency>

这是 test.xhtml:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>

<h:body>


	<h:form>
		<h:outputText value="#{pisSocketView.count}" styleClass="display" />
		<p:commandButton value="Click"
			actionListener="#{pisSocketView.increment}" />

		<f:websocket channel="counter" onmessage="handleMessage" />
	</h:form>

	<script type="text/javascript">
		function handleMessage(message, channel, event) {
			$('.display').text(message);
		}
	</script>


</h:body>
</html>

当我加载页面时出现错误:

java.lang.AbstractMethodError 在 javax.faces.application.ViewHandlerWrapper.getWebsocketURL(ViewHandlerWrapper.java:328) 在 javax.faces.application.ViewHandlerWrapper.getWebsocketURL(ViewHandlerWrapper.java:328) 在 com.sun.faces.push.WebsocketChannelManager。在 com.sun.faces.push.WebsocketChannelManager$Proxy$_$$_WeldClientProxy.register(未知来源) 在 com.sun.faces.push.WebsocketChannelManager.register(WebsocketChannelManager.java:142) 注册(WebsocketChannelManager.java:151)在 com.sun.faces.renderkit.html_basic.WebsocketRenderer.encodeEnd(WebsocketRenderer.java:115) 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:949) 在 javax.faces.component.UIComponent.encodeAll(UIComponent .java:1912) 在 javax.faces.render.Renderer.encodeChildren(Renderer.java:176) 在 javax.faces.component。UIComponentBase.encodeChildren(UIComponentBase.java:918) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1905) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1908) 在 javax.faces.component .UIComponent.encodeAll(UIComponent.java:1908) 在 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:491) 在 com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java :194) 在 org.ocpsoft.rewrite.faces.RewriteViewHandler.renderView(RewriteViewHandler.java:186) 在 javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) 在 javax.faces.application.ViewHandlerWrapper.renderView( ViewHandlerWrapper.java:151) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:126) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:第671章.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:205) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 在 org.springframework.web.filter.OncePerRequestFilter .doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org. springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain. java:193) 在 org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter .java:197) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina 的 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)。核心.ApplicationFilterChain。doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117) at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:61 ) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.springframework.boot.web 的 org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:92) .support.ErrorPageFilter.doFilter(ErrorPageFilter.java:110) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 ) 在 org.apache.catalina.core 的 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)。StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve .java:87) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) 在 org.apache.coyote。 AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util .concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread .java:61) 在 java.lang.Thread.run(Thread.java:748)tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

4

0 回答 0