近期使用struts2的rest-plugin,参考官方示例struts2-rest-showcase,做了一个restful service小项目,但官网提供的这个示例过于简单,埋下了巨坑无数,下面是一些遇到的问题及解决办法:

注:下面这些问题,很多是相互关联的,要解决一个,得同时解决另一个。 

一、与config-browser-plugin、convension-plugin、非rest Action 共存的问题

rest-plugin的气场实在太强,一旦使用,config-browser-plugin、convension-plugin这二个plugin就挂了

解决思路:将所有rest服务,都放在/rest/路径下,用package的namespace把它隔离出来,其它常规的action,放在其它路径,这样二者就不冲突了

 1     <!-- Overwrite Convention -->
 2     <constant name="struts.convention.action.suffix" value="Controller" />
 3     <constant name="struts.convention.action.mapAllMatches" value="true" />
 4     <!--<constant name="struts.rest.content.restrictToGET" value="false" />-->
 5     <constant name="struts.convention.default.parent.package" value="rest-default" />
 6     <constant name="struts.convention.package.locators" value="action" />
 7     <!-- <constant name="struts.rest.namespace" value="/rest" /> -->
 8     <constant name="struts.convention.action.includeJars" value=".*?/_wl_cls_gen.*?jar(!/)?" />
 9     <constant name="struts.convention.exclude.parentClassLoader" value="true" />
10     <constant name="struts.convention.action.fileProtocols" value="jar,zip,vfsfile,vfszip" />
11 
12     <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" />
13     <constant name="struts.mapper.prefixMapping" value="/rest:rest,:struts" />
14     <constant name="struts.mapper.alwaysSelectFullNamespace" value="false" />
15 
16         <package name="default" namespace="/rest" extends="rest-default" />
View Code

相关文章:

  • 2022-12-23
  • 2021-10-22
  • 2022-12-23
猜你喜欢
  • 2021-12-06
  • 2022-02-15
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
相关资源
相似解决方案