相关配置
netstat -tnlp
检查2181端口(zookeeper)
修改EDS服务器配置文件:
- /usr/local/mongodb/mongod.conf
- /usr/local/nginx/conf/nginx.conf
- /usr/local/tomcat-gesb/webapps/engine/WEB-INF/classes/env.properties
- /usr/local/tomcat-gesb/webapps/engine/WEB-INF/classes/sso.properties
- /usr/local/tomcat-gesb/webapps/esb-manager/WEB-INF/classes/config.properties
启动EDS服务器
redis 启动 ./src/redis-server redis.conf &
nginx 启动 ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
mongodb ./bin/mongod -f mongod.conf
zookeeper ./bin/zkServer.sh start
最后启动tomcat
EDS配置
- http协议配置
{
“pattern” : “/galaxy-sso-business/captcha”,
“requestParser” : “com.gillion.esb.engine.parser.http.sso.CaptchaRequestParser”,
“responseFormatter” : “com.gillion.esb.engine.parser.http.sso.YmddResponseFormatter”
}
{
“pattern” : “/galaxy-sso-business/login”,
“requestParser” : “com.gillion.esb.engine.parser.http.sso.LoginRequestParser”,
“responseFormatter” : “com.gillion.esb.engine.parser.http.sso.YmddResponseFormatter”
}
{
“pattern” : “/galaxy-sso-business/logout”,
“requestParser” : “com.gillion.esb.engine.parser.http.sso.LogoutRequestParser”,
“responseFormatter” : “com.gillion.esb.engine.parser.http.sso.YmddResponseFormatter”
}
- 上传系统管理接口包
- 改扫描路径
EDS接口代码
一、EDS客户端调用
1.项目中引入需要的EDS包
<esb.version>1.0.2.4.RELEASE</esb.version>
<!– esb –>
<dependency>
<groupId>com.gillion</groupId>
<artifactId>gillion-esb-api</artifactId>
<classifier>pg</classifier>
<version>${esb.version}</version>
</dependency>
2.加入调用eDs工具类 (附件中是网厅项目的配置文件 )
EsbHelper.java
3.引用配置文件: (附件中是网厅项目的配置文件 )
context/application-esb.xml
下面改为自己ESB的地址
调用updateOfficeTowms是EDS上面定义的服务代码唯一标识
发起和审批流程:物流管理系统和审批系统通过esb对接,物流管理系统对外提供http服务给esb调用以获取审批结果。http服务实现在ApproveController类中,见图1。
图1:
二、application-esb.xml配置文件如下
<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:context=”http://www.springframework.org/schema/context”
xmlns:util=”http://www.springframework.org/schema/util”
xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd”>
<bean id=”httpRequestExecutor” class=”com.gillion.esb.api.client.executor.http.HttpRequestExecutor”>
<property name=”executorConfiguration”>
<bean class=”com.gillion.esb.api.client.executor.http.HttpRequestExecutorConfiguration”>
<property name=”connectTimeout” value=”120000″/>
<property name=”readTimeout” value=”120000″/>
<!–改为自已的esb请求地址 –>
<property name=”url” value=”${esb.url}”/>
</bean>
</property>
</bean>
<bean id=”clientConfiguration” class=”com.gillion.esb.api.configuration.SimpleClientConfiguration”>
<property name=”reqSysCode” value=”S25″/>
<property name=”clientPlugins”>
<list>
</list>
</property>
<property name=”clientRequestExecutor” ref=”httpRequestExecutor”>
</property>
</bean>
<bean id=”esbClient” class=”com.gillion.esb.api.client.ESBPoolClient”>
<property name=”clientConfiguration” ref=”clientConfiguration”/>
<property name=”maxTotal” value=”100″/>
<property name=”maxIdle” value=”50″/>
</bean>
<!–edsCode–>
<util:properties id=”eds” location=”classpath:config/edsCode.properties” />
</beans>
三、EsbHelper.java代码如下
package com.gillion.platform.utils;
import com.gfa4j.utils.ContextHolder;
import com.gillion.esb.api.client.ESBClient;
import com.gillion.esb.api.response.Response;
import com.gillion.esb.api.response.ResponseHeader;
import com.gillion.platform.framework.core.BusinessException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.List;
import java.util.Map;
/**
* ESB调用工具类
*
*/
public class EsbHelper {
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonArray
* 请求参数
* @return esb处理结果
*/
public static Map<String, Object> executeForMap(String serviceCode,
JSONArray jsonArray) {
return (Map<String, Object>) execute(serviceCode, jsonArray);
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonObject
* 请求参数
* @return esb处理结果
*/
public static Map<String, Object> executeForMap(String serviceCode,
JSONObject jsonObject) {
return (Map<String, Object>) execute(serviceCode, jsonObject);
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonObject
* 请求参数
* @return esb处理结果
*/
public static List<Map<String, Object>> executeForList(String serviceCode,
JSONObject jsonObject) {
return (List<Map<String, Object>>) execute(serviceCode, jsonObject);
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonObject
* 请求参数
* @return esb处理结果
*/
public static String executeForString(String serviceCode,
JSONObject jsonObject) {
return (String) execute(serviceCode, jsonObject);
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonObject
* 请求参数
* @return esb处理结果
*/
public static Object execute(String serviceCode, JSONObject jsonObject) {
ESBClient esbClient = ContextHolder.getBean(“esbClient”);
Response response = esbClient.request(serviceCode, jsonObject);
if (response.getStatusCode() != ResponseHeader.DEFAULT_SUCCESS_CODE) {
throw new BusinessException(response.getHeader().getReturnMessage());
}
return response.getBody();
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonArray
* 请求参数
* @return esb处理结果
*/
public static Object execute(String serviceCode, JSONArray jsonArray) {
ESBClient esbClient = ContextHolder.getBean(“esbClient”);
Response response = esbClient.request(serviceCode, jsonArray);
if (response.getStatusCode() != ResponseHeader.DEFAULT_SUCCESS_CODE) {
throw new BusinessException(response.getHeader().getReturnMessage());
}
return response.getBody();
}
/**
* 调用esb系统,并返回esb处理结果
*
* @param serviceCode
* esb服务号
* @param jsonObject
* 请求参数
* @return esb处理结果
*/
public static Object executeForGetParams(String serviceCode, Map<String,String> params) {
ESBClient esbClient = ContextHolder.getBean(“esbClient”);
StringBuilder sb = new StringBuilder();
int index = 1;
for(String key : params.keySet()){
sb.append(key+”=”+params.get(key));
if(index < params.size()){
sb.append(“&”);
}
index++;
}
Response response = esbClient.request(serviceCode, sb.toString());
if (response.getStatusCode() != ResponseHeader.DEFAULT_SUCCESS_CODE) {
throw new BusinessException(response.getHeader().getReturnMessage());
}
return response.getBody();
}
}
RPC接口调用
1、 首先在api包里写接口类,然后在business里写具体实现类(这里接口和实现类的包路径最好要一致)
2、 接口上要加上Consumer注解【消费者,接口的调用方使用此注解的类进行调用接口】。
3、 实现类要加上Provider注解【生产者,对应Consumer注解,是接口的实现类】以及对应接口的class。
4、 以上是接口实现。调用接口需要在调用接口的系统的pom中引入该接口的api包
5、 调用时则跟正常的Spring注入一样