/**********************************************************\ | | | hprose | | | | Official WebSite: http://www.hprose.com/ | | http://www.hprose.org/ | | | \**********************************************************/ /**********************************************************\ * * * HproseHttpServiceExporter.java * * * * HproseHttpServiceExporter for Java Spring Framework. * * * * LastModified: Mar 13, 2016 * * Author: Ma Bingyao <andot@hprose.com> * * * \**********************************************************/ package org.springframework.remoting.hprose; import hprose.common.FilterHandler; import hprose.common.HproseFilter; import hprose.common.InvokeHandler; import hprose.io.HproseMode; import hprose.server.HproseHttpService; import hprose.server.HproseServiceEvent; import hprose.server.HttpContext; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.InitializingBean; import org.springframework.remoting.support.RemoteExporter; import org.springframework.web.HttpRequestHandler; public class HproseHttpServiceExporter extends RemoteExporter implements InitializingBean, HttpRequestHandler { private HproseHttpService httpService; private boolean crossDomain = true; private boolean get = true; private boolean p3p = true; private boolean debug = true; private HproseServiceEvent event = null; private HproseMode mode = HproseMode.MemberMode; private HproseFilter filter = null; private InvokeHandler invokeHandler = null; private FilterHandler beforeFilterHandler = null; private FilterHandler afterFilterHandler = null; @Override public void afterPropertiesSet() throws Exception { checkService(); checkServiceInterface(); Object service = getService(); Class cls = getServiceInterface(); httpService = new HproseHttpService(); httpService.add(service, cls); httpService.setCrossDomainEnabled(crossDomain); httpService.setGetEnabled(get); httpService.setP3pEnabled(p3p); httpService.setDebugEnabled(debug); httpService.setEvent(event); httpService.setMode(mode); httpService.setFilter(filter); httpService.use(invokeHandler); httpService.beforeFilter.use(beforeFilterHandler); httpService.afterFilter.use(afterFilterHandler); } public void setCrossDomainEnabled(boolean value) { crossDomain = value; } public void setGetEnabled(boolean value) { get = value; } public void setP3pEnabled(boolean value) { p3p = value; } public void setDebugEnabled(boolean value) { debug = value; } public void setEvent(HproseServiceEvent value) { event = value; } public void setMode(HproseMode value) { mode = value; } public void setFilter(HproseFilter value) { filter = value; } public void setInvokeHandler(InvokeHandler value) { invokeHandler = value; } public void setBeforeFilterHandler(FilterHandler value) { beforeFilterHandler = value; } public void setAfterFilterHandler(FilterHandler value) { afterFilterHandler = value; } @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { httpService.handle(new HttpContext(httpService, request, response, null, null)); } }