如何在其他项目调用webservice 发布的soap风格的接口

来源:互联网 发布:淘宝买游戏账号被骗 编辑:程序博客网 时间:2024/06/13 20:08

1.在项目的pom.xml文件中拷入cxf的依赖

<!-- 5.CXF -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>3.0.5</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>3.0.5</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-ws-security</artifactId>

<version>3.0.5</version>

</dependency>

<dependency>

<groupId>org.apache.ws.security</groupId>

<artifactId>wss4j</artifactId>

<version>1.5.2</version>

</dependency>

 

2.将发布的接口类拷入项目下(UserService注意要在接口上加@WebService注解如果不加则会抛出异常:Exception in thread "main" javax.xml.ws.WebServiceException: Could not find

3.想办法将UserServicebean交给springIOC容器来管理,即可以用自动注入(@Autowired)的方式来调用

①写一个bean来实现FactoryBean并重写它的三个方法,代码示例:

package com.bean.factory;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import org.springframework.beans.factory.FactoryBean;

public class MyWsServiceFactoryBean<T>implements FactoryBean<T>{

private Stringurl;

private Class<T>t;

@Override

public T getObject()throws Exception {

JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new  JaxWsProxyFactoryBean();

jaxWsProxyFactoryBean.setAddress(url);

jaxWsProxyFactoryBean.setServiceClass(t);

T MyService =(T)jaxWsProxyFactoryBean.create();

return MyService;

}

@Override

public Class<?> getObjectType() {

return this.t;

}

@Override

public boolean isSingleton() {

return true;

}

public String getUrl() {

return url;

}

public void setUrl(Stringurl) {

this.url =url;

}

public Class<T> getT() {

return t;

}

public void setT(Class<T>t) {

this.t =t;

}

}

②在spring的配置文件中配置MyWsServiceFactoryBean,示例代码如下:

1)先配置一个xxx.properties的文件,内容如下:

ws_url=http://localhost:8080/mall_0417_user_student/user?wsdl

ws_t=com.service.UserService

2)将文件配置在spring的配置文件中

<context:property-placeholder location="classpath:ws.properties" />

 

3)配置MyWsServiceFactoryBean

<bean class="com.bean.factory.MyWsServiceFactoryBean">

<property name="url" value="${ws_url}"/>

<property name="t" value="${ws_t}"/>

</bean>

③此时就可以在相应的Controller层去注入UserService(@Autowired)

然后调用该接口中相应的方法

原创粉丝点击