Webサービスを使用した値セットの値のインポート

「値セットの管理」ページでインポート・オプションを使用するかわりに、FndManageImportExportFilesService Webサービスを使用して、値セットの値をアプリケーションにインポートすることもできます。Webサービスでは、valueSetValuesDataLoaderメソッドを使用します。

前提条件

WebサービスFndManageImportExportFilesServiceが「アプリケーション・フレックスフィールド値セットの管理」資格に追加されていることを確認します。セキュリティ・コンソールを使用して、Oracle Entitlements Serverでこの構成を実行します。Webサービスの構成時に、次の詳細を入力します。

  • リソース・タイプ: WebserviceResourceType

  • 表示名: ImportExport

  • 名前: http://xmlns.oracle.com/oracle/apps/fnd/applcore/webservices/FndManageImportExportFilesService#*

  • 資格/権利(デフォルト・ポリシー・ドメイン内): アプリケーション・フレックスフィールド値セットの管理

  • セキュリティ・ポリシー: oracle /wss11_saml_or_username_token_with_message_protection_service_policy

値セットの値のインポート

値セットの値をインポートするには:

  1. 次のサブステップを実行して、「oracle/wss11_saml_or_username_token_with_message_protection_service_policy」というセキュリティ・ポリシー用のキーストアを生成します。

    1. コマンドkeytool -genkeypair -keyalg RSA -alias mycompkey -keypass <password> -keystore mycompclient-keystore.jks -storepass <password> -validity 3600を使用して、キーストアを生成します。

    2. Webブラウザを介してURL http://<host>:<port>/fndAppCoreServices/FndManageImportExportFilesService?wsdlを使用してWSDLにアクセスし、公開キー<wsdl:service>/<wsdl:port>/<wsa:EndpointReference>/<wsid:Identity>/<dsig:keyInfo>/<dsig:X509Data>/<dsig:X509Certificate>を取得します。次に、それを---- BEGIN CERTIFICATE -------- END CERTIFICATE ----で囲み、cdrmpk.cerという名前でファイルに保存します。

    3. コマンドkeytool -importcert -alias cdrmkey -file cdrmpk.cer -keystore mycompclient-keystore.jks -storepass <password>を使用して、トラスト・ストアにキー情報を格納します。

  2. 任意のブラウザを使用して、WSDLページにアクセスします。

  3. 関連するセキュリティ証明書Verisign Class 3 Public Primary Certification Authority - G5およびVerisign Secure Server CA - G3をエクスポートして保存します。

  4. 次のコマンドを使用して、保存した証明書をクライアント・コンピュータのトラスト・ストアにインポートします。

    keytool -importcert -keystore <truststore> -storepass <truststorepassword> -file <file location where the mentioned certificate is stored> -alias <alias for certificate>
  5. 次のコマンドを実行して、FndManageImportExportFilesService Webサービス用のJAX-WSプロキシを生成します。

    C:\Program Files\Java\jdk1.7.0_04\bin>wsimport
               -s "d:\wsimport\FndManageImportExport"
               -d "d:\wsimport\FndManageImportExport" http://<host>:<port>/fndAppCoreServices/FndManageImportExportFilesService?wsdl
    
       parsing WSDL... 
    
       Generating code... 
    
       Compiling code...
  6. 生成されたコードをJARファイルとして保存し、FndManageImportExportProxy.jarという名前を付けます。

  7. 次のコードを使用して、Webサービスを開始するための別のJARファイルを作成します。

    package com.oracle.xmlns.oracle.apps.fnd.applcore.webservices;
     
    import com.sun.xml.ws.developer.WSBindingProvider;
     
    import java.io.File;
    import java.io.IOException;
     
    import java.util.List;
     
    import java.util.Map;
     
    import javax.xml.ws.BindingProvider;
    import javax.xml.ws.WebServiceRef;
     
    import javax.xml.ws.handler.Handler;
     
    import oracle.webservices.ClientConstants;
     
    import weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature;
    // !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
    // This source file is generated by Oracle tools
    // Contents may be subject to change
    // For reporting problems, use the following
    // Version = Oracle WebServices (11.1.1.0.0, build 130224.1947.04102)
     
    public class FndManageImportExportFilesServiceSoapHttpPortClient
    {
      @WebServiceRef
      private static FndManageImportExportFilesService_Service fndManageImportExportFilesService_Service;
     
      public static void main(String [] args)
      {
           System.setProperty("javax.net.ssl.trustStore","<location of truststore which is used in II) to import the certificates>");
           System.setProperty("javax.net.ssl.trustStorePassword", "<truststore password>");
     
        fndManageImportExportFilesService_Service = new FndManageImportExportFilesService_Service();
            SecurityPoliciesFeature securityFeatures =
                new SecurityPoliciesFeature(new String[] { "oracle/wss11_username_token_with_message_protection_client_policy",
                                                           });
            FndManageImportExportFilesService
     fndManageImportExportFilesService =  
    fndManageImportExportFilesService_Service.getFndManageImportExportFilesServiceSoapHttpPort
     (securityFeatures);
            // Add your code to call the desired methods.
     
     
            WSBindingProvider wsbp = (WSBindingProvider) fndManageImportExportFilesService;
               Map<String, Object> requestContext = wsbp.getRequestContext();
     
     
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_TYPE,"jks");
            // Provide location of 'mycompclient-keystore.jks' which was created during Step I)
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_LOCATION,"/home/user1/mycompclient-keystore.jks");
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_PASSWORD,"<password>");
            requestContext.put(ClientConstants.WSSEC_RECIPIENT_KEY_ALIAS,"cdrmkey");
     
            //Provide user who is having permission to initiate the service
            requestContext.put(WSBindingProvider.USERNAME_PROPERTY,"<username>");
            requestContext.put(WSBindingProvider.PASSWORD_PROPERTY, "<password>");
     
     
            String id =          invokeUploadFiletoUCMMethod(fndManageImportExportFilesService);
     
            if (id != null) {
                invokevalueSetValuesDataLoader(fndManageImportExportFilesService,  new Long(id));
     
            }
      }
     
        static String invokeUploadFiletoUCMMethod(FndManageImportExportFilesService fndManageImportExportFilesService) {
     
            String response = null;
            DocumentDetails document = new DocumentDetails();
            ObjectFactory objfactory = new ObjectFactory();
            document.setFileName(objfactory.createDocumentDetailsFileName("import_data.txt"));
            // Provide UCM repository - if repository is fin/tax/import then suffix each value with $ as mentioned here
            document.setDocumentAccount(objfactory.createDocumentDetailsDocumentAccount("fin$/tax$/import$"));
            document.setDocumentTitle(objfactory.createDocumentDetailsDocumentTitle("VS"));
            document.setContentType(objfactory.createDocumentDetailsContentType("plain/text"));
     
            try {
     
                // Provide location of 'VS.txt' which contains ValueSet values data in prescribed format
                byte[] content =
                org.apache.commons.io.FileUtils.readFileToByteArray(new File("/home/user1/VS.txt"));
     
                //System.out.println("File content:" + new String(content, "UTF-8"));
                document.setContent(objfactory.createDocumentDetailsContent(content));
     
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
            catch(Exception e) {
                System.out.println("Exception: "+e.getMessage());
            }
     
            try {
                response = fndManageImportExportFilesService.uploadFiletoUCM(document);
                System.out.println("Response: " + response);
     
            } catch (ServiceException e) {
                System.out.println(e.getMessage());
            }
     
            return response;
        }
     
        static void invokevalueSetValuesDataLoader(FndManageImportExportFilesService fndManageImportExportFilesService,
                                                   Long id) {
            String response;
            try {
                response = fndManageImportExportFilesService.valueSetValuesDataLoader(id);
                System.out.println("Response: " + response);
            } catch (ServiceException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    
  8. 生成された出力をJAVAファイルとして保存し、FndManageImportExportFilesServiceSoapHttpPortClient.javaという名前を付けます。

  9. JAVAファイルを使用してJARファイルを作成し、FndManageImportExportClient.jarという名前を付けます。

  10. 次のコマンドを使用して、Webサービスを実行します。

    java -cp ./FndManageImportExportProxy.jar:./ws.api_1.1.0.0.jar:./FndManageImportExportClient.jar FndManageImportExportFilesServiceSoapHttpPortClient