Synchronous FTP

hi,
  My interface flow is File>XI>HTTP request->Http response->XI--->FTP
Can any body tell that is it possible to create an Sync. Interface for FTP communication Channel.
For how many times I need to run the Configuration Wizard.. If I run twice, Second time i am not able to get any sender channel as HTTP is Inbound synchronous and I put Receiver in Communication channel..
Can any body put some light on it...
Useful light will be awarded.............
Thanks'
Jaideep

Hi Jaideep,
In order to acheive that you would have to use Async-Sync bridge. Either through BPM or may be module processor. Just search the forum for Async-Sync bride you will get a lot of information.
Regarding the configuration wizard I don't have much idea. The better way to create ID content I believe is to first create scenario in IR and then import the configuration scenarion in ID. All the relevent objects would will created automatically.
Regards

Similar Messages

  • Synchronous FTP response message

    Hi,
    I am new to XI, so would welcome some advice.
    I have implemented an interface from ECC5 via abap proxy to XI FTP adapter to send files to a third party.
    I am using a synchronous interface to check the ftp has been successful.
    Because of it being synchronous, I must give a response message type.  But as this response is empty, the mapping back is failing.
    So, can I have a synchronous interface without a response, or can I fill the response from the FTP action, and if so, how ?
    Thanks
    Paul

    I am using a synchronous interface to check the ftp has been successful.
    1) FTP receiver cannot be used in a SYNC mode.
    2) If your intention is only to check if the connection was established successfully between PI and FTP and the file was transferred successfully then you can see that from status in Runtime Workbench --> Adapter Engine --> Channel MOnitoring.
    You dont need to do this manually (even though you can), you can set alerts which can raise an error message in case if anything goes wrong....this is a standard practice followed....no need to make the process SYNC.
    If your requirement is to check if the file has been processed successfully by the FTP server then you need to implement a process similar to the one explained by Holger.

  • Problems synchronizing FTP in DW CS5

    Hi!
    I'm having an issue synchronizing files to a remote FTP server in DreamWeaver CS5. Files upload OK, but whenever I ask it to synchronize sitewide it wants to upload the ENTIRE site (4000+ files!) Obviously missing the entire point... I've tried the steps listed in the knowledgebase in this article: http://kb2.adobe.com/cps/405/kb405835.html to no avail.
    Please help if you can!
    Thanks!
    Oh, also I'm running Windows 7 (64-bit)... if that matters.

    I am having the EXACT same problem if I right click on a file on the remote server and click "get" DW tries to download the ENTIRE site not just that one file... it only works if I drag the file across remote and local, which is a bother is I am only using 1 window!
    this does NOT happen if I right click on a file on my local machine and click "get", only on the remote server.
    I am also using windows 7 64bits but this also happens on Windows 7 32 bits
    UPDATE and possible fix;
    in my case I had several sites that pointed to a sub-folder inside a root of one of my sites and this seem to cause that behavior, I changed each site to its own folder on my local machine and it seems to be working now hope it helps!
    Message was edited by: ShantiGilbert

  • How to design BPEL process where BPEL is called by PL/SQL code?

    Hi,
    My BPEL process is called by a PL/SQL code given below.
    CREATE OR REPLACE PROCEDURE testd(errbuf OUT VARCHAR2,
    retcode OUT VARCHAR2)
    IS
    soap_request VARCHAR2(20000);
    soap_respond VARCHAR2(10000);
    http_req UTL_HTTP.REQ;
    http_resp UTL_HTTP.RESP;
    l_detail VARCHAR2(10000);
    endpoint VARCHAR2(130);
    begin
    endpoint := 'http://afsmlnx04.rheem.com:7105/soa-infra/services/default/HelloWorldPayload/bpelprocess1_client_ep';
    soap_request := '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body xmlns:ns1="http://oracle.nl/HelloWorldPayload"><ns1:process><ns1:input>abc</ns1:input></ns1:process></soap:Body></soap:Envelope>';
    http_req := utl_http.begin_request(
    endpoint
    , 'POST'
    , 'HTTP/1.1'
    utl_http.set_header(http_req
    , 'Content-Type'
    , 'text/xml');
    utl_http.set_header(http_req
    , 'Content-Length'
    , length(soap_request));
    utl_http.set_header(http_req
    , 'SOAPAction'
    , 'process');
    utl_http.write_text(http_req, soap_request);
    http_resp := utl_http.get_response(http_req);
    utl_http.read_text(http_resp, soap_respond);
    utl_http.end_response(http_resp);
    dbms_output.put_line('soap'||soap_respond);
    EXCEPTION
    WHEN utl_http.end_of_body THEN
    utl_http.end_response(http_resp);
    WHEN utl_http.request_failed THEN
    DBMS_OUTPUT.PUT_LINE('Request Failed: ' || utl_http.get_detailed_sqlerrm);
    WHEN utl_http.http_server_error THEN
    DBMS_OUTPUT.PUT_LINE('Server Error: ' || utl_http.get_detailed_sqlerrm);
    WHEN utl_http.http_client_error THEN
    DBMS_OUTPUT.PUT_LINE('Client Error: ' || utl_http.get_detailed_sqlerrm);
    WHEN others THEN
    DBMS_OUTPUT.PUT_LINE(sqlerrm);
    END;
    The above procedure will be defined as concurrent program in Oracle EBS.This concurrent program will call the bpel process.My question is how should i design the bpel process so that bpel will know it is called by a concurrent program?
    My BPEL is doing picking a file by FTP adapter and inserting data into a table.
    Please throw some lights on this!!

    Option 1:
    You have to design the service as a synchronous BPEL process
    1. Do a synchronous ftp get to read the file.
    2. Transform and write it into database table
    3. Reply results back to plsql
    Disadvantage: Your BPEL process should complete from BPEL timeout happens.
    Option 2:
    1. Enqueue the message into AQ from the concurrent program
    2. From the BPEL monitor the AQ, start the process when the message arrives
    3. Do a synchronous ftp get to read the file.
    4. Transform and write it into database table
    You cannot reply the results back to concurrent program.
    5. However, you could have another AQ to send the results back to concurrent program.
    6. Your concurrent program should listen to the resultsAQ to get the results back from BPEL.
    Option 2 is a relliable design.
    --Prasanna                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Passing file name dynamically in Synchronous read operation of FTP adapter in OSB

    Hi,
    We are implementing the integration in OSB 11g and using FTP JCA adapters to check if the file exists in the FTP location or not. We are using Synchronous read operation of FTP adapters. We need to pass the file name dynamically at run time. In the JCA file we can hard code the file name. How that file name can be taken dynamically using OSB.
    Regards,
    Sharmistha

    Hi Sandeep,
    This is possible.
    For creating filenames dynamically for your sender, you will have to crate a variable name ( eg: %VAR%) as you file name and then you will have to give the name of your file under variable substitution. Just check this link for more info,
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    In the case of receiver file adapaters, you have 5 options for file creation like,
    1.Create
    2.Append
    3. Add time stamp
    4.Add Counter
    5. Add Message ID
    You can choose any of these options or you can do it dynamically from you payload. Just check out this help link for more info,
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    Hope this helps

  • FTP Adapter -- synchronous read -- native format

    You would think an FTP connection would be simple. While I have done a bunch of "puts" without difficulty; I can't get a sync read to work AT ALL.
    What the heck is wrong with this mess anyway? This should be simple.
    Here is my WSDL .. what is wrong here?
    <wsdl:definitions
         name="getRawFile"
         targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/caseList/caseList/getRawFile"
         xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
         xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/ftp/caseList/caseList/getRawFile"
         xmlns:imp1="http://TargetNamespace.com/getRawFile"
         xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
        >
      <plt:partnerLinkType name="SynchRead_plt" >
        <plt:role name="SynchRead_role" >
          <plt:portType name="tns:SynchRead_ptt" />
        </plt:role>
      </plt:partnerLinkType>
        <wsdl:types>
          <schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/caseList/caseList/getRawFile"
                  xmlns="http://www.w3.org/2001/XMLSchema" >
            <import namespace="http://TargetNamespace.com/getRawFile" schemaLocation="xsd/F17QBA1_1.xsd" />
          <element name="empty"><complexType/></element>
          </schema>
        </wsdl:types>
        <wsdl:message name="Empty_msg">
            <wsdl:part name="Empty" element="tns:empty"/>
        </wsdl:message>
        <wsdl:message name="SynchRead_msg">
            <wsdl:part name="body" element="imp1:HUDCaseList"/>
        </wsdl:message>
        <wsdl:portType name="SynchRead_ptt">
            <wsdl:operation name="SynchRead">
                <wsdl:input message="tns:Empty_msg"/>
                <wsdl:output message="tns:SynchRead_msg"/>
            </wsdl:operation>
        </wsdl:portType>
    </wsdl:definitions>
    Here is my jca
    <adapter-config name="getRawFile" adapter="FTP Adapter" wsdlLocation="getRawFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
        <connection-factory location="eis/Ftp/FtpAdapterP011"/>
      <endpoint-interaction portType="SynchRead_ptt" operation="SynchRead">
        <interaction-spec className="oracle.tip.adapter.ftp.outbound.FTPReadInteractionSpec">
          <property name="DeleteFile" value="true"/>
          <property name="PhysicalDirectory" value="/opt/oracle/work/domains/dev_total_vr_domain/TOTAL"/>
          <property name="FileName" value="F17QBA1"/>
          <property name="FileType" value="ascii"/>
        </interaction-spec>
      </endpoint-interaction>
    </adapter-config>

    The answer is -- PhysicalDirectory refers to the directory where you get the file, not where it is stored.

  • Dreamweaver template update ftp files without synchronizing

    Today I change Template - Update all files based on the template - synchronize entire site.
    What I Like to do: change Template - Update all files based on the template
    and then in the same window button with ftp upload changed files!
    Why do I want this:
    The synchronization can take time on big sites, I have cms and billing system on my site with many files.
    The synchronization can take time on slow connection.
    When the time betwen two synchronization is to small Dreamweaver select all files (or many) for synchronization. I do not know if this is only my problem (maybe there is different time on my computer and the server?).
    Do we have solution for this today?
    Or can this be something to suggest for next version?
    Thanks for any suggestion

    Not sure if there is anything set up in DW yet, it does give a status window of what files were updated, you could possibly work backwards form that list (still a bit cumbersome). I also believe that if you change the template and upload it to your server, it will prompt you as to whether or not you'd like to "include dependant files", and (in theory) it will also upload the files linked associated with it... but that may need to be tested to see how well it works on a larger site.
    As a possible alternative, you could use "Server Side Includes" - which is a single file which contains a portion of your page (the top navigation, footer area, etc.), and any page that uses this element will automatically update when you upload just that one element. Here is a link which explains it better: http://www.smartwebby.com/web_site_design/server_side_includes.asp and there are several others on the web that offer more detailed explainations - one caveat is that the web server you use would need to be set up to accept SSI... most do, but something you'd need to look into beforehand...
    Hope that helps,
    Jesse

  • Dreamweaver FTP not synchronizing

    Hi
    I have found recently that my dreamweaver Ftp does not seem
    to be synchronising properly. At least thats what I think it is.
    For instance
    sometimes when I upload a page to make changes to a page
    already on the remote server, the changes do not show. However If I
    delete the page on the server and then upload the page with changes
    it shows the changes. This happens now and again. does anyone know
    why this maybe and how I couls remedy it?
    thanks
    boo27

    Hi,
    in addition to "bemdesign": My various opinions expressed to this much discussed subject, show that I prefer Filezilla. For each task in whatever area we search for the experts, we do not charge a "jack of all trades".
    So I prefer to upload my files and sometimes for the opposite way, for a necessary download from my server, with a program which works "outside" of the DW.
    Therefore I am using filezilla, it simply looks easier for me to keep track of all operations precisely and generate or reflect easily the desired tree structure. Here is the link to get it and where you can read informations about how it works:
    http://filezilla-project.org/ and
    http://wiki.filezilla-project.org/Tutorial#Using_the_site_manager
    Of course, you also need all the access data to reach your server.
    Hans-G.
    P.S.
    Here I'll quote a hint from Nancy O. for DW applications:
    Try toggling Passive and/or Secure FTP on/off.
    Your web host might have changed upload requirements to improve security.
    Another thing to check is your Anti-virus and Firewall settings. If they are too restrictive, DW may not have permission to connect to the remote server.

  • How to include wildcard in FTP adapter header variable?

    I have two partner links that use FTP adapters. The first one puts a file on the FTP server. It specifies a dynamic outbound file name based upon an input variable and the timestamp in the format "test_BATCHID_yyyyMMddHHmmss.csv" (e.g. test_1011_20050925153059.csv). This part works as expected.
    The second partner link is supposed to pick up a file on the same FTP server. This inbound filename will be based upon the outbound filename and another timestamp in a format such as "originalfilename.yyyyMMddHHmmss.txt" (e.g. test_1011_20050925153059.csv.20050926091541.txt). I have created a Transform action with a mapping to convert the outbound filename and assign it to the inbound header variable. It concatenates the outbound filename and ".*.txt" within the mapping. The inbound header shows up as test_1011_20050925153059.csv.*.txt in the audit, but the process hangs at the receive activity and the file never gets retrieved. Perhaps the asterisk is being interpreted literally?
    Does anyone know how to specify a wildcard character in an xpath expression in a way that it will be interpreted as a true wildcard? Or is there another way to tell the inbound adapter to look for a dynamic filename using wildcards?

    BPEL patch 1 supports performing a synchronous read using a BPEL invoke activity. The following forum post shows how to configure a read adapter manually.
    Re: Help! Three questions about FileAdapater.
    The subsequent patches of JDeveloper allow such an apdater to be configured automatically.
    ps: This adapter can be used to read a single file only i.e. you cannot use a wild character.

  • Synchronous Get File

    Hello,
    My requirement is to get the file from the FTP server and place it on a local server. BPEL process needs to be scheduled to run every night.
    I have created a one way bpel process with Sync Get File from the FTP adapter and write the file to the local server. While defining the Sync Get file delete files after successful retrieval is greyed out. When I execute the process, I am getting the below error.
    Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'SynchRead' failed due to: Error deleting file from FTP Server. Error deleting file from FTP Server. Unable to delete file from server. Please ensure whether the remote file has delete permission. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.
    Thanks.

    oh ok, in that case you have only getfile option , but in this you can not schedule a process it will become polling process, whenever file comes to your ftp location it will read the file and move to your local server.
    once it is moved to your local server you can have another bpel process which you can shedule to read the file. You can use ora:readFile function to read data synchronously
    -Umesh

  • FTP to SFTP.

    Hi,
    My application is using ftp to connect to the server. but now it is going to change to sftp. For that I am not able to get what are the things in need to change in my ftp program to make it support for sftp. The following is the ftpbean class and the methods of the class are used by other classes. sftp is already installed and the environment is ready now. but I am not able to proceed where to modify the java..Please help.
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
    import java.io.*;
    import java.net.Socket;
    import java.net.ServerSocket;
    import java.util.StringTokenizer;
    import java.util.Vector;
    public class FtpBean
    private String server = ""; // server name
    private String user = ""; // user name
    private String replyMessage = ""; // reply message from server
    private String reply = ""; // reply to the command
    private Socket socket; // Socket for FTP connection
    private BufferedReader in; // Input for FTP connection
    private PrintWriter out; // Output for FTP connection
    private int port = 21; // FTP port number, default 21
    private boolean passive = true; // Passive mode transfer, default true
    // Needed for thread safety
    private int[] lock = new int[0]; // For synchronized locking
    private boolean acquired = false; // Count the number of acquire
    private Vector threadSpool = new Vector(); // Spool for the waiting threads
    // Needed for some Visual tools
    private PropertyChangeSupport pcs; // PropertyChangeSupport for visual tools
    final private boolean DEBUG = false; // True to turn on debug mode
    * Constructor
    public FtpBean()
    pcs = new PropertyChangeSupport(this);
    * Add PropertyChangeListener
    public void addPropertyChangeListener(PropertyChangeListener listener)
    pcs.addPropertyChangeListener(listener);
    * removePropertyChangeListener
    public void removePropertyChangeListener(PropertyChangeListener listener)
    pcs.removePropertyChangeListener(listener);
    * Connect to FTP server and login.
    * @param server Name of server
    * @param user User name for login
    * @param password Password for login
    * @exception FtpException if a ftp error occur (eg. Login fail in this case).
    * @exception IOException if an I/O error occur
    public void ftpConnect(String server, String user, String password)
    throws IOException, FtpException
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Connecting to server " + server);
    acquire(); // Acquire the object
    // Set server name & user name
    setServerName(server);
    setUserName(user);
    try {
    // Create socket, get input & output stream
    socket = new Socket(server, port);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = new PrintWriter(socket.getOutputStream(), true);
    // Read reply code when get connected
    getRespond();
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Connected");
    // Login
    ftpLogin(user, password); // check if login success
    finally {
    release(); // Release the object
    * Close FTP connection.
    * @exception IOException if an I/O error occur
    * @exception FtpException if a ftp error occur
    public void close()
    throws IOException, FtpException
    if (out == null)
    return;
    acquire(); // Acquire the object
    try {
    ftpCommand("QUIT");
    if (!reply.startsWith("221"))
    throw new FtpException(reply);
    closeSocket();
    // Set server name & user name to ""
    setServerName("");
    setUserName("");
    finally {
    release(); // Release the object
    * Delete a file at the FTP server.
    * @param filename Name of the file to be deleted.
    * @exception FtpException if a ftp error occur. (eg. no such file in this case)
    * @exception IOException if an I/O error occur.
    public void fileDelete(String fileName)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("DELE " + fileName);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Rename a file at the FTP server.
    * @param oldFileName The name of the file to be renamed
    * @param newFileName The new name of the file
    * @exception FtpException if a ftp error occur. (eg. A file named the new file name already in this case.)
    * @exception IOException if an I/O error occur.
    public void fileRename(String oldFileName, String newFileName)
    throws IOException, FtpException
    acquire(); // Acquire this object
    try {
    ftpCommand("RNFR " + oldFileName);
    if (!reply.startsWith("350"))
    throw new FtpException(reply);
    ftpCommand("RNTO " + newFileName);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    private boolean isSameSystem()
    throws IOException, FtpException
    String sysType = getSystemType();
    return (sysType.toUpperCase().indexOf("WINDOWS") < 0);
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getAsciiFile(String ftpFile, String localFile)
    throws IOException, FtpException
    getAsciiFile(ftpFile, localFile, null);
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getAsciiFile(String ftpFile, String localFile, FtpObserver observer)
    throws IOException, FtpException
    if (isSameSystem()) {
    getBinaryFile(ftpFile, localFile, observer);
    return;
    acquire(); // Acquire the object
    setTransferType(true); // Set transfer type to ascii
    Socket sock = null;
    try {
    sock = getDataSocket("RETR " + ftpFile, 0);
    // Read bytes from server and write to file.
    BufferedReader din = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    PrintWriter dout = new PrintWriter(new BufferedWriter(new FileWriter(localFile)));
    char[] cbuf = new char[2048];
    int n;
    while ((n = din.read(cbuf, 0, cbuf.length)) != -1) {
    if (skipLineSepFilter())
    dout.write(cbuf, 0, n);
    else {
    // filter DOS line-sep to UNIX line-sep
    String data = filterLineSep(cbuf, n);
    dout.write(data, 0, data.length());
    if (observer != null)
    observer.byteRead(n);
    String data = null;
    while ((data = din.readLine()) != null) {
    dout.println(data);
    if (observer != null)
    observer.byteRead(data.length() + 1);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    public void putAsciiFile(String localFile, String remoteFile, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(true);
    // if file is to be transferred to MF, without slash, exec quote site cmd
    if (!remoteFile.startsWith("/"))
    setQuoteSite();
    Socket sock = null;
    try {
    // Read bytes from local file and write to a server.
    BufferedReader din = new BufferedReader(new FileReader(localFile));
    sock = getDataSocket("STOR " + remoteFile, 0);
    PrintWriter dout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())));
    String data = null;
    while ((data = din.readLine()) != null) {
    //dout.println(data);
    dout.write(data);
    dout.write("\r\n");
    if (observer != null)
    observer.byteWrite(data.length() + 1);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (DEBUG) // Debug message
    System.out.println("FtpBean: Reply is " + reply);
    putAsciiFile()
    Changed manner of checking if transfer is complete by checking the
    string Transfer Complete in the reply.
    For UNIX: Reply is 226 Transfer complete.
    For MF: Reply is 250 Transfer completed successfully.
    //if (!reply.startsWith("226"))
    int m = 0;
    if ((m = reply.indexOf("Transfer complete")) < 0)
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    public void getBinaryFile(String ftpFile, String localFile)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, 0, null);
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @param restart Restarting point
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    public void getBinaryFile(String ftpFile, String localFile, long restart)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, restart, null);
    * Read file from ftp server and write to a file in local hard disk.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * <br>Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile Name of local file to be write, can be in full path.
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getBinaryFile(String ftpFile, String localFile, FtpObserver observer)
    throws IOException, FtpException
    getBinaryFile(ftpFile, localFile, 0, observer);
    * Read from a ftp file and restart at a specific point.
    * This method is much faster than those method which return a byte array<br>
    * if the network is fast enough.<br>
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param ftpFile Name of file to be get from the ftp server, can be in full path.
    * @param localFile File name of local file
    * @param restart Restarting point, ignored if equal or less than zero.
    * @param observer The FtpObserver which monitor this downloading progress
    * @exception FtpException if a ftp error occur. (eg. No such file in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpObserver
    public void getBinaryFile(String ftpFile, String localFile, long restart, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(false); // Set transfer type to binary
    Socket sock = null;
    try {
    sock = getDataSocket("RETR " + ftpFile, restart);
    // Read bytes from server and write to file.
    BufferedInputStream din = new BufferedInputStream(sock.getInputStream());
    RandomAccessFile dout = new RandomAccessFile(localFile, "rw");
    dout.seek(restart);
    byte[] data = new byte[1024];
    int n;
    while ((n = din.read(data)) != -1) {
    dout.write(data, 0, n);
    if (observer != null)
    observer.byteRead(n);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Read a file from local hard disk and write to the server.
    * <br>Remark:<br>
    * <br>Cannot be used in unsigned applet.
    * @param local_file Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, 0, null);
    * Read a file from local hard disk and write to the server.
    * <br>Remark:<br>
    * <br>Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param observer The FtpObserver which monitor this uploading progress.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, FtpObserver observer)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, 0, observer);
    * Read a file from local hard disk and write to the server with restarting point.
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param restart The restarting point, ignored if less than or greater than zero.
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, long restart)
    throws IOException, FtpException
    putBinaryFile(localFile, remoteFile, restart, null);
    * Read a file from local hard disk and write to the server with restarting point.
    * Remark:<br>
    * Cannot be used in unsigned applet.
    * @param localFile Name of local file, can be in full path.
    * @param remoteFile Name of file in the ftp server, can be in full path.
    * @param observer The FtpObserver which monitor this uploading progress
    * @exception FtpException if a ftp error occur. (eg. permission denied)
    * @exception IOException if an I/O error occur.
    public void putBinaryFile(String localFile, String remoteFile, long restart, FtpObserver observer)
    throws IOException, FtpException
    acquire(); // Acquire the object
    setTransferType(false);
    Socket sock = null;
    try {
    RandomAccessFile din = new RandomAccessFile(localFile, "r");
    sock = getDataSocket("STOR " + remoteFile, restart);
    if (restart > 0)
    din.seek(restart);
    DataOutputStream dout = new DataOutputStream(sock.getOutputStream());
    byte[] data = new byte[1024];
    int n;
    while ((n = din.read(data)) != -1) {
    dout.write(data, 0, n);
    if (observer != null)
    observer.byteWrite(n);
    din.close();
    dout.close();
    sock.close();
    getRespond();
    putBinaryFile()
    Changed manner of checking if transfer is complete by checking the
    string Transfer Complete in the reply.
    For UNIX: Reply is 226 Transfer complete.
    For MF: Reply is 250 Transfer completed successfully.
    //if (!reply.startsWith("226"))
    int m = 0;
    if ((m = reply.indexOf("Transfer complete")) < 0)
    throw new FtpException(reply); // transfer incomplete
    finally {
    release(); // Release the object
    * Get current directory name.
    * @return The name of the current directory.
    * @exception FtpException if a ftp error occur.
    * @exception IOException if an I/O error occur.
    public String getDirectory()
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("PWD");
    if (!reply.startsWith("257"))
    throw new FtpException(reply);
    int first = reply.indexOf("\"");
    int last = reply.lastIndexOf("\"");
    return reply.substring(first + 1, last);
    finally {
    release(); // Release the object
    * Change directory.
    * @param directory Name of directory
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void setDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("CWD " + directory);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Change to parent directory.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void toParentDirectory()
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("CDUP");
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Get the content of current directory
    * @return A FtpListResult object, return null if it is not connected.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    * @see FtpListResult
    public FtpListResult getDirectoryContent()
    throws IOException, FtpException
    String strList = getDirectoryContentAsString();
    FtpListResult ftpList = new FtpListResult();
    ftpList.parseList(strList, getSystemType());
    return ftpList;
    * Get the content of current directory.
    * @return A list of directories, files and links in the current directory.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public String getDirectoryContentAsString()
    throws IOException, FtpException
    StringBuffer list = new StringBuffer(""); // Directory list
    Socket sock = null; // Socket to establish data connection
    acquire(); // Acquire the object
    try {
    // get DataSocket for the LIST command.
    // As no restarting point, send 0.
    sock = getDataSocket("LIST", 0);
    BufferedReader din = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    // Read bytes from server.
    String line;
    while ((line = din.readLine()) != null)
    list.append(line).append("\n");
    din.close();
    sock.close();
    getRespond();
    if (!reply.startsWith("226"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    return list.toString();
    * Make a directory in the server.
    * @param directory The name of directory to be made.
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void makeDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("MKD " + directory);
    if (!reply.startsWith("257"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Remove a directory in the server
    * @param directory The name of directory to be removed
    * @exception FtpException if a ftp error occur. (eg. permission denied in this case)
    * @exception IOException if an I/O error occur.
    public void removeDirectory(String directory)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("RMD " + directory);
    if (!reply.startsWith("250"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    * Execute a command using ftp.
    * e.g. chmod 700 file
    * @param exec The command to execute.
    * @exception FtpException if a ftp error occur. (eg. command not understood)
    * @exception IOException if an I/O error occur.
    public void execute(String exec)
    throws IOException, FtpException
    acquire(); // Acquire the object
    try {
    ftpCommand("SITE " + exec);
    if (!reply.startsWith("200"))
    throw new FtpException(reply);
    finally {
    release(); // Release the object
    private String _ftpSystemType = null;
    * Get the type of operating system of the server.
    * Return null if it is not currently connected to any ftp server.
    * @return Name of the operating system.
    public String getSystemType()
    throws IOException, FtpException
    if (_ftpSystemType != null)
    return _ftpSystemType;
    acquire(); // Acquire the object
    try {
    ftpCommand("SYST");
    if (!reply.startsWith("215"))
    throw new FtpException(reply);
    _ftpSystemType = reply.substring(4);
    return _ftpSystemType;
    finally {
    release(); // Release the object
    * Return the port number
    public int getPort()
    return port;
    * Set port number if the port number of ftp is not 21
    public void setPort(int port)
    acquire(); // Acquire the object
    pcs.firePropertyChange("port", new Integer(this.port), new Integer(port));
    this.port = port;
    release(); // Release the object
    * Return the server name. Return "" if it is not connected to any server.
    public String getServerName()
    return server;
    * Return the user name. Return "" if it is not connected to any server.
    public String getUserName()
    return user;
    * Get reply of the last command.
    * @return Reply of the last comomand<br>for example: 250 CWD command successful
    public String getReply()
    return reply;
    * Get reply message of the last command.
    * @return Reply message of the last command<br>for example:<br>
    * 250-Please read the file README<br>
    * 250-it was last modified on Wed Feb 10 21:51:00 1999 - 268 days ago
    public String getReplyMessage()
    return replyMessage;
    * Return true if it is using passive transfer mode.
    public boolean isPassiveModeTransfer()
    return passive;
    * Set passive transfer mode. Default is true.
    * @param passive Using passive transfer if true.
    public void setPassiveModeTransfer(boolean passive)
    acquire(); // Acquire the object
    pcs.firePropertyChange("passiveModeTransfer", new Boolean(this.passive), new Boolean(passive));
    this.passive = passive;
    if (DEBUG) // debug message
    System.out.println("FtpBean: Set passive transfer - " + passive);
    release(); // Release the object
    * Close the Socket, input and output stream
    private void closeSocket()
    throws IOException
    _ftpSystemType = null;
    in.close();
    out.close();
    socket.close();
    in = null;
    out = null;
    socket = null;
    * Read the respond message from the server's inputstream and assign to replyMessage
    private void getRespond()
    throws IOException
    String line = "";
    String replyMessage = "";
    while (true) {
    // Problem.....
    line = in.readLine();
    if (!checkReply(line))
    break;
    replyMessage = replyMessage.concat(line).concat("\n");
    setReplyMessage(replyMessage);
    setReply(line);
    * Login to server, using FTP commands "USER" and "PASS"
    * @param user FTP username
    * @param password FTP Password
    private void ftpLogin(String user, String password)
    throws IOException, FtpException
    ftpCommand("USER " + user); // send user name
    ftpCommand("PASS " + password); // send password
    if (!reply.startsWith("230")) {
    closeSocket();
    throw new FtpException(reply);
    * Send FTP command to the server.
    * @param command The command to be sent
    private void ftpCommand(String command)
    throws IOException
    if (DEBUG) {  // Debug message
    if (command.startsWith("PASS"))
    System.out.println("FtpBean: Send password");
    else
    System.out.println("FtpBean: Send command \"" + command + "\"");
    out.print(command + "\r\n"); // Send command
    out.flush();
    getRespond();
    * Establish data connection for transfer
    private Socket getDataSocket(String command, long restart)
    throws IOException, FtpException
    Socket sock = null;
    ServerSocket ssock = null;
    // Establish data conncetion using passive or active mode.
    if (passive)
    sock = getPassiveDataSocket();
    else
    ssock = getActiveDataSocket();
    // Send the restart command if it is greater than zero
    if (restart > 0) {
    ftpCommand("REST " + restart);
    if (!reply.startsWith("350"))
    throw new FtpException(reply);
    // Send commands like LIST, RETR and STOR
    // These commands will return 125 or 150 when success.
    ftpCommand(command);
    if (!(reply.startsWith("125") || reply.startsWith("150")))
    throw new FtpException(reply); // command file
    // Get Socket object for active mode.
    if (!passive)
    sock = ssock.accept();
    return sock;
    * Establish data connection in passive mode using "PASV" command
    * Change the server to passive mode.
    * by the command "PASV", it will return its address
    * and port number that it will listen to.
    * Create a Socket object to that address and port number.
    * Then return the Socket object.
    private Socket getPassiveDataSocket()
    throws IOException, FtpException
    ftpCommand("PASV");
    if (!reply.startsWith("227"))
    throw new FtpException(reply);
    // array that holds the outputed address and port number.
    String[] address = new String[6];
    // put the 'reply' to the array 'address'
    StringTokenizer t = new StringTokenizer(reply, ",");
    for (int i = 0; i < 6; i++)
    address[i] = t.nextToken();
    // Get port number.
    // Erase all other characters except the port number
    // which is at the beginning of the string
    String lastPort = "";
    int num = 3;
    if (address[5].length() < 3)
    num = address[5].length();
    for (int i = 0; i < num; i++) {
    if (Character.isDigit(address[5].charAt(i)))
    lastPort = lastPort + address[5].charAt(i);
    // assign last port number to address[5]
    address[5] = lastPort;
    // Get the port number
    // Left shift the first number by 8
    int newPort = (Integer.parseInt(address[4]) << 8) + Integer.parseInt(address[5]);
    // Create a new socket object
    Socket sock = new Socket(getServerName(), newPort);
    return sock;
    * Establish data connection in active mode using "PORT" command.
    * It create a ServerSocket object to listen for a port number in local machine.
    * Use port command to tell the server which port the local machine is listenning.
    * Return the ServerSocket object.
    private ServerSocket getActiveDataSocket()
    throws IOException, FtpException
    int[] portNumbers = new int[6]; // Array that contains
    // Get ip address of local machine. ip address and port numbers
    String localAddr = socket.getLocalAddress().getHostAddress();
    // Assign the ip address of local machine to the array.
    StringTokenizer st = new StringTokenizer(localAddr, ".");
    for (int i = 0; i < 4; i++)
    portNumbers[i] = Integer.parseInt(st.nextToken());
    ServerSocket ssocket = new ServerSocket(0); // ServerSocket to listen to a random free port number
    int localPort = ssocket.getLocalPort(); // The port number it is listenning to
    // Assign port numbers the array
    portNumbers[4] = ((localPort & 0xff00) >> 8);
    portNumbers[5] = (localPort & 0x00ff);
    // Send "PORT" command to s

    You would have to pick a library to do that. There are several commercial libraries. Out of the open source ones, the most mature one seems to be Ganymed SSH-2.

  • File attachment transfer to FTP

    Hi All,
    We are on PT 8.45 & CRM 8.80. And mobile agent is being used for the FieldService.
    Currently we are facing issue with the attachment while synchronizing mobile agent with online application. We are using PutAttachment function for transferring the file to the file server.
    Below is the scenario:
    Technician attaches the invoice, as a html file, to the ServiceOrder component on mobile.
    He synchronize the ServiceOrder back to online application, and the invoice html file is uploaded to file server.
    But, if two technicians synchronize the mobile agent at the same time then the invoice files gets mixedup.
    For example:- Technician A tries to sync ServiceOrder 1, with invoice file name SO1.html. At the same time technician B tries to sync ServiceOrder 2, with invoice file name SO2.html.
    Now what happens is the content of file SO1.html is replaced by SO2.html on file server, although the file name & link to FTP file doesn't change.
    My doubt is that, for every file transferred from the WebServer/syncServer to AppServer is created as PSSYNC0.blob(as seen in the AppServer log). And before this blob file is transferred to FileServer it is replaced by the next file in the queue.
    So my question is can we change the name of PSSYNC0.blob to some unique name for every file? Or do we have any other work around for this?
    The AppServer trace follows:-----
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment:starting, ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/FM17258102tmp.html, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSFTP\CRM0120_33018\7151\FM17258102tmp.html
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment:filtered name = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/FM17258102tmp.html
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment:szTempDir = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6052_1351025679.txt exists.
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment: log file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6052_1351025679.log
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment:starting, ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/DM17250221tmp.html, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSFTP\CRM0120_33018\10824\DM17250221tmp.html
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment:filtered name = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/DM17250221tmp.html
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment:szTempDir = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6152_1351025679.txt exists.
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment: log file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6152_1351025679.log
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment: About to read log file C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6052_1351025679.log
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecuteGetAttachment: Log file indicates result = 9
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment: starting
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment: URL catalog entry: ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment: szFullFtpUrl = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/FM17258102FM17258102tmp.html
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment: pszLocalFilename = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp/PSSYNC0.blob
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment: Local file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSSYNC0.blob
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment:starting, ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/FM17258102FM17258102tmp.html, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSSYNC0.blob
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment:filtered name = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/FM17258102FM17258102tmp.html
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment:szTempDir = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6052_1351025679.txt exists.
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6052_1351025679.txt exists, looking for next available #.
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6052_1351025679.txt exists.
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: log file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6052_1351025679.log
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment: About to read log file C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6152_1351025679.log
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecuteGetAttachment: Log file indicates result = 9
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment: starting
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment: URL catalog entry: ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment: szFullFtpUrl = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/DM17250221DM17250221tmp.html
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment: pszLocalFilename = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp/PSSYNC0.blob
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment: Local file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSSYNC0.blob
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment:starting, ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/DM17250221DM17250221tmp.html, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\PSSYNC0.blob
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment:filtered name = ftp://biz\SVC-FTP-SASPROD:FdAcs9KM@EUWS0117/crm/RF_ATTACHMENTS/DM17250221DM17250221tmp.html
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment:szTempDir = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6152_1351025679.txt exists.
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp30674_6152_1351025679.txt exists, looking for next available #.
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: Checking if C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6152_1351025679.txt exists.
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: log file = C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6152_1351025679.log
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: About to read log file C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6152_1351025679.log
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: About to read log file C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6052_1351025679.log
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: Log file indicates result = 0
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: Successful transfer, deleting ftp log files
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: Successful transfer, deleting ftp log files
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) ExecutePutAttachment: Deleted ftp log files: C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6152_1351025679.log, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6152_1351025679.txt
    PSAPPSRV.6152 (169) [10/23/12 22:54:39 COMPEGUE@EUWS0123 PSSession](0) EvalPutAttachment:finishing, ret = 0
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) ExecutePutAttachment: Deleted ftp log files: C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6052_1351025679.log, C:\DOCUME~1\SVC-TU~1\LOCALS~1\Temp\ftp12880_6052_1351025679.txt
    PSAPPSRV.6052 (751) [10/23/12 22:54:39 DOGANUGU@EUWS0123 PSSession](0) EvalPutAttachment:finishing, ret = 0
    Regards,
    Nav

    there is no WebService running on PI server, this will always be running on the sending system?
    We do not have a WS specificallly running on the PI server.....we just create the WSDL file and send it to the source system.
    If you want to store the PI web-services in a central repository, then you can make use of the Services registry which is available from SAP PI7.1
    the WSDL file generated by PI will be used by the sending system to create an web service?
    The sending system will treat this WSDL file as a web-service. The WSDL file that you generate in PI has the message structure and also a URL (at the end of the WSDL) file. Using these two details the sender systems knows what should be the message structure and to which address (URL) should the message be sent.
    Regards,
    Abhishek.

  • OSB error while generating business service for FTP adapter Sync Get File

    Hi All
    I am trying to generate a business service from SOA Suite JCA FTP adapter Sync Get File, but i am getting this exception for no reasons (Rest operations list file, get file and put file are working)
    Invalid JCA transport endpoint configuration, exception: java.lang.NullPointerException     Unknown ALSB Conflict.
    Is this a bug in eclipse, can any body help me. Thanks
    Sorry Forgot to mention eclipse version...
    Eclipse Platform
    Version: 3.6.2
    Build id: M20110210-1200

    Ok,
    bcoz of this issue, i had to code the entire interface in OSB console. It runs fine in OSB console (i was able to test it successfully).
    Is this a bug in eclipse or only i am facing this issue? Has anybody tried to create a business service from JCA FTP Get Synchronous jca file?
    <adapter-config name="FTPReadMOMFileOnRMSDB" adapter="FTP Adapter"
         wsdlLocation="../wsdl/FTPReadMOMFileOnRMSDB.wsdl"
         xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
         <connection-factory location="eis/ftp/RMSDBFtpAdapter" />
         <endpoint-interaction portType="SynchRead_ptt"
              operation="SynchRead">
              <interaction-spec
                   className="oracle.tip.adapter.ftp.outbound.FTPReadInteractionSpec">
                   <property name="DeleteFile" value="true" />
                   <property name="PhysicalDirectory" value="/MOMFiles/output" />
                   <property name="FileName" value="*" />
                   <property name="FileType" value="binary" />
              </interaction-spec>
         </endpoint-interaction>
    </adapter-config>
    One more doubt? The PhysicalArchiveDirectory path can be on the FTP server something like: /MOMFiles/archive. Or do i have to use the Put operation to move it to /MOMFiles/archive directory. Currently OSB console and eclipse do not accept FTP path for this parameter and want me to specify a local directory on server. Thanks

  • Request/Reply in FTP Adapter

    Hi,
    I have to implement the Req/Reply paradigm with an FTP Adapter and DB Adapter. A file is created which is read by FTP adapter and a synchronous reply is required in the same file e.g the file will contain XML for customer number; in response in requires Customer Name is the same file.
    I am using Procedure in iStudio but how can I direct the reply to the same file with the same name with which it is originally created in the upload directory.
    In a nut shell, what is the best way to model req/reply in File and DB Adapter.
    Thanks
    M jahangir

    Hi All
    The request-reply pattern is working with queues and topics, but not with topic and queue. The issue is with this:
    <adapter-config name="RemoteOSBJMSService" adapter="JMS Adapter"
    wsdlLocation="RemoteOSBJMSService.wsdl"
    xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/JMS/RequestReplyTopic"
    UIJmsProvider="WLSJMS" UiOperationMode="Asynchronous"
    UIConnectionName="chdsez147855d"/>
    <endpoint-activation portType="Reply_ptt" operation="Reply"
    UITransmissionPrimitive="Request-response">
    <activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
    <property name="PayloadType" value="TextMessage"/>
    <property name="UseMessageListener" value="false"/>
    <property name="DestinationName" value="jms.soa.local.response.q"/>
    </activation-spec>
    </endpoint-activation>
    <endpoint-interaction portType="Request_ptt" operation="Request"
    UITransmissionPrimitive="Request-response">
    <interaction-spec className="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec">
    <property name="TimeToLive" value="0"/>
    <property name="PayloadType" value="TextMessage"/>
    <property name="DeliveryMode" value="Persistent"/>
    <property name="DestinationName" value="jms.soa.local.request.topic"/>
    </interaction-spec>
    </endpoint-interaction>
    </adapter-config>
    The connection factory "eis/JMS/RequestReplyTopic" can either hold isTopic as false or true. If i set it to false, it doesnt even let me enqueue and if i set it to true. The reply doesnt arrive.
    Please help!

  • Interface ABAP Proxy - File - Synchronous - (Is it possible???)

    Hi Experts,
    I want execute ABAP Proxy which will create File in FTP. On final, i need return "OK" information to the ABAP Proxy.
    Is it possible? ABAP Proxy <-> File Synchronous? Without BPM and Custom Module Adapter. Just using RequestResponseBean???
    Tks in advance.

    Hi Raj,
    Tks. I implemented the Acknowledgements Request and changed the ABAP Proxy to Async. But the Ack returns to the ECC with the error and is not saved in the Message. The error follows below:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!--  Update Acknowledgment Status of Request Message
      -->
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="PERSIST">REQUEST_MESSAGE_NOT_FOUND</SAP:Code>
      <SAP:P1>4EE24DEB4EA60650E10080000A09071E</SAP:P1>
      <SAP:P2>CENTRAL</SAP:P2>
      <SAP:P3></SAP:P3>
      <SAP:P4></SAP:P4>
      <SAP:AdditionalText></SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace=""></SAP:ApplicationFaultMessage>
      <SAP:Stack>Requisição mensagem 4EE24DEB4EA60650E10080000A09071E pipeline CENTRAL versão desconhecida</SAP:Stack>
      <SAP:Retry>N</SAP:Retry>
      </SAP:Error>
    Any Idea about this error?
    Tks in advance.

Maybe you are looking for

  • Report Builder

    Help Using the 'Groupe Left' style. I simply want a report which will give me a count for each 'group field' on seperate concurrent lines. The problem is that for each record a blank line is appearing (used the visible no option), so instead a report

  • Problem to upload the data into internal table record length more than 6000

    Hi all         I stuck with this problem from past 3 days. I have to upload the data from excel sheet. iam making it tab delimited and trying to upload from gui_upload. but in the structure of file, we have, one field of 4000 characters, and other fi

  • Excel file upload using LSMW

    HI all, Is it possible to upload excel file using LSMW method? If it is? Plz tell me the process ASAP. Thanks & regards, Srini

  • Integrate p6SPY with Sun Java System Application Server 7 ...?

    Dear PALs, Let me know how can I Integrate p6SPY (w3.p6spy.com) with "Sun Java System Application Server 7 2004Q2" on Windows ? When I try to follow the steps given at http://www.p6spy.com/documentation/install.htm#unspec ,my server throws INFO ( 182

  • MacBook Pro will not shut down properly

    MacBook Pro will not shut down properly. Gray screen appears with spinning gear but will not shut down completely.