我正在使用带有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) 我有一个运行在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) struts2 ×2
java ×1
jersey ×1
rest ×1
restful-url ×1
spring ×1
tomcat7 ×1
url-mapping ×1
websocket ×1