Spring 和 Portlet 环境中的 Web 服务
Posted
技术标签:
【中文标题】Spring 和 Portlet 环境中的 Web 服务【英文标题】:Web Service in Spring and Portlet environment 【发布时间】:2012-01-13 22:13:20 【问题描述】:我是 Web 服务的初学者并正在使用
-
Spring 3.0 和 spring-webmvc-portlet 3.0
javax.portlet 2.0
我有如下控制器
@Controller(value = "myController")
@RequestMapping(value = "**VIEW**")
public class MyController
// Controller logic
现在,我想在 portlet 环境中使用 RESTful API 创建 Web 服务。 请指导我如何编写将返回 JSON 或 XML 数据的 Web 服务。
我仍在为 Web 服务没有调用 WS 而苦苦挣扎。
我正在粘贴我的 conf 文件
-
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/itemCatalog-portlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>view-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>view-servlet</servlet-name>
<url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>webServiceTest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webServiceTest</servlet-name>
<url-pattern>/myWebService/*</url-pattern>
</servlet-mapping>
item-portlet.xml
<aop:aspectj-autoproxy />
<context:component-scan base-package="com.main.mypackage" />
<bean
class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="propertyEditorRegistrars">
<list>
<ref bean="myPropertyEditorRegistrar" />
</list>
</property>
</bean>
</property>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>content.Language-ext</value>
</list>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
webServiceTest-servlet.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
-
portlet.xml
项目目录 org.springframework.web.portlet.DispatcherPortlet 文本/html 看法 content.Language-ext
控制器
@控制器 公共类 WebServiceTest
@RequestMapping(value = "/myWebService/testing", method = RequestMethod.GET) 公共字符串测试方法() 返回“你好世界!成功”;
我正在尝试命中
localhost:8080:/myappname/myWebService/testing
没有结果。
【问题讨论】:
我可以使用 DispatcherServlet 配置吗?配置 Web 服务 【参考方案1】:在portlet 环境中创建Web 服务。 1.我们需要使用org. springframework.web.servlet.DispatcherServlet 是所有可用控制器的前端控制器。所有的 HTTP 请求都将使用 Dispatcher servlet 进行分派。
在 web.xml 中添加一个条目
<servlet>
<servlet-name>springwebservice</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springwebservice</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
请仔细阅读以下调度程序servlet链接
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html
-
现在重要的是每个 DispatcherServlet 必须有自己的 WebApplicationContext。 WebApplicationContext 只不过是一个 xml 文件,由控制器、视图解析器、bean 等组成。
在 WEB-INF 中创建名为 springwebservice-servlet.xml 的文件。 springwebservice-servlet.xml 是一个 WebApplicationContext。
注意
在 DispatcherServlet 初始化时,Spring MVC 在您的 Web 应用程序的 WEB-INF 目录中查找一个名为 [servlet-name]-servlet.xml 的文件,并创建在那里定义的 bean,覆盖使用定义的任何 bean 的定义在全局范围内同名。
确保为 DispatcherServlet 创建新的 WebAppicationContext 并根据需要进行配置。
如果在某个地方弄错了,请指导我。
【讨论】:
以上是关于Spring 和 Portlet 环境中的 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
带有 freemarker 和 spring 的 Liferay portlet
Liferay - 使用 portlet 在 Web Content 下创建文件夹和子文件夹
为 Liferay 开发 portlet 的限制/缺点 [关闭]
Liferay 6 - 将 Web 内容显示 Portlet 居中