20.3. 사용법


20.3.1. 일반

Camel-quarkus-cxf-soapCXF Extensions for Quarkus 프로젝트의 확장 기능( quarkus-cxf )을 사용합니다. 즉 quarkus-cxf 는 지원되는 사용 사례 집합과 WS 사양을 제공합니다.

중요

지원되는 사용 사례 및 WS 사양에 대한 자세한 내용은 Quarkus CXF 참조를 참조하십시오.

20.3.2. 종속성 관리

Camel Extensions for Quarkus 는 CXF 및 quarkus-cxf 버전을 관리합니다. 해당 프로젝트에 대해 호환되는 버전을 선택할 필요가 없습니다.

20.3.3. 클라이언트

camel-quarkus-cxf-soap (추가 종속 항목 없음)을 사용하면 Camel 경로에서 생산자로 CXF 클라이언트를 사용할 수 있습니다.

import org.apache.camel.builder.RouteBuilder;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class CxfSoapClientRoutes extends RouteBuilder {

    @Override
    public void configure() {

        /* You can either configure the client inline */
        from("direct:cxfUriParamsClient")
                .to("cxf://http://localhost:8082/calculator-ws?wsdlURL=wsdl/CalculatorService.wsdl&dataFormat=POJO&serviceClass=org.foo.CalculatorService");

        /* Or you can use a named bean produced below by beanClient() method */
        from("direct:cxfBeanClient")
                .to("cxf:bean:beanClient?dataFormat=POJO");

    }

    @Produces
    @SessionScoped
    @Named
    CxfEndpoint beanClient() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(CalculatorService.class);
        result.setAddress("http://localhost:8082/calculator-ws");
        result.setWsdlURL("wsdl/CalculatorService.wsdl"); // a resource in the class path
        return result;
    }
}
Copy to Clipboard Toggle word wrap

CalculatorService 는 다음과 같을 수 있습니다.

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(targetNamespace = CalculatorService.TARGET_NS)
public interface CalculatorService {

    public static final String TARGET_NS = "http://acme.org/wscalculator/Calculator";

    @WebMethod
    public int add(int intA, int intB);

    @WebMethod
    public int subtract(int intA, int intB);

    @WebMethod
    public int divide(int intA, int intB);

    @WebMethod
    public int multiply(int intA, int intB);
}
Copy to Clipboard Toggle word wrap
참고

Cryostat-WS 주석이 필요합니다. Simple CXF Frontend는 지원되지 않습니다. 복잡한 매개 변수 유형은 native 모드에서 제대로 작동하려면 CryostatB 주석이 필요합니다.

작은 정보

이 서비스 끝점 인터페이스를 구현하는 quay.io/l2x6/calculator-ws:1.2 컨테이너에 대해 이 클라이언트 애플리케이션을 테스트할 수 있습니다.

$ docker run -p 8082:8080 quay.io/l2x6/calculator-ws:1.2
Copy to Clipboard Toggle word wrap
참고

Quarkus-cxf@io.quarkiverse.cxf.annotation.CXFClient 주석을 사용하여 Cryostat 클라이언트 삽입을 지원합니다. 자세한 내용은 quarkus-cxf 사용자 가이드의 Cryostat 클라이언트 장을 참조하십시오.

20.3.4. 서버

camel-quarkus-cxf-soap 을 사용하면 Camel 경로에서 Cryostat 끝점을 소비자로 노출할 수 있습니다. 이 사용 사례에는 추가 종속 항목이 필요하지 않습니다.

import org.apache.camel.builder.RouteBuilder;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class CxfSoapRoutes extends RouteBuilder {

    @Override
    public void configure() {
        /* A CXF Service configured through a CDI bean */
        from("cxf:bean:helloBeanEndpoint")
                .setBody().simple("Hello ${body} from CXF service");

        /* A CXF Service configured through Camel URI parameters */
        from("cxf:///hello-inline?wsdlURL=wsdl/HelloService.wsdl&serviceClass=org.foo.HelloService")
                        .setBody().simple("Hello ${body} from CXF service");
    }

    @Produces
    @ApplicationScoped
    @Named
    CxfEndpoint helloBeanEndpoint() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(HelloService.class);
        result.setAddress("/hello-bean");
        result.setWsdlURL("wsdl/HelloService.wsdl");
        return result;
    }
}
Copy to Clipboard Toggle word wrap

이 두 서비스의 경로는 예를 들어 application.properties 에서 설정할 수 있는 quarkus.cxf.path 구성 속성 값에 따라 다릅니다.

application.properties

quarkus.cxf.path = /soap-services
Copy to Clipboard Toggle word wrap

이 구성을 사용하면 각각 http://localhost:8080/soap-services/hello-beanhttp://localhost:8080/soap-services/hello-inline 에서 두 서비스에 액세스할 수 있습니다.

위의 URL에 ?wsdl 을 추가하여 WSDL에 액세스할 수 있습니다.

중요

다른 확장 기능이 HTTP 끝점을 노출하지 않도록 100% 확신하지 않는 한 quarkus.cxf.path = / 를 사용하지 마십시오.

CEQ 2.13.3부터 quarkus.cxf.path 의 기본값은 / 입니다. 기본값을 사용하면 다른 확장이 HTTP 끝점을 노출하지 않도록 합니다.

이는 REST Cryostat, Vert.x, SmallRye Health 등에 영향을 미칩니다. 해당 항목을 사용하는 경우 quarkus.cxf.path/services (예: Camel Extensions for Quarkus 3.0.0 / quarkus-cxf 2.0.0 부터 시작하는 기본 경로)로 설정해야 합니다.

참고

Quarkus-cxf 는 Cryostat 끝점을 노출하는 대체 방법을 지원합니다. 자세한 내용은 quarkus-cxf 사용자 가이드의 Cryostat 서비스 장을 참조하십시오.

20.3.5. 요청 및 응답 로깅

org.apache.cxf.ext.logging.LoggingFeature: 클라이언트 및 서버에 대한 verbose logging을 활성화할 수 있습니다.

import org.apache.camel.builder.RouteBuilder;
import org.apache.cxf.ext.logging.LoggingFeature;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class MyBeans {

    @Produces
    @ApplicationScoped
    @Named("prettyLoggingFeature")
    public LoggingFeature prettyLoggingFeature() {
        final LoggingFeature result = new LoggingFeature();
        result.setPrettyLogging(true);
        return result;
    }

    @Inject
    @Named("prettyLoggingFeature")
    LoggingFeature prettyLoggingFeature;

    @Produces
    @SessionScoped
    @Named
    CxfEndpoint cxfBeanClient() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(CalculatorService.class);
        result.setAddress("https://acme.org/calculator");
        result.setWsdlURL("wsdl/CalculatorService.wsdl");
        result.getFeatures().add(prettyLoggingFeature);
        return result;
    }

    @Produces
    @ApplicationScoped
    @Named
    CxfEndpoint helloBeanEndpoint() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(HelloService.class);
        result.setAddress("/hello-bean");
        result.setWsdlURL("wsdl/HelloService.wsdl");
        result.getFeatures().add(prettyLoggingFeature);
        return result;
    }
}
Copy to Clipboard Toggle word wrap
참고

io.quarkiverse.cxf:quarkus-cxf-rt-features-loggingorg.apache.cxf.ext.logging.LoggingFeaturecamel-quarkus-cxf-soap 종속성으로 지원합니다.

애플리케이션에 명시적으로 추가할 필요는 없습니다.

20.3.6. WS 사양

지원되는 WS 사양의 범위는 Quarkus CXF 프로젝트에서 제공합니다.

중요

지원되는 사용 사례 및 WS 사양에 대한 자세한 내용은 Quarkus CXF 참조를 참조하십시오.

애플리케이션에 다른 WS 사양이 필요한 경우 이를 다루는 Quarkus CXF 종속성을 추가해야 합니다.

Camel Extensions for Quarkus에서는 지원 수준 Stable 로 나열된 모든 확장을 지원합니다.

작은 정보

통합 테스트를 다양한 WS 사양을 구현하는 애플리케이션의 실행 가능한 예로 사용할 수 있습니다.

20.3.7. 툴링

Quarkus-cxf 는 다음 두 가지 CXF 툴을 래핑합니다.

중요

wsdl2Java 가 제대로 작동하려면 애플리케이션이 io.quarkiverse.cxf:quarkus-cxf 에 직접 의존해야 합니다.

작은 정보

wsdlvalidator 는 지원되지 않지만 application.properties 에서 다음 구성과 함께 wsdl2Java 를 사용하여 WSDL의 유효성을 검증할 수 있습니다.

application.properties

quarkus.cxf.codegen.wsdl2java.additional-params = -validate
Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat