日期:2014-05-16 浏览次数:20416 次
在这里我所实现的一个功能是点击一个按钮需要将PCS工程的数据传递到PIS然后交由其对数据进行更新操作。
1、PIS上的相关配置与文件?? (服务器端)
web.xml? 里添加下述相关内容
<!--与PCS工程交互的配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/META-INF/**/spring-*.xml,classpath*:/META-INF/**/remote-servlet.xml</param-value>
</context-param>
<!-- spring 加载监视器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.yihaodian.pis.webapp.listener.AppRequestListener</listener-class>
</listener>
<servlet>
<servlet-name>remote</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remote</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
<!-- 另一个工程的配置-->
<servlet>
<description>HTTP Exporters</description>
<servlet-name>services</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>services</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
?remote-servlet.xml? 的内容?????????? 将PIS的BEAN暴露给PCS然PCS对其进行调用
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="rmiService" class="com.yihaodian.pis.service.testremoteinvoke.IRemoteServiceImpl"></bean>
<bean class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter" name="/remoteService">
<property name="service" ref="rmiService" />
<property name="serviceInterface" value="com.yihaodian.pis.service.testremoteinvoke.IRemoteService"/>
</bean>
</beans>
?
接口以及其实现类(有PCS对其实现类的方法进行调用)
实现类IRemoteServiceImpl。java:
package com.yihaodian.pis.service.testremoteinvoke;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.newheight.service.webservice.dto.BackOperator;
import com.yihaodian.pis.dto.ProductHistoryDTO;
import com.yihaodian.pis.dto.TaskDto;
import com.yihaodian.pis.service.TaskService;
public class IRemoteServiceImpl implements IRemoteService {
private static final Logger logger = Logger
.getLogger(IRemoteServiceImpl.class);
public String getString(String msg) {
String str = "正在请求调用。。。远程服务调用成功" + msg;
return str;
}
public String getProduct(String siteid, String productCode) {
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "classpath*:/META-INF/**/spring-*.xml" });
TaskService taskSvc = (TaskService) context.getBean("taskSvc");
//当数据很多时就会出现数组指数出界
String[] site = siteid.split(",");
String[] productCodes = productCode.split(",");
int len = site.length;
Integer[] taskIds = new Integer[len];
for (int i = 0; i < len; i++) {
TaskDto taskD