相关疑难解决方法(0)

泽西与Struts2

我正在使用带有Struts2的球衣.但是由RestFul服务调用不起作用.以下是我的配置文件

在struts.xml

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
        "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
    <result-types>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types>

     <interceptors>
            <interceptor-stack name="default">
                 <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                    <param name="params.excludeParams">/service/*</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="default" />

        <action name="defaultAction"
            class="com.gemini.web.controller.BinMasterController"
            method="binMaster">
            <result name="binMaster" type="tiles">binMaster</result>
        </action>    
    </package>    
</struts>
Run Code Online (Sandbox Code Playgroud)

在web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <!-- Client config -->
    <context-param>
        <param-name>
            org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
        </param-name>
        <param-value>
            /WEB-INF/tiles.xml
        </param-value>
    </context-param>

    <filter>
        <filter-name>struts2</filter-name> …
Run Code Online (Sandbox Code Playgroud)

rest struts2 jersey url-mapping restful-url

7
推荐指数
1
解决办法
4135
查看次数

在Struts 2中使用WebSocket API

我有一个运行在Tomcat 7.0.43上的Struts2 Web应用程序,该应用程序使用Rest和Convention插件来映射所有请求。Struts尝试自己映射所有请求。

JSR 356使用如下注释来定义服务器端点

@ServerEndpoint(value = "/websocket/chat")
Run Code Online (Sandbox Code Playgroud)

现在,当浏览器尝试连接时ws:/127.0.0.1:8080/websocket/chat,由于Struts映射器拦截了该请求,因此请求失败。

我可以在XML文件中指定什么内容,以使请求到达正确的位置?

编辑:

按照建议,我添加了

<constant name="struts.action.excludePattern" value="/websocket.*?" />
Run Code Online (Sandbox Code Playgroud)

到我的Struts配置中,然后URL / websocket / chat开始出现404错误。

后来我了解到我需要配置一个ServerApplicationConfig实现。这样做之后,websocket开始正常运行,但是我的应用程序的其余部分无法加载,并给出了错误:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
Run Code Online (Sandbox Code Playgroud)

这是我的课:

public class Socket implements ServerApplicationConfig {

    @Override
    public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> scanned) {

        Set<ServerEndpointConfig> result = new HashSet<ServerEndpointConfig>();

        return result;
    }

    @Override
    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {

        Set<Class<?>> results = new HashSet<Class<?>>();
        for (Class<?> clazz : scanned) {
            results.add(clazz);
        }
        return results; …
Run Code Online (Sandbox Code Playgroud)

java spring struts2 websocket tomcat7

3
推荐指数
1
解决办法
4649
查看次数

标签 统计

struts2 ×2

java ×1

jersey ×1

rest ×1

restful-url ×1

spring ×1

tomcat7 ×1

url-mapping ×1

websocket ×1