(PrimePush)com.sun.jersey.api.container.ContainerException:ResourceConfig实例不包含任何根资源类

时间:2013-01-02 16:06:40

标签: java-ee primepush

我是PrimePush的新手并希望尝试一下。我跟着这个tutorial
但是,当我运行register.xhtml文件时,我遇到 com.sun.jersey.api.container.ContainerException的错误:ResourceConfig实例不包含任何根资源类。

这些是我的罐子

  • 气氛-COMPAT-jbossweb-1.0.1
  • 气氛-COMPAT-Tomcat的1.0.1
  • atmostphere-COMPAT-tomcat7-1.0.1
  • atmostphere运行时-1.0.1
  • primefaces-3.4.2
  • SLF4J-API-1.7.2
  • SLF4J-简单-1.7.2
  • JSF 2.1(Mojarra 2.1.6)

我正在使用 tomcat7 jre7

这是 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Test1</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>
<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<context-param>
    <param-name>primefaces.PUSH_SERVER_URL</param-name>
    <param-value>http://localhost:8080</param-value>
</context-param>
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<init-param>
    <param-name>org.atmosphere.cpr.broadcasterCacheClass</param-name>
    <param-value>org.atmosphere.cache.HeaderBroadcasterCache</param-value>
</init-param>
<init-param>
    <param-name>org.atmosphere.cpr.broadcasterClass</param-name>
    <param-value>org.atmosphere.cpr.DefaultBroadcaster</param-value>
</init-param>
<init-param>
    <param-name>org.atmosphere.cpr.broadcastFilterClasses</param-name>
    <param-value>org.atmosphere.client.TrackMessageSizeFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Push Servlet</servlet-name>
    <url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
    com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>bean.PushBean</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

这是 register.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:p="http://primefaces.org/ui"
  xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form id="form">  
        <h:outputText id="out" value="#{pushBean.count}"
    styleClass="ui-widget display" />  
        <br />  
        <p:commandButton value="Click" actionListener="#{pushBean.increment}" />  
    </h:form>  

    <p:socket onMessage="handleMessage" channel="/counter" />  

     <script type="text/javascript">
            function handleMessage(data) {
                $('.display').html(data);
            }          
    </script>
</h:body>
</html>

这是 PushBean.java

package Bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.push.PushContext;
import org.primefaces.push.PushContextFactory;

@ManagedBean
@SessionScoped
public class PushBean implements java.io.Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

public PushBean() {
}
private int count;

public int getCount() {
    return count;
}

public void setCount(int count) {
    this.count = count;
}

public synchronized void increment() {
    count++;
    PushContext pushContext = PushContextFactory.getDefault().getPushContext();
    pushContext.push("/counter", String.valueOf(count));
}
}

从这个link,它说

导致此“ResourceConfig”错误消息的许多原因。我知道的解决方案很少:

  • com.sun.jersey.config.property.packages在您的web.xml中不存在。
  • com.sun.jersey.config.property.packages包含一个不包含任何球衣服务的资源。在上述情况下,“com.mkyong.rest”不包含任何球衣服务。

所以我认为可能是web.xml中的bean.PushBean错了
但是,我不知道如何更改它(如果bean.PushBean是一个问题)。从eclipse项目资源管理器,PushBean.java路径是Java资源 - &gt; src - &gt; Bean - &gt; PushBean.java

请帮我找到解决方案。提前谢谢。

0 个答案:

没有答案