1.服务端

1.1 创建maven web项目

在这里插入图片描述

1.2 pom.xml添加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>spring_jaxws_service</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>spring_jaxws_service Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
  		<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>3.0.1</version>
		</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
  </dependencies>
  
  <build>
		<pluginManagement>
			<plugins>
				<!-- 编译插件 -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.2</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
						<showWarnings>true</showWarnings>
					</configuration>
				</plugin>
				<!-- 运行tomcat7方法:tomcat7:run -->
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<version>2.2</version>
					<configuration>
						<!-- 指定端口 -->
					<port>8080</port>
					<!-- 请求路径 -->
					<path>/</path>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

1.3 web.xml配置CXFServlet

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <!-- 1.cxfServlet配置 -->
  <servlet>
  	<servlet-name>cxfServlet</servlet-name>
  	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>cxfServlet</servlet-name>
  	<!-- 需要注意:这个路径是作为我们webService服务访问路径的其中一部分,另外一部分在spring的配置文件中进行配置的 -->
  	<url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
  
  <!-- 2.spring容器配置 -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>

1.4 服务接口、服务实现

package org.example.service;

import javax.jws.WebService;

/**
 * 对外发布服务的接口
 *
 */
@WebService
public interface HelloServiceI {

	/**
	 * 对外发布服务的接口的方法
	 * @param name
	 * @return
	 */
	public String sayHello(String name);
}

package org.example.service.impl;

import org.example.service.HelloServiceI;

public class HelloServiceImpl implements HelloServiceI{

	public String sayHello(String name) {
		return name;
	}
}

1.5 Spring整合ApacheCXF

创建applicationContext.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:cxf="http://cxf.apache.org/core"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/core
        http://cxf.apache.org/schemas/core.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd
        http://cxf.apache.org/jaxrs
        http://cxf.apache.org/schemas/jaxrs.xsd
        ">
        
        <!--这里发布服务  -->
        <!-- spring整合cxf发布服务,关键点:
        	1.服务地址
        	2.服务类
        	服务完整访问地址:http://localhost:8080/spring_jaxws_service/ws/hello
         -->
         <jaxws:server address="/hello" >
         	<jaxws:serviceBean>
         		<bean class="org.example.service.impl.HelloServiceImpl"/>
         	</jaxws:serviceBean>
         </jaxws:server>


</beans>




1.6 启动服务,发动服务

使用tomcat7运行该项目

在这里插入图片描述

1.7 访问wsdl说明书

在这里插入图片描述

2.客户端

2.1 创建maven项目

在这里插入图片描述

2.2 pom.xml添加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>spring_jaxws_client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring_jaxws_client</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

   <dependencies>
  		<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>3.0.1</version>
		</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>
  </dependencies>
  
  <build>
		<pluginManagement>
			<plugins>
				<!-- 编译插件 -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.2</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
						<showWarnings>true</showWarnings>
					</configuration>
				</plugin>
				<!-- 运行tomcat7方法:tomcat7:run -->
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<version>2.2</version>
					<configuration>
						<!-- 指定端口 -->
					<port>8080</port>
					<!-- 请求路径 -->
					<path>/</path>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

2.3 添加service接口

package org.example.service;

import javax.jws.WebService;

/**
 * 对外发布服务的接口
 *
 */
@WebService
public interface HelloServiceI {

	/**
	 * 对外发布服务的接口的方法
	 * @param name
	 * @return
	 */
	public String sayHello(String name);
}

2.4 Spring整合ApacheCXF配置

<?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:cxf="http://cxf.apache.org/core"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/core
        http://cxf.apache.org/schemas/core.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd
        http://cxf.apache.org/jaxrs
        http://cxf.apache.org/schemas/jaxrs.xsd
        ">
        
        <!--这里发布服务  -->
        <!-- spring整合cxf客户端配置,关键点:
        	1.服务地址
        	2.服务类型
        	
         -->
         <jaxws:client id="helloService"
         	serviceClass="org.example.service.HelloServiceI"
         	address="http://localhost:8080/spring_jaxws_service/ws/hello"
         >
         	
         </jaxws:client>


</beans>


2.5 junit测试

package org.example.test;

import javax.annotation.Resource;

import org.example.service.HelloServiceI;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Client {

	//注入对象
	@Resource
	private HelloServiceI helloServiceI;
	
	@Test
	public void name() {
		//查看接口的代理对象类型
		System.out.println(helloServiceI.getClass());
		
		//远程调用服务端方法
		System.out.println(helloServiceI.sayHello("上帝是个女孩"));
	}
}

2.6 测试结果

十一月 17, 2021 10:40:08 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper getDefaultTestExecutionListenerClassNames
信息: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
十一月 17, 2021 10:40:08 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper instantiateListeners
信息: Could not instantiate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
十一月 17, 2021 10:40:08 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper instantiateListeners
信息: Could not instantiate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
十一月 17, 2021 10:40:08 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper instantiateListeners
信息: Could not instantiate TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener]. Specify custom listener classes or make the default listener classes (and their required dependencies) available. Offending class: [javax/servlet/ServletContext]
十一月 17, 2021 10:40:08 下午 org.springframework.test.context.support.DefaultTestContextBootstrapper getTestExecutionListeners
信息: Using TestExecutionListeners: [org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@7e0babb1, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6debcae2, org.springframework.test.context.support.DirtiesContextTestExecutionListener@5ba23b66]
十一月 17, 2021 10:40:08 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
十一月 17, 2021 10:40:09 下午 org.springframework.context.support.GenericApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.GenericApplicationContext@180bc464: startup date [Wed Nov 17 22:40:09 GMT+08:00 2021]; root of context hierarchy
十一月 17, 2021 10:40:09 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://service.example.org/}HelloServiceIService from class org.example.service.HelloServiceI
class com.sun.proxy.$Proxy45
上帝是个女孩
十一月 17, 2021 10:40:12 下午 org.springframework.context.support.GenericApplicationContext doClose
信息: Closing org.springframework.context.support.GenericApplicationContext@180bc464: startup date [Wed Nov 17 22:40:09 GMT+08:00 2021]; root of context hierarchy

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐