SSM之Web Services

1.介绍

WebService基本介绍
WebService中的WSDL详细解析

1.1 wsdl介绍

在这里插入图片描述

    <wsdl:service name="HelloServiceDemo">
        <wsdl:port name="HelloServiceDemoHttpSoap11Endpoint" binding="ns:HelloServiceDemoSoap11Binding">
            <soap:address location="http://localhost:8080/ssm_crud/services/HelloServiceDemo.HelloServiceDemoHttpSoap11Endpoint/"/>
        </wsdl:port>
    </wsdl:service>

从下面可以看到soap:operation soapAction=“urn:sayHello”,urn:sayHello就是我们要访问的方法名

    <wsdl:binding name="HelloServiceDemoSoap11Binding" type="ns:HelloServiceDemoPortType">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <wsdl:operation name="sayHello">
            <soap:operation soapAction="urn:sayHello" style="document"/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:portType name="HelloServiceDemoPortType">
        <wsdl:operation name="sayHello">
            <wsdl:input message="ns:sayHelloRequest" wsaw:Action="urn:sayHello"/>
            <wsdl:output message="ns:sayHelloResponse" wsaw:Action="urn:sayHelloResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:message name="sayHelloRequest">
        <wsdl:part name="parameters" element="ns:sayHello"/>
    </wsdl:message>
    <wsdl:message name="sayHelloResponse">
        <wsdl:part name="parameters" element="ns:sayHelloResponse"/>
    </wsdl:message>
    <wsdl:types>
        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://serviceimpl.webservice.zy.com">
            <xs:element name="sayHello">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="sayHelloResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:schema>
    </wsdl:types>

1.2 项目结构

在这里插入图片描述

2.axis2集成

2.1 添加依赖

	<axis2.version>1.7.8</axis2.version>
      <!--axis2 begin-->
      <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-spring</artifactId>
        <version>${axis2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>${axis2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>${axis2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-xmlbeans</artifactId>
        <version>${axis2.version}</version>
      </dependency>
      <!--axis2 end-->

2.2 创建相关类

public interface IHelloService {
    public String sayHello(String name);
}
@Service("helloService")
public class HelloServiceImpl implements IHelloService{
    @Override
    public String sayHello(String name) {
        return "你好,"+name+" 欢迎来到websercie!!!";
    }
}

2.3 applicationContext.xml

    <!--axi2交给spring管理-->
    <bean id="applicationContext"
          class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />

2.4 web.xml

  <!-- 开启webservice:Axis2 -->
  <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  <!-- Axis2 -->

2.5 添加services.xml

注意:services.xml的目录结构必须按照这下面路径设置,不然会读取不到这个配置文件的
/webapp/WEB-INF/services/webservices/META-INF/services.xml ,其中,只有webservices可以任意命名,其他的文件夹名称不能改变

<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
    <!--接口名称-->
    <service name="HelloServiceDemo" scope="application">
        <!--接口描述-->
        <description>
            axis2 实现的webservice样例
        </description>
        <!--这个是比较老的接口,若spring版本较高,用第二个,不然启动不能实例化-->
        <!--<parameter name="ServiceObjectSupplier">-->
            <!--org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier-->
        <!--</parameter>-->
        <parameter name="ServiceObjectSupplier" locked="false">
            org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
        </parameter>
        <!--接口实现类-->
        <parameter name="SpringBeanName">helloService</parameter>
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
        </messageReceivers>
        
    </service>
</serviceGroup>

2.5 运行

输入:IP+端口+项目名+services+接口名?wsdl
http://localhost:8080/ssm_crud/services/HelloServiceDemo?wsdl
在这里插入图片描述
用soapui访问,如图:
在这里插入图片描述

参考

官网
官网
springMVC以maven方式集成axis2-1.7.8
spring整合axis2(最小配置化)的示例
maven下axis2与spring的整合开发流程

SSM框架整合CXF的步骤如下: 1. 在pom.xml文件中添加CXF和JAX-WS的依赖。 ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.2.6</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.2.6</version> </dependency> ``` 2. 在Spring的配置文件中加入CXF的配置。 ```xml <jaxws:endpoint id="userService" implementor="com.example.service.UserService" address="/userService"> <jaxws:features> <bean class="org.apache.cxf.feature.LoggingFeature"/> </jaxws:features> </jaxws:endpoint> ``` 3. 在Spring的配置文件中加入CXF和SSM框架的整合配置。 ```xml <bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus"> <property name="cxfConfigLocation" value="classpath:META-INF/cxf/cxf.xml"/> </bean> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:config.properties"/> </bean> <bean id="userService" class="org.apache.cxf.jaxws.EndpointImpl"> <property name="bus" ref="cxf"/> <property name="endpointName" value="tns:UserServicePort"/> <property name="serviceName" value="tns:UserService"/> <property name="implementor" ref="userServiceImpl"/> <property name="address" value="${service.url}"/> </bean> ``` 4. 在web.xml文件中加入CXF的servlet配置。 ```xml <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <init-param> <param-name>config-location</param-name> <param-value>/WEB-INF/cxf-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> ``` 以上就是SSM框架整合CXF的步骤,希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值