웹 서비스에 매개변수 추가

웹 서비스와 데이터베이스 간 연결의 선택적 등록 정보 및 웹 서비스가 조작을 수행하는 지원되는 데이터베이스의 선택적 등록 정보를 설정하는 매개변수를 웹 서비스에 추가할 수 있습니다. 데이터 개발 프로젝트에서 작성하는 웹 서비스에 디폴트로 이러한 매개변수를 추가하거나 개별 웹 서비스 전개시 이러한 매개변수를 추가할 수 있습니다.

이 태스크 정보

추가 웹 서비스 매개변수를 지정한 후 해당 매개변수의 값을 전달하여 웹 서비스에 추가 제어 또는 감사 정보를 전달할 수 있습니다. 웹 서비스 전개 마법사에서 또는 프로젝트에 대한 등록 정보 창의 웹 서비스 페이지에서 매개변수 테이블의 매개변수를 지정하십시오.

세 가지 다른 메소드를 사용하여 추가 매개변수에 값을 전달할 수 있습니다.
  • 매개변수 테이블에서 직접 값 지정
  • 클라이언트 응용프로그램이 웹 서비스에 SOAP/HTTP 메시지를 보낼 경우 SOAP 메시지 헤더에서 값 지정
  • 클라이언트 응용프로그램이 웹 서비스에 REST 유사 메시지를 보낼 경우 HTTP 제어 매개변수에서 값 지정

전달된 값은 메시지가 요청하는 조작에 대해서만 적용됩니다. 전달된 값은 둘 이상의 메시지 또는 조작에 걸쳐있지 않습니다.

프로시저

웹 서비스에 매개변수를 추가하려면 다음을 수행하십시오.

  1. 추가할 제어 매개변수 및 이러한 매개변수에 대해 설정할 값을 결정하십시오.
    DB2® 데이터베이스 클라이언트 감사 정보를 전달하는 매개변수
    • connection.jcc.clientAccountingInformation
    • connection.jcc.clientUser
    • connection.jcc.clientProgramName
    • connection.jcc.clientWorkstation

    이러한 매개변수에 대한 설명은 이 주제 맨 아래의 관련 정보 섹션에 있는 링크를 참조하십시오. 링크를 따라갈 때 이름의 세 번째 파트를 검색하여 매개변수를 찾으십시오. 예를 들어, 매개변수가 connection.jcc.clientUser일 경우 clientUser를 검색하여 매개변수를 찾으십시오.

    연결 정보를 전달하는 데 필요한 매개변수
    connection.stmt.maxRows
    결과 세트에 대해 리턴할 최대 행 수를 지정합니다.
    connection.stmt.queryTimeout
    명령문이 데이터베이스에서 실행될 때까지 JDBC 드라이버가 대기하는 시간(초)을 지정합니다. 명령문이 이 시간 내에 실행되지 않으면 연결이 닫힙니다.
    메시지 출력 형식을 지정하는 데 사용되는 매개변수
    outputFormat
    이 제어 매개변수에 대한 설명은 메시지 출력 형식을 참조하십시오.
  2. Apache Tomcat 웹 서버를 사용할 경우 자원 정의가 accessToUnderlyingConnectionAllowed 매개변수를 true로 설정합니다. 예를 들어, Linux®, UNIX® 및 Windows®용 DB2와 함께 제공되는 샘플 데이터베이스를 사용 중이었던 경우 자원 정의는 다음과 유사하게 표시됩니다. accessToUnderlyingConnectionAllowed 매개변수가 굵은체로 강조표시됩니다.
    <Resource driverClassName="com.ibm.db2.jcc.DB2Driver" 
    maxActive="4" 
    maxIdle="2" 
    maxWait="5000" 
    name="jdbc/sample" 
    password="password" 
    type="javax.sql.DataSource" 
    url="jdbc:db2://localhost:50000/sample" 
    username="userID" 
    validationQuery="select * from employee" 
    accessToUnderlyingConnectionAllowed="true"/>
  3. 웹 서비스 전개 마법사 또는 데이터 개발 프로젝트의 등록 정보 창을 여십시오.
    옵션 설명
    데이터 개발 프로젝트의 모든 웹 서비스에 새 매개변수를 추가하려면 다음을 수행하십시오.
    1. 프로젝트 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 선택하십시오.
    2. 등록 정보 창에서 웹 서비스를 선택하십시오.
    전개할 웹 서비스에만 새 매개변수를 추가하려면 다음을 수행하십시오.
    • 데이터 개발 프로젝트에서 웹 서비스를 마우스 오른쪽 단추로 누른 후 빌드 및 전개를 선택하십시오.
  4. 각각의 매개변수에 대해 다음 단계를 수행하십시오.
    1. 매개변수 테이블의 오른쪽에서 새로 작성을 누르십시오. 편집 가능한 행이 테이블에 표시됩니다.
    2. 편집 가능한 행의 이름 컬럼에 매개변수의 이름을 입력하십시오.
    3. 웹 서비스가 데이터베이스에 대한 조작을 수행할 때마다 매개변수의 값을 사용하려면 컬럼에 매개변수의 값을 입력하십시오. 매개변수가 접두부 service로 시작할 경우 해당 값을 지정해야 합니다.
    4. SOAP 메시지의 헤더 또는 REST 메시지의 HTTP 제어 매개변수에 값을 제공하려면 컬럼을 공백으로 두십시오.

데이터 개발 프로젝트의 모든 웹 서비스에 대해 데이터베이스 연결 등록 정보 clientUser를 설정한다고 가정해 보겠습니다. 프로젝트 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 선택하십시오. 등록 정보 창에서 웹 서비스를 선택하십시오. 매개변수 테이블 옆의 웹 서비스 페이지에서 새로 작성을 눌러 테이블에 행을 추가하십시오. 새 행의 이름 컬럼에 connection.jcc.clientUser를 입력하십시오.

웹 서비스 전개 마법사 및 프로젝트의 웹 서비스 등록 정보 페이지에 있는
매개변수 테이블.
세 가지 방법으로 이 매개변수의 값을 제공할 수 있습니다.
  • 새 행의 컬럼에서 값을 지정하십시오. 웹 서비스가 예외 없이 매개변수 및 해당 값을 모든 데이터베이스 연결에 적용합니다. 클라이언트 응용프로그램에서 이 매개변수에 지정된 값은 무시됩니다.
    매개변수 테이블의 값 컬럼에서 매개변수의 값 지정.
  • 클라이언트 응용프로그램이 웹 서비스에 보내는 SOAP/HTTP 메시지의 헤더에서 값을 지정하십시오.

    다음은 SOAP 헤더를 사용하여 Apache Axis2가 생성한 코드의 샘플입니다.

    package myClientTest;
    
    import example.WebService2Stub;
     
    public class getEmployee {
    
       public static void main(String args[]) {
          try {
             // create the stub
             WebService2Stub stub = new WebService2Stub("http://localhost:8000/WebService2/services/WebService2");
             // create the request elment for SOAP body
             WebService2Stub.GetEmployee empRequest = new  WebService2Stub.GetEmployee();
             // fill request with employee number
             empRequest.setEmpno("000130");
    
             // create the Header for the request element
             WebService2Stub.ConnectionProperties properties = new WebService2Stub.ConnectionProperties();
             WebService2Stub.ConnectionPropertiesType propertiesType = new WebService2Stub.ConnectionPropertiesType();
             properties.setConnectionProperties(propertiesType);
    
             // fill the header with properties
             WebService2Stub.Property_type0 property1 = new WebService2Stub.Property_type0();
             property1.setName("connection.jcc.clientUser");
             property1.setValue("heathr");
             propertiesType.addProperty(property1);
    
    
             WebService2Stub.GetEmployeeResponse response =  stub.getEmployee(empRequest, properties);
    
             //...
    
          } catch (Exception e) {
             System.err.println(e.toString());
          }
       }
    }

    다음은 코드에 의해 생성되는 SOAP 요청입니다.

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header>
          <ns1:connectionProperties xmlns:ns1="urn:example">
             <property name="connection.jcc.clientUser" value="heathr"/>
          </ns1:connectionProperties>
       </soapenv:Header>
       <soapenv:Body>
          <ns1:getEmployee xmlns:ns1="urn:example">
             <empno>000130</empno>
          </ns1:getEmployee>
       </soapenv:Body>
    </soapenv:Envelope>
  • 클라이언트 응용프로그램이 웹 서비스에 보내는 REST 유사 메시지의 HTTP 제어 매개변수에 값을 지정하십시오. REST 메시지의 URL에 있는 HTTP 제어 매개변수에는 밑줄이 접두부로 표시되어 있습니다.

    다음 입력 메시지는 REST 유사 HTTP GET(url 인코딩됨)을 사용합니다.

    GET /Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr HTTP/1.1
    User-Agent: Java/1.5.0
    Host: localhost:8070
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    Content-type: application/x-www-form-urlencoded

    요청의 결과 URL은 다음과 같습니다. 이 URL은 모든 HTTP 바인드에서 사용될 수 있습니다.

    http://localhost:8080/Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr


피드백