JavaEE 之 WebService

1.WebService

  a.定义:WebService是一种跨编程语言和跨操作系统平台的远程调用技术

  b.三大技术: XML+XSD,SOAP,WSDL

  c.SOAP协议 = HTTP协议 + XML数据格式

  d.WSDL:基于XML的描述语言(相当于字典、菜单)

 

 

2.服务端:

  a.在xml中配置

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> <!-- 配置CXF框架的核心Servlet -->
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/server/*</url-pattern>
    </servlet-mapping>

  b.建spring-webservice.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:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
    default-lazy-init="true"> 
    <bean id="webserviceServer" class="com.wode.server.impl.MyWebServiceImpl" /> 
    <jaxws:endpoint id="myService" implementor="#webserviceServer"
        address="/HelloService">
    </jaxws:endpoint> 
</beans>

  c.建接口

@WebService
public interface MyWebService {

    int add(@WebParam(name = "firstA") int a, @WebParam(name = "firstB") int b);
    
    int minus(@WebParam(name = "secondA") int a, @WebParam(name = "secondB") int b);
    
}

  d.建实现类

@WebService(endpointInterface = "com.wode.server.MyWebService")
public class MyWebServiceImpl implements MyWebService {

    @Override
    public int add(int a, int b) {
        // TODO Auto-generated method stub
        System.out.println(a+b);
        return a+b;
    }

    @Override
    public int minus(int a, int b) {
        // TODO Auto-generated method stub
        System.out.println(a-b);
        return a-b;
    }

}

  e.测试(需先运行tomcat服务器tomcat:run)

        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
        factoryBean.setServiceClass(MyWebService.class);
        factoryBean.setAddress("http://127.0.0.1:8080/myService/server/HelloService");
        MyWebService service=(MyWebService) factoryBean.create();
        System.out.println(service.add(1, 3));

  f.访问http://127.0.0.1:8080/myService/server/HelloService?wsdl确认是否正常

  g.下载apache-cxf-3.1.11并配置环境变量

  h.在控制台输入

wsdl2java -encoding utf-8 -d E:\EclipseWorkspace\myService http://127.0.0.1:8080/myService/server/HelloService?wsdl

  i.将项目下com文件夹复制到客户端项目中

 

 

3.客户端

  a.使用

        MyWebServiceImplService service=new MyWebServiceImplService();
        MyWebService myWebService=service.getMyWebServiceImplPort();
        System.out.println(myWebService.add(10, 100)+"client");

 

posted @ 2017-04-25 19:22  晨M风  阅读(1313)  评论(0编辑  收藏  举报