applicationContext-cxf.xml:
<!--客户端 俱乐部平台提供接口 -->
??? <jaxws:client id="thumbClubServiceClient" serviceClass="com.bplow.look.ws.service.ThumbClubService" address="http://localhost:8080/cms/services/thumbClubServiceWeb">
??? </jaxws:client>
???
??? <!--服务器端 俱乐部平台提供接口 -->
??? <jaxws:endpoint id="thumbClubServiceEP" address="/thumbClubServiceWeb">
??? ??? <jaxws:implementor ref="thumbClubServiceWeb" />
??? ??? <jaxws:properties>
??? ??? ??? <entry key="mtom-enabled" value="true" />
??? ??? </jaxws:properties>
??? </jaxws:endpoint>
??? <bean id="thumbClubServiceWeb" class="com.bplow.look.ws.service.impl.ThumbClubServiceImpl" />
??? <bean id="thumbClubJdbcDaoWeb" class="com.bplow.look.ws.dao.ThumbClubJdbcDao" parent="baseJdbcDao"/>
??? <bean id="thumbClubHibernateWeb" class="com.bplow.look.ws.dao.ThumbClubHibernate"/>
测试获取bean:
ThumbClubService thumbClubServiceClient =
??? ??? ??? (ThumbClubService)SpringUtils.getBean("thumbClubServiceClient");
?
IP地址拦截器 :
applicationContext-cxf.xml:
<!--客户端 拇指俱乐部平台提供接口 -->
??? <jaxws:client id="thumbClubServiceClient" serviceClass="com.bplow.look.ws.service.ThumbClubService" address="http://localhost:8080/cms/services/thumbClubServiceWeb">
??? </jaxws:client>
???
??? <!--服务器端 拇指俱乐部平台提供接口 -->
??? <jaxws:endpoint id="thumbClubServiceEP" address="/thumbClubServiceWeb">
??? ??? <jaxws:implementor ref="thumbClubServiceWeb" />
??? ??? <jaxws:inInterceptors>
??? ??? ??? <bean class="com.bplow.look.ws.filter.IpAddressInInterceptor"/>
??? ??? </jaxws:inInterceptors>
??? ??? <jaxws:properties>
??? ??? ??? <entry key="mtom-enabled" value="true" />
??? ??? </jaxws:properties>
??? </jaxws:endpoint>
??? <bean id="thumbClubServiceWeb" class="com.bplow.look.ws.service.impl.ThumbClubServiceImpl" />
??? <bean id="thumbClubJdbcDaoWeb" class="com.bplow.look.ws.dao.ThumbClubJdbcDao" parent="baseJdbcDao"/>
??? <bean id="thumbClubHibernateWeb" class="com.bplow.look.ws.dao.ThumbClubHibernate"/>
?
IpAddressInInterceptor.java:
package com.bplow.look.ws.filter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
?/**?
? * IP地址拦截器?
? * @author wmc?
? *?
? */?
?public class IpAddressInInterceptor extends AbstractPhaseInterceptor<Message> {??
??
???? public IpAddressInInterceptor() {
???????? super(Phase.RECEIVE);
???? }
??
???? public void handleMessage(Message message) {
???????? // 通过一个IpAddressConfig对象,从XML文件中读取预先设置的允许和拒绝的IP地址,这些值也可以来自数据库
???????? List<String> allowedList = IpAddressConfig.getAllowedList(); // 允许访问的IP地址
???????? List<String> deniedList = IpAddressConfig.getDeniedList(); // 拒绝访问的IP地址
???????? HttpServletRequest request = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);
???????? String ipAddress = request.getRemoteAddr(); // 取客户端IP地址
???????? System.out.println("ip:?????????????? "+ipAddress);
???????? // 先处理拒绝访问的地址
???????? for (String deniedIpAddress : deniedList) {
???????????? if (deniedIpAddress.equals(ipAddress)) {
???????????????? throw new Fault(new IllegalAccessException("ip地址 " + ipAddress + " 拒绝访问"));
???????????? }
???????? }
???????? // 如果允许访问的集合非空,继续处理,否则认为全部IP地址均合法
???????? if (allowedList.size() > 0) {
???????????? boolean contains = false;
???????????? for (String allowedIpAddress : allowedList) {
???????????????? if (allowedIpAddress.equals(ipAddress)) {
???????????????????? contains = true;
???????????????????? break;
???????????????? }
???????????? }
???????????? if (!contains) {
???????????????? throw new Fault(new IllegalAccessException("ip地址 " + ipAddress + " 不允许访问"));
???????????? }
???????? }
???? }
?}
?
IpAddressConfig.java:
package com.bplow.look.ws.filter;
import java.util.ArrayList;
import java.util.List;
public class IpAddressConfig {
???
??? // 允许访问的IP地址
??? public static List<String> getAllowedList(){
??? ??? List<String> li = new ArrayList<String>();
??? ??? li.add("192.168.1.30");
??? ??? return li;
??? }
???
??? // 拒绝访问的IP地址
??? public static List<String> getDeniedList(){
??? ??? List<String> li = new ArrayList<String>();
??? ??? li.add("127.0.0.1");
??? ??? return li;
??? }
}