웹 서비스 (2) - Spring + CXF 발표 WS
CXF 는 Apache 산하 매우 우수한 웹 서비스 오픈 소스 프레임 워 크 로 경량급 의 특성 을 가지 고 있 으 며, spring 에 빈 틈 없 이 통합 할 수 있다.
CXF 는 Celtix 와 XFire 의 통합 이 고 전 자 는 ESB 프레임 워 크 이 며 후 자 는 웹 서비스 프레임 워 크 입 니 다. 다음은 CXF 와 Spring 의 통합 에 중심 을 두 고 소개 하 겠 습 니 다.
첫 번 째 단계: maven 의존 설정:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>spring-cxf</name>
<groupId>com</groupId>
<artifactId>spring-cxf</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.0.5.RELEASE</spring.version>
<cxf.version>3.0.0</cxf.version>
<jackson.version>2.4.1</jackson.version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- CXF -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>${cxf.version}</version>
</dependency>
</dependencies>
</project>
두 번 째 단계: WS 인터페이스 와 그 실현 을 작성 합 니 다.
@WebService
public interface HelloService {
String say(String name);
}
구현 인터페이스:
@WebService
@Component
public class HelloServiceImpl implements HelloService {
public String say(String name) {
return "hello " + name;
}
}
구현 클래스 에 @ Component 주 해 를 추가 해 야 Spring IOC 용기 에서 스 캔 할 수 있 습 니 다. spring bean 이 라 고 생각 하고 Bean ID 에 따라 인 스 턴 스 를 얻 을 수 있 습 니 다.
세 번 째 단계: 웹. xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- CXF -->
<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>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
그래서 / ws 접두사 가 있 는 요청 은 모두 CXFServlet 에 의 해 처 리 됩 니 다.
4 단계: spring 설정
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.*"/>
<import resource="spring-cxf.xml"/>
</beans>
STEP 5: CXF 설정
<?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://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!--HelloService-->
<jaxws:server id="helloService" address="/soap/hello">
<jaxws:serviceBean>
<ref bean="helloServiceImpl"/>
</jaxws:serviceBean>
</jaxws:server>
<bean id="helloServiceImpl" class="com.HelloServiceImpl"/>
</beans>
CXF 가 제공 하 는 spring 네 임 스페이스, 즉 jaxws: server 를 통 해 ws, address 가 요청 한 경로 정 보 를 발표 합 니 다.
STEP 6: tomcat 시작
tomcat 에 응용 프로그램 을 배치 하고 브 라 우 저 에 다음 주 소 를 입력 하면 CXF 콘 솔 에 들 어 갈 수 있 습 니 다.
http://localhost:8080/spring-cxf/ws
통과 하 다.http://localhost:8080/spring- cxf / ws / soap / hello? wdl 은 WSDL 을 볼 수 있 습 니 다.
현재 CXF 를 통 해 웹 서 비 스 를 성공 적 으로 발표 하 였 습 니 다. 클 라 이언 트 를 통 해 이 endpoint 를 어떻게 호출 하 는 지 소개 하 겠 습 니 다.
2. CXF 가 제공 하 는 WS 클 라 이언 트
클 라 이언 트 호출 에 대해 우 리 는 주로 동적 에이전트 의 방식 을 소개 합 니 다.
public class DynamicClient {
public static final String END_POINT = "http://localhost:8080/spring-cxf/ws/soap/hello?wsdl";
public static void main(String[] args) {
DynamicClientFactory factory = DynamicClientFactory.newInstance();
Client client = factory.createClient(END_POINT);
try {
Object[] results = client.invoke("say", "world");
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 총화
앞의 소 개 를 통 해 우 리 는 Spring + CXF 의 통합 이 발표 WS 를 더욱 간단 하고 구체 적 으로 네 가지 절차 로 나 눌 수 있다 는 것 을 알 게 되 었 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.