在S2SH中使用CXF添加WebService

6 篇文章 0 订阅

最近学弟学妹让我帮忙在他们的S2SH项目中添加远程调用接口,我使用CXF添加WebService,提高远程接口。

主要有以下个步骤:

步骤一:下载jar包:

geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-jaxws_2.2_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.3.jar
jaxb-api-2.2.1.jar
jaxb-impl-2.2.1.1.jar
neethi-2.0.4.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar
wstx-asl-3.2.9.jar

这些jar直接去apach官网下载cxf的压缩包,都能够下载。

步骤二:配置Web.xml 

<servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/webServices/*</url-pattern>
  </servlet-mapping>

其中  /WebService/* 是接口的访问地址格式。

步骤三:Spring容器的配置

        在spring的配置上添加上图所标注的。

步骤四: 开始写接口:





注意标志的位置。

步骤五: 接口写完。最后需要在spring的配置文件上注册接口,让spring管理。

到这里为止,已经接口已经写完。启动项目,然后在浏览器地址输入



通过地址栏 查看接口是否暴露。

到这里为止S2SH项目使用CXF配置WebService 已经完成。


最后配上使用AXIS调用webService接口demo。同样AXIS的jar可以在apach的官网下载。


package Test.Test;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;


import org.apache.axis.client.Service;


import com.alibaba.fastjson.JSON;


import Test.domain.User;


public class TestClient {

public static void main(String[] args) {

//指出service的URL
String endpoint="http://localhost:8080/Struts2.3.16.1Hibernate4.3.4Spring4.0.2/webServices/LoginService";

//映射  固定不变
String nameSpace="http://webservice.internsystem.sise.com/";

//创建一个Service 用户调用CALL方法
Service service=new Service();

try {
Call call=service.createCall();
call.setTargetEndpointAddress(endpoint);

//调用的接口名称 Login
call.setOperationName(new QName(nameSpace,"Login"));

//调用接口 传递的参数
call.addParameter("UserJson", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);
// new 一个实体类
User user=new User();
user.setName("admin");
user.setPwd("123456");
user.setRole("admin");

//将对象转换为String类型字符串
String aa=JSON.toJSONString(user);

//调用接口返回的参数
String result=(String) call.invoke(new Object[]{aa});

User user2=new User();
user2=JSON.parseObject(result, User.class);
System.out.println(result);
// System.out.println(user2.toString());

} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}


}


}

成为菜鸟路上的笨鸟~























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值