1. wsimport

wsimport는 JAX-WS 웹 서비스를 위한 툴이다. WSDL 파일로부터 클라이언트 측 Java Stub 소스 파일들과 서버 측 웹 서비스 인터페이스 Java 소스 파일, 웹 서비스 정책 설정 파일을 생성한다.

wsimport 툴은 웹 서비스의 WSDL로부터 다음과 같은 것을 생성한다.

  • SEI, 서비스 클래스와 그 밖의 JAXB 관련 Java 클래스들

  • 웹 서비스 정책 설정이 담긴 WSDL 파일, wsit-client.xml 파일

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Usage: wsimport [options] <WSDL_URI>
    
    where [options] include:
      -b <path>                 specify jaxws/jaxb binding files or additional schemas
                                (Each <path> must have its own -b)
      -B <jaxbOption>            Pass this option to JAXB schema compiler
      -catalog <file>           specify catalog file to resolve external entity
                                references supports TR9401, XCatalog,
                                and OASIS XML Catalog format
      -d <directory>            specify where to place generated output files
      -extension                allow vendor extensions - functionality not specified
                                by the specification.  Use of extensions may
                                result in applications that are not portable or
                                may not interoperate with other implementations
      -help                     display help
      -httpproxy:<host>:<port>  specify a HTTP proxy server (port defaults to 8080)
      -keep                     keep generated files
      -p <pkg>                  specifies the target package
      -quiet                    suppress wsimport output
      -s <directory>            specify where to place generated source files
      -target <version>         generate code as per the given JAXWS spec version
                                Defaults to 2.2, Accepted values are 2.0, 2.1 and 2.2
                                e.g. 2.0 will generate compliant code for JAXWS 2.0
                                spec
      -verbose                  output messages about what the compiler is doing
      -version                  print version information
      -wsdllocation <location>  @WebServiceClient.wsdlLocation value
      -clientjar <jarfile>      Creates the jar file of the generated artifacts along
                                with the WSDL metadata required for invoking the web
                                service.
      -generateJWS              generate stubbed JWS implementation file
      -implDestDir <directory>  specify where to generate JWS implementation file
      -implServiceName <name>   local portion of service name for generated JWS
                                implementation
      -implPortName <name>      local portion of port name for generated JWS
                                implementation
    
    Extensions:
      -XadditionalHeaders       map headers not bound to request or response message
                                to Java method parameters
      -Xauthfile                file to carry authorization information in the
                                format  http://username:password@example.org/stock?wsdl
      -Xdebug                   print debug information
      -Xno-addressing-databinding       enable binding of W3C EndpointReferenceType to
                                        Java
      -Xnocompile                       do not compile generated Java files
      -XdisableAuthenticator            disable Authenticator used by JAX-WS RI,
                                        -Xauthfile option will be ignored if set
      -XdisableSSLHostnameVerification  disable the SSL Hostname verification while
                                        fetching wsdls
    
    Examples:
      wsimport stock.wsdl -b stock.xml -b stock.xjb
      wsimport -d generated http://example.org/stock?wsdl
  • 파라미터

    파라미터 설명

    -b <path>

    외부의 JAX-WS 또는 JAXB 바인딩 파일들을 지정한다.

    -B <jaxbOption>

    이 옵션을 JAXB 스키마 컴파일러에 전달함을 지정한다.

    -catalog <file>

    TR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 ant xmlcatalog 타입을 사용할 수도 있다.

    -d <directory>

    결과 파일이 생성될 디렉터리를 지정한다.

    -extension

    벤더 특정의 확장성을 명시할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다.

    -help

    도움말을 출력한다.

    -httpproxy:<host>:<port>

    HTTP 프록시 서버를 지정한다. (기본값: 8080)

    -keep

    생성되는 파일들을 보존한다.

    -p <pkg>

    WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 지정한다.

    quiet

    출력 메시지들을 보이지 않게 한다.

    -s <directory>

    생성된 소스 파일들이 놓일 위치를 지정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다.

    -target <version>

    이곳에 지정된 JAXWS 스펙 버전에 따라 코드를 생성한다.

    -verbose

    Verbose 출력은 true일 때 가능하다. (기본값: false)

    -version

    버전 정보를 화면에 출력한다.

    -wsdllocation <location>

    WSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 SEI(Service Endpoint Interface)와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다.

    -clientjar <jarfile>

    웹 서비스 호출에 필요한 WSDL 메타 데이터와 함께 생성된 아티팩트의 jar 파일을 생성한다.

    -generateJWS

    Stub된 JWS 구현 파일을 생성한다.

    -implDestDir <directory>

    JWS 구현 파일을 생성할 위치를 지정한다.

    -implServiceName <name>

    생성된 JWS 구현에 대한 서비스 이름의 로컬 부분이다.

    -implPortName <name>

    생성된 JWS 구현에 대한 포트 이름의 로컬 부분이다.

  • 예제

    wsimport는 JEUS_HOME/bin/ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    wsimport 툴을 실행하는 예는 다음과 같다.

    $ wsimport -d build/classes -keep -p fromwsdl.server src/conf/AddNumbers.wsdl

    위의 명령어는 AddNumbers.wsdl WSDL 문서로부터 패키지명이 fromwsdl.server인 Portable Artifact를 생성한다. [-keep] 옵션에 의해 생성되는 Java 클래스 소스들은 삭제되지 않는다.