5.5. JAX-WS
WebService 지원은 Apache CXF 도 사용하는 JBoss EAP WebServices 하위 시스템과 통합된 CXF 구성 요소를 통해 제공됩니다.
5.5.1. JAX-WS CXF Producer
다음 코드 예제에서는 CXF를 사용하여 WildFly 웹 서비스 하위 시스템에서 배포한 웹 서비스를 사용합니다.
5.5.1.1. Cryostat-WS 웹 서비스
다음의 간단한 웹 서비스에는 두 개의 문자열 인수를 함께 연결하고 반환하는 간단한 '!' 방법이 있습니다.
JBoss EAP 웹 서비스 하위 시스템이 Cryostat-WS 주석이 포함된 클래스를 감지하면 CXF 엔드포인트를 부트스트랩합니다. 이 예에서 서비스 끝점은 http://hostname:port/context-root/greeting 에 있습니다.
// Service interface @WebService(name = "greeting") public interface GreetingService { @WebMethod(operationName = "greet", action = "urn:greet") String greet(@WebParam(name = "message") String message, @WebParam(name = "name") String name); } // Service implementation public class GreetingServiceImpl implements GreetingService{ public String greet(String message, String name) { return message + " " + name ; } }
5.5.1.2. Camel 경로 구성
이 RouteBuilder는 위에 정의된 '승인' 웹 서비스를 사용하는 CXF 생산자 엔드포인트를 구성합니다. camel-cdi 구성 요소와 함께 CDI는 RouteBuilder 및 CamelContext를 부트스트랩하는 데 사용됩니다.
@Startup @ApplicationScoped @ContextName("cxf-camel-context") public class CxfRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from("direct:start") .to("cxf://http://localhost:8080/example-camel-cxf/greeting?serviceClass=" + GreetingService.class.getName()); } }
인사말 웹 서비스에는 두 개의 매개변수가 필요합니다. 이들은 ProducerTemplate
을 통해 위의 경로에 제공될 수 있습니다. 웹 서비스 메서드 인수 값은 교환 본문으로 전달되는 오브젝트 배열을 구성하여 구성됩니다.
String message = "Hello" String name = "Kermit" ProducerTemplate producer = camelContext.createProducerTemplate(); Object[] serviceParams = new Object[] {message, name}; String result = producer.requestBody("direct:start", serviceParams, String.class);
5.5.2. Camel CXF JAX-WS Consumer
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxf" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <cxf:cxfEndpoint id="cxfConsumer" address="http://localhost:8080/webservices/greeting" serviceClass="org.wildfly.camel.examples.cxf.jaxws.GreetingService" /> <camelContext id="cxfws-camel-context" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="cxf:bean:cxfConsumer" /> <to uri="log:ws" /> </route> </camelContext> </beans>
5.5.3. 보안
Cryostat -WS 보안 섹션을 참조하십시오.
5.5.4. EAP의 Fuse 빠른 시작 예
빠른 시작 예제는 빠른 시작/camel/camel-cxf-jaxws
디렉터리에 있는 EAP 설치의 Fuse에서 사용할 수 있습니다.