Write to IFS

Hi,
We have a requirement to transfer information to and from an IBM ISeries machine. At present, out current process receives XML files into a WatchFolder via FTP. A Programme running on the ISeries box is running on a scheduled basis and picks files up from the IFS and copies them via FTP to the LIveCycle ES Server)
I am looking at the easiest way to send XML Files back to the IFS but the Standard Foundation utilities (i.e. Write XML) do not allow files to be written to a different file server.
Is there any other standard way of doing thi, without writing WebServices or FTP Jobs to move files. I just want to save files from the process, directly to a different server to LiveCycle (and be able to specify the required authentication to access the UNC path to the location)
Thanks
James

Hi Howard, thanks for the reply.
I have had an op[portunity to look into this further and I have made some progress.
I have done the following:
1. In workbench, view the components
2. Expand the com.adobe.livecycle.FTP node
3. Expand Service Descriptors
4. Right Click on FTP and Activate Service. This allows you to create a separate version of the FTP Service and configure the hostname, port and login details. You can also just edit the settings for the default FTP servive.
4. Create a new Category and Process called FTP IFS
5. Drag a putFile component from the FTP IFS Service (N.B need to set the FTP component configured to appear in this category before it is available. You just need to add a dummy process to create a category)
6. Configure the proerties of this putFile in the FTPIFS process with generic input / output variables
7. Create a separate process 'TestPutFile' that invokes the FTP IFS process as a service.
8. set the file name, local file path etc as the input variables to invoke the FTP IFS service.
The above works, as it shows the TestPutFile as complete in the adminui but the file is not actually copied. The log indicates is 'Error copying the file'.
I'm going to test this between two windows servers next to see if this is an IFS specific issue

Similar Messages

  • IFS & Workflow Example

    Is anyone using iFS Agent's to call the Oracle Workflow API?
    We would like to write an iFS agent to initiate a notification
    workflow (through the Oracle API). Say when the status
    attribute of a custom document changes.
    Is this the best way to go or is Workflow a bit of overkill to
    sending mail? We are having issues with the IfsTransport iFS
    API and thought Workflow would be an alternative for our CMS
    requirements.
    Any suggestions of how to get started would be appreciated. An
    example would be excellent!
    Thanks,
    Susan

    Susan,
    If the type of workflow you need is as straight forward as you
    describe Oracle Workflow is probably a bit of an overkill. I
    would write an agent that initiate a notification when the
    attributes changes if that's all the functionality you require.
    We have written an agent to notify users when documents are
    modified under certain circumstances.
    Hooking up to Oracle Workflow is certainly possible but will
    probably take longer and for straight forward things is not
    worth the effort at this stage.
    Bernard

  • Nfs mount point does not allow file creations via java.io.File

    Folks,
    I have mounted an nfs drive to iFS on a Solaris server:
    mount -F nfs nfs://server:port/ifsfolder /unixfolder
    I can mkdir and touch files no problem. They appear in iFS as I'd expect. However if I write to the nfs mount via a JVM using java.io.File encounter the following problems:
    Only directories are created ? unless I include the user that started the JVM in the oinstall unix group with the oracle user because it's the oracle user that writes to iFS not the user that creating the files!
    I'm trying to create several files in a single directory via java.io.File BUT only the first file is created. I've tried putting waits in the code to see if it a timing issue but this doesn't appear to be. Writing via java.io.File to either a native directory of a native nfs mountpoint works OK. ie. Junit test against native file system works but not against an iFS mount point. Curiously the same unit tests running on PC with a windows driving mapping to iFS work OK !! so why not via a unix NFS mapping ?
    many thanks in advance.
    C

    Hi Diep,
    have done as requested via Oracle TAR #3308936.995. As it happens the problem is resolved. The resolution has been not to create the file via java.io.File.createNewFile(); before adding content via an outputStream. if the File creation is left until the content is added as shown below the problem is resolved.
    Another quick question is link creation via 'ln -fs' and 'ln -f' supported against and nfs mount point to iFS ? (at Operating System level, rather than adding a folder path relationship via the Java API).
    many thanks in advance.
    public void createFile(String p_absolutePath, InputStream p_inputStream) throws Exception
    File file = null;
    file = new File(p_absolutePath);
    // Oracle TAR Number: 3308936.995
    // Uncomment line below to cause failure java.io.IOException: Operation not supported on transport endpoint
    // at java.io.UnixFileSystem.createFileExclusively(Native Method)
    // at java.io.File.createNewFile(File.java:828)
    // at com.unisys.ors.filesystemdata.OracleTARTest.createFile(OracleTARTest.java:43)
    // at com.unisys.ors.filesystemdata.OracleTARTest.main(OracleTARTest.java:79)
    //file.createNewFile();
    FileOutputStream fos = new FileOutputStream(file);
    byte[] buffer = new byte[1024];
    int noOfBytesRead = 0;
    while ((noOfBytesRead = p_inputStream.read(buffer, 0, buffer.length)) != -1)
    fos.write(buffer, 0, noOfBytesRead);
    p_inputStream.close();
    fos.flush();
    fos.close();
    }

  • Advance Chart with BAR_VERT_STACK

    Hi, I tried to create a chart some dificult for me.
    This is my chart that is generate with rtf.
    !http://img98.imageshack.us/img98/986/chartr.png!
    And this is my code chart.
    chart:
    <Graph seriesEffect="SE_AUTO_GRADIENT" graphType="BAR_VERT_STACK">
    <LegendArea visible="true" />
    <SeriesItems>
    <Series id="0" markerType="MT_BAR" color="#ff0000"/>
    <Series id="1" markerType="MT_BAR" color="#99ccff"/>
    </SeriesItems>
    <LocalGridData colCount="{count(xdoxslt:group(current-group(), 'Proceso'))}" rowCount="2">
    <RowLabels><Label>A</Label><Label>B</Label></RowLabels>
    <ColLabels><xsl:for-each-group select="current-group()" group-by="Proceso" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:sort select="current-group()/Proceso" />
    <Label>
    <xsl:value-of select="current-group()/Proceso"/>
    </Label>
    </xsl:for-each-group>
    </ColLabels>
    <DataValues>
    <RowData>
    <xsl:for-each-group name="Var1" select="current-group()" group-by="Proceso" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:sort select="current-group()/Proceso" />
    <Cell>
    <xsl:value-of select="sum(current-group()/Valor_proceso)" />
    </Cell>
    </xsl:for-each-group>
    </RowData>
    <RowData>
    <xsl:for-each-group select="current-group()" group-by="Proceso" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:sort select="current-group()/Proceso" />
    <Cell>
    <xsl:value-of select="sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso)" />
    </Cell>
    </xsl:for-each-group>
    </RowData>
    </DataValues>
    </LocalGridData>
    </Graph>
    Well.
    If you read I substract two values into chart: <xsl:value-of select="sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso)" />
    When the result is positive the bar is correct, but when the result is negative the bar is incorrect because 'B' Value is under zero, I know it is normal but I don´t want this.
    This Image generate with MsPaint is result correct for all bars
    !http://img339.imageshack.us/img339/8408/chartwrong.png!
    Finally I think a idea but I don´t know it is possible.
    This is my posible solution:
    1.- For example the case is negative:
    Can I write conditional Ifs into xsl:value-of select and how?
    <?if:number(sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso))<0?>sum(Valor_proceso)+sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso)<?end if?>
    <?if:number(sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso))>0?>sum(current-group()/Valor_proceso_Aragon)-sum(Valor_proceso)<?end if?>
    <xsl:value-of select="<?if:number(sum(current-group()/30)-sum(40))<0?>sum(40)+sum(current-group()/30)-sum(40)<?end if?>" />
    The result is negative but thaks the conditionals now I have a positive result, for example 30(B) becasuse A=40.
    2.-And after I configurate chart for paint transparent bar by "B" and outline bar by B, black.
    Do you understand me? It is very dificult.
    Thanks.

    Carlos,
    I few weeks back you found a solution to a chart issue the yo were having. I am currently having the same issue. Can you share the code for your chart?
    Original Post
    Re: Advance Chart with BAR_VERT_STACK
    Posted: Aug 27, 2009 12:58 PM in response to: Benito Camelas
    Thank you
    Darren

  • How di I enter a sub-shell in a shell-function

    Hi Community,
    I'm searching for a quick and dirty solution to determine the folder size in a specific location. I tried to do this job in a for-loop but I ran into trouble with folders containing a space in it's name. So I changed the environment variable IFS (Internal Field Separator) to a new-line only instead the default whitespace. But after this I have to leave the shell to get rid of the user-defined IFS variable. Yes I could write the IFS variable in another (auxiliary) variable first to set it back to the default value after running the for-loop but this isn't a quick and dirty solution just for a short look to the folder size in a one line command.
    So the one liner looks like:
    IFS=$'\n' && for i in `ls`; do du -hs "$i"; done
    With the result that the IFS variable changed for this session to a single new line. So I tried to define a shell-function who switch to a sub-shell, set temporary the IFS variable, run the for-loop and exit the sub-shell:
    $ foldersize()
    > {
    > /bin/bash
    > IFS=$'\n'
    > for i in `ls`; do
    > du -hs $i;
    > done
    > exit
    > }
    But running the function it only switch to the sub-shell and nothing more happens:
    $ foldersize
    bash-3.2$
    So my question is how can I switch in a sub-shell using in a shell function?
    Thx & Bye Tom

    What is wrong with
    du -hs *
    if you want to call it 'foldersize' you can create an alias
    alias foldersize='du -hs *'
    If you really want to do your loop, you could try something like
    foldersize()
        ls -1 "$@" | while read file
        do
            du -hs "$file"
        done
    The 'while' loop is running in a sub-shell, so any shell variable changes made in the sub-shell will not be visible when you finish.  For that you could use the following notation:
    foldersize()
        while read file
        do
            do -hs "$file"
        done <  <(ls -1 "$@")
    Which will run the 'ls' in a sub-process and the 'while' loop will be run in the current shell invocation, and thus any shell variable changes made in the 'while' loop will be available when the loop finishes.
    If you just want to do it your way, and do not need any shell variable changes returned to the invoking shell you could use:
    foldersize()
        ( IFS=$'\n'
          for i in `ls "$@"`; do
            du -hs $i;
          done
    Where everything inside the (...) will be run in a sub-shell, and all variable changes will not show up in the invoking shell.
    Then again, you could have just put 'foldersize' in its own script file, made the file executable, and placed the script in $HOME/bin, then added $HOME/bin to your PATH environment variable, and when the script is invoked, it too will run in its own sub-shell.  Simple
    #!/usr/bin/env bash
    IFS=$'\n'
    for i in `ls "$@"`; do
        du -hs $i;
    done
    The "$@" syntax says if there are any function arguments substute them here and preserve any white space.  The syntax includes the "..." as well as the $@.  All 4 characters need to be specified as "$@" to get the white space preserving effect.  And if there are no function arguments, then it is as if the 'ls' command was specified without additional arguments, as you have used it.  This gives you the ability to get the folder size of the current directory as well as specify any directory you choose.
    NOTE:  All of the above should work as shown, most without the need for IFS
    Message was edited by: BobHarris

  • Read open file from IFS system

    Hi,
    The special programm create a new file on the IFS-volume and write some data in to this file. The program doesn`t closing this file (working some hours).
    Can I read data from this file immediatly (stream access)?
    System:
    Oracle 9.0.1 WinNT
    IFS 9.0.1
    regards,
    Anton

    Hi,
    First you need to upload the PDF file from FTP server. For that you can refer the following link
    Re: acess file on FTP server
    Once you upload the PDF file, you can convert the PDF to OTF and OTF to Text. But I am not sure on the function modules that will do this.

  • Fix many web access problems with IFS 9.0.1 on Solaris (and other OS's)...

    When the installation is done according to the documentation,
    web access does not work because the scripts that add entries to
    the jserv.properties file add duplicate references to
    wrapper.env and wrapper.classpath. Look at the jserv.properties
    file below and look at the remarked-out (#) lines of the
    duplicate references. For example, look at the references to the
    wrapper.env=LD_LIBRARY_PATH
    Oracle, please note this bug so the web access problems are
    minimized when the product is intstalled.
    Thank you,
    William T.
    # Apache JServ Configuration
    File #
    ################################ W A R N I N G
    # Unlike normal Java properties, JServ configurations have some
    important
    # extensions:
    # 1) commas are used as token separators
    # 2) multiple definitions of the same key are concatenated in
    a
    # comma separated list.
    # Execution parameters
    # The Java Virtual Machine interpreter.
    # Syntax: wrapper.bin=[filename] (String)
    # Note: specify a full path if the interpreter is not visible in
    your path.
    wrapper.bin=/d3/Apache/jdk/bin/java
    # Arguments passed to Java interpreter (optional)
    # Syntax: wrapper.bin.parameters=[parameters] (String)
    # Default: NONE
    wrapper.bin.parameters=-Xms64m
    wrapper.bin.parameters=-Xmx128m
    # Apache JServ entry point class (should not be changed)
    # Syntax: wrapper.class=[classname] (String)
    # Default: "org.apache.jserv.JServ"
    # Arguments passed to main class after the properties filename
    (not used)
    # Syntax: wrapper.class.parameters=[parameters] (String)
    # Default: NONE
    # Note: currently not used
    # PATH environment value passed to the JVM
    # Syntax: wrapper.path=[path] (String)
    # Default: "/bin:/usr/bin:/usr/local/bin" for Unix systems
    # "c:\(windows-dir);c:\(windows-system-dir)" for Win32
    systems
    # Notes: if more than one line is supplied these will be
    concatenated using
    # ":" or ";" (depending wether Unix or Win32) characters
    # Under Win32 (windows-dir) and (windows-system-dir) will
    be
    # automatically evaluated to match your system
    requirements
    # CLASSPATH environment value passed to the JVM
    # Syntax: wrapper.classpath=[path] (String)
    # Default: NONE (Sun's JDK/JRE already have a default classpath)
    # Note: if more than one line is supplied these will be
    concatenated using
    # ":" or ";" (depending wether Unix or Win32) characters.
    JVM must be
    # able to find JSDK and JServ classes and any utility
    classes used by
    # your servlets.
    # Note: the classes you want to be automatically reloaded upon
    modification
    # MUST NOT be in this classpath or the classpath of the
    shell
    # you start the Apache from.
    wrapper.classpath=/d3/Apache/jdk/lib/tools.jar
    wrapper.classpath=/d3/Apache/Jserv/libexec/ApacheJServ.jar
    wrapper.classpath=/d3/Apache/Jsdk/lib/jsdk.jar
    # An environment name with value passed to the JVM
    # Syntax: wrapper.env=[name]=[value] (String)
    # Default: NONE on Unix Systems
    # SystemDrive and SystemRoot with appropriate values on
    Win32 systems
    wrapper.env=PATH=/d3/bin
    # An environment name with value copied from caller to Java
    Virtual Machine
    # Syntax: wrapper.env.copy=[name] (String)
    # Default: NONE
    # Uncomment the following lines to set the default locale and
    NLS_LANG
    # setting based on the environment variables.
    # wrapper.env.copy=LANG
    # wrapper.env.copy=NLS_LANG
    # Copies all environment from caller to Java Virtual Machine
    # Syntax: wrapper.env.copyall=true (boolean)
    # Default: false
    # Protocol used for signal handling
    # Syntax: wrapper.protocol=[name] (String)
    # Default: ajpv12
    # General parameters
    # Set the default IP address or hostname Apache JServ binds (or
    listens) to.
    # If you have a machine with multiple IP addresses, this address
    # will be the one used. If you set the value to localhost, it
    # will be resolved to the IP address configured for the locahost
    # on your system (generally this is 127.0.0.1). This feature is
    so
    # that one can have multiple instances of Apache JServ listening
    on
    # the same port number, but different IP addresses on the same
    machine.
    # Use bindaddress=* only if you know exactly what you are doing
    here,
    # as it could let JServ wide open to the internet.
    # You must understand that JServ has to answer only to Apache,
    and should not
    # be reachable by nobody but mod_jserv. So localhost is usually a
    # good option. The second best choice would be an internal
    network address
    # (protected by a firewall) if JServ is running on another
    machine than Apache.
    # Ask your network admin.
    # "*" may be used on boxes where some of the clients get
    connected using
    # "localhost"and others using another IP addr.
    # Syntax: bindaddress=[ipaddress] or [localhost] or [*]
    # Default: localhost
    bindaddress=localhost
    # Set the port Apache JServ listens to.
    # Syntax: port=[1024,65535] (int)
    # Default: 8007
    port=8007
    # Servlet Zones parameters
    # List of servlet zones Apache JServ manages
    # Syntax: zones=[servlet zone],[servlet zone]... (Comma
    separated list of String)
    # Default: NONE
    zones=root
    # Configuration file for each servlet zone (one per servlet zone)
    # Syntax: [servlet zone name as on the zones list].properties=
    [full path to configFile]
    (String)
    # Default: NONE
    # Note: if the file could not be opened, try using absolute
    paths.
    root.properties=/d3/Apache/Jserv/etc/zone.properties
    # Thread Pool parameters
    # Enables or disables the use of the thread pool.
    # Syntax: pool=true (boolean)
    # Default: false
    # WARNING: the pool has not been extensively tested and may
    generate
    deadlocks.
    # For this reason, we advise against using this code in
    production environments.
    pool=false
    # Indicates the number of idle threads that the pool may contain.
    # Syntax: pool.capacity=(int)>0
    # Default: 10
    # NOTE: depending on your system load, this number should be low
    for contantly
    # loaded servers and should be increased depending on load
    bursts.
    pool.capacity=10
    # Indicates the pool controller that should be used to control
    the
    # level of the recycled threads.
    # Syntax: pool.controller=[full class of controller] (String)
    # Default: org.apache.java.recycle.DefaultController
    # NOTE: it is safe to leave this unchanged unless special
    recycle behavior
    # is needed. Look at the "org.apache.java.recycle" package
    javadocs for more
    # info on other pool controllers and their behavior.
    pool.controller=org.apache.java.recycle.DefaultController
    # Security parameters
    # Enable/disable the execution of org.apache.jserv.JServ as a
    servlet.
    # This is disabled by default because it may give informations
    that should
    # be restricted.
    # Note that the execution of Apache JServ as a servlet is
    filtered by the web
    # server modules by default so that both sides should be enabled
    to let this
    # service work.
    # This service is useful for installation and configuration
    since it gives
    # feedback about the exact configurations Apache JServ is using,
    but it should
    # be disabled when both installation and configuration processes
    are done.
    # Syntax: security.selfservlet=true (boolean)
    # Default: false
    # WARNING: disable this in a production environment since may
    give reserved
    # information to untrusted users.
    security.selfservlet=true
    # Set the maximum number of socket connections Apache JServ may
    handle
    # simultaneously. Make sure your operating environment has
    enough file
    # descriptors to allow this number.
    # Syntax: security.maxConnections=(int)>1
    # Default: 50
    security.maxConnections=50
    # Backlog setting for very fine performance tunning of JServ.
    # Unless you are familiar to sockets leave this value commented
    out.
    # security.backlog=5
    # List of IP addresses allowed to connect to Apache JServ. This
    is a first
    # security filtering to reject possibly unsecure connections and
    avoid the
    # overhead of connection authentication.
    # <warning>
    # (please don't use the following one unless you know what you
    are doing :
    # security.allowedAddresses=DISABLED
    # allows connections on JServ'port from entire internet.)
    # You do need only to allow YOUR Apache to talk to JServ.
    # </warning>
    # Default: 127.0.0.1
    # Syntax: security.allowedAddresses=[IP address],[IP Address]...
    (Comma
    separated list of IP addresses)
    #security.allowedAddresses=127.0.0.1
    # Enable/disable connection authentication.
    # NOTE: unauthenticated connections are a little faster since
    authentication
    # handshake is not performed at connection creation.
    # WARNING: authentication is disabled by default because we
    believe that
    # connection restriction from all IP addresses but localhost
    reduces your
    # time to get Apache JServ to run. If you allow other addresses
    to connect and
    # you don't trust it, you should enable authentication to
    prevent untrusted
    # execution of your servlets. Beware: if authentication is
    disabled and the
    # IP address is allowed, everyone on that machine can execute
    your servlets!
    # Syntax: security.authentication=[true,false] (boolean)
    # Default: true
    security.authentication=false
    # Authentication secret key.
    # The secret key is passed as a file that must be kept secure
    and must
    # be exactly the same of those used by clients to authenticate
    themselves.
    # Syntax: security.secretKey=[secret key path and filename]
    (String)
    # Default: NONE
    # Note: if the file could not be opened, try using absolute
    paths.
    #security.secretKey=./etc/jserv.secret.key
    # Length of the randomly generated challenge string (in bytes)
    used to
    # authenticate connections. 5 is the lowest possible choice to
    force a safe
    # level of security and reduce connection creation overhead.
    # Syntax: security.challengeSize=(int)>5
    # Default: 5
    #security.challengeSize=5
    # Logging parameters
    # Enable/disable Apache JServ logging.
    # WARNING: logging is a very expensive operation in terms of
    performance. You
    # should reduced the generated log to a minumum or even disable
    it if fast
    # execution is an issue. Note that if all log channels (see
    below) are
    # enabled, the log may become really big since each servlet
    request may
    # generate many Kb of log. Some log channels are mainly for
    debugging
    # purposes and should be disabled in a production environment.
    # Syntax: log=[true,false] (boolean)
    # Default: true
    log=true
    # Set the name of the trace/log file. To avoid possible
    confusion about
    # the location of this file, an absolute pathname is recommended.
    # This log file is different than the log file that is in the
    # jserv.conf file. This is the log file for the Java portion of
    Apache
    # JServ.
    # On Unix, this file must have write permissions by the owner of
    the JVM
    # process. In other words, if you are running Apache JServ in
    manual mode
    # and Apache is running as user nobody, then the file must have
    its
    # permissions set so that that user can write to it.
    # Syntax: log.file=[log path and filename] (String)
    # Default: NONE
    # Note: if the file could not be opened, try using absolute
    paths.
    log.file=/d3/Apache/Jserv/logs/jserv.log
    # Enable the timestamp before the log message
    # Syntax: log.timestamp=[true,false] (boolean)
    # Default: true
    log.timestamp=true
    # Use the given string as a data format
    # (see java.text.SimpleDateFormat for the list of options)
    # Syntax: log.dateFormat=(String)
    # Default: [dd/MM/yyyy HH:mm:ss:SSS zz]
    log.dateFormat=[dd/MM/yyyy HH:mm:ss:SSS zz]
    # Since all the messages logged are processed by a thread
    running with
    # minimum priority, it's of vital importance that this thread
    gets a chance
    # to run once in a while. If it doesn't, the log queue overflow
    occurs,
    # usually resulting in the OutOfMemoryError.
    # To prevent this from happening, two parameters are used:
    log.queue.maxage
    # and log.queue.maxsize. The former defines the maximum time for
    the logged
    # message to stay in the queue, the latter defines maximum
    number of
    # messages in the queue.
    # If one of those conditions becomes true (age > maxage || size
    maxsize),# the log message stating that fact is generated and the log
    queue is
    # flushed in the separate thread.
    # If you ever see such a message, either your system doesn't
    live up to its
    # expectations or you have a runaway loop (probably, but not
    necessarily,
    # generating a lot of log messages).
    # WARNING: Default values are lousy, you probably want to tweak
    them and
    # report the results back to the development team.
    # Syntax: log.queue.maxage = [milliseconds]
    # Default: 5000
    log.queue.maxage = 5000
    # Syntax: log.queue.maxsize = [integer]
    # Default: 1000
    log.queue.maxsize = 1000
    # Enable/disable logging the channel name
    # Default: false
    # log.channel=false
    # Enable/disable channels, each logging different actions.
    # Syntax: log.channel.[channel name]=[true,false] (boolean)
    # Default: false
    # Info channel - quite a lot of informational messages
    # hopefully you don't need them under normal circumstances
    # log.channel.info=true
    # Servlets exception, i.e. exception caught during
    # servlet.service() processing are monitored here
    # you probably want to have this one switched on
    log.channel.servletException=true
    # JServ exception, caught internally in jserv
    # we suggest to leave it on
    log.channel.jservException=true
    # Warning channel, it catches all the important
    # messages that don't cause JServ to stop, leave it on
    log.channel.warning=true
    # Servlet log
    # All messages logged by servlets. Probably you want
    # this one to be switched on.
    log.channel.servletLog=true
    # Critical errors
    # Messages produced by critical events causing jserv to stop
    log.channel.critical=true
    # Debug channel
    # Only for internal debugging purposes
    # log.channel.debug=true
    #wrapper.classpath=/d3/ord/jlib/ordim.zip
    #wrapper.classpath=/d3/ord/jlib/ordhttp.zip
    # Oracle XSQL Servlet
    wrapper.classpath=/d3/lib/oraclexsql.jar
    # Oracle JDBC
    wrapper.classpath=/d3/jdbc/lib/classes12.zip
    # Oracle XML Parser V2 (with XSLT Engine)
    wrapper.classpath=/d3/lib/xmlparserv2.jar
    # Oracle XML SQL Components for Java
    wrapper.classpath=/d3/rdbms/jlib/xsu12.jar
    # XSQLConfig.xml File location
    wrapper.classpath=/d3/xdk/admin
    # Oracle BC4J
    wrapper.classpath=/d3/ord/jlib/ordim.zip
    wrapper.classpath=/d3/ord/jlib/ordvir.zip
    wrapper.classpath=/d3/ord/jlib/ordhttp.zip
    wrapper.classpath=/d3/BC4J/lib/jndi.jar
    wrapper.classpath=/d3/BC4J/lib/jbomt.zip
    wrapper.classpath=/d3/BC4J/lib/javax_ejb.zip
    wrapper.classpath=/d3/BC4J/lib/jdev-rt.jar
    wrapper.classpath=/d3/BC4J/lib/jbohtml.zip
    wrapper.classpath=/d3/BC4J/lib/jboremote.zip
    wrapper.classpath=/d3/BC4J/lib/jdev-cm.jar
    wrapper.classpath=/d3/BC4J/lib/jbodomorcl.zip
    wrapper.classpath=/d3/BC4J/lib/jboimdomains.zip
    wrapper.classpath=/d3/BC4J/lib/collections.jar
    wrapper.classpath=/d3/Apache/Apache/htdocs/onlineorders_html
    #wrapper.classpath=/d3/Apache/Apache/htdocs/OnlineOrders_html/Onl
    ineOrders.jar
    # The following classpath entries are necessary for EJBs to run
    in IAS or DB when
    present
    wrapper.classpath=/d3/lib/aurora_client.jar
    wrapper.classpath=/d3/lib/vbjorb.jar
    wrapper.classpath=/d3/lib/vbjapp.jar
    # Oracle Servlet
    wrapper.classpath=/d3/lib/servlet.jar
    # Oracle Java Server Pages
    wrapper.classpath=/d3/jsp/lib/ojsp.jar
    # Oracle Util
    wrapper.classpath=/d3/jsp/lib/ojsputil.jar
    # Oracle Java SQL
    wrapper.classpath=/d3/sqlj/lib/translator.zip
    # Oracle JDBC
    #wrapper.classpath=/d3/jdbc/lib/classes12.zip
    # SQLJ runtime
    wrapper.classpath=/d3/sqlj/lib/runtime12.zip
    # Oracle Messaging
    wrapper.classpath=/d3/rdbms/jlib/aqapi.jar
    wrapper.classpath=/d3/rdbms/jlib/jmscommon.jar
    # OJSP environment settings
    #wrapper.env=ORACLE_HOME=/d3
    # The next line should be modified to reflect the value of the
    SID for your
    webserver.
    #wrapper.env=ORACLE_SID=cmpdb
    #wrapper.env=LD_LIBRARY_PATH=/d3/lib
    ## Enable the flag below if you are using jdk 1.2.2_05a or above
    #wrapper.env=JAVA_COMPILER=NONE
    # Advanced Queuing - AQXML
    wrapper.classpath=/d3/rdbms/jlib/aqxml.jar
    #wrapper.classpath=/d3/rdbms/jlib/xsu12.jar
    #wrapper.classpath=/d3/lib/xmlparserv2.jar
    wrapper.classpath=/d3/lib/xschema.jar
    #wrapper.classpath=/d3/jlib/jndi.jar
    wrapper.classpath=/d3/jlib/jta.jar
    oemreporting.properties=/d3/Apache/Jserv/oemreporting/oemreportin
    g.properties
    zones = root, oemreporting
    wrapper.classpath=/d3/jlib/share-opt-1_1_9.zip
    wrapper.classpath=/d3/jlib/caboshare-opt-1_0_3.zip
    wrapper.classpath=/d3/jlib/marlin-opt-1_0_7.zip
    wrapper.classpath=/d3/jlib/tecate-opt-1_0_4.zip
    wrapper.classpath=/d3/jlib/ocelot-opt-1_0_2.zip
    wrapper.classpath=/d3/jlib/regexp.jar
    wrapper.classpath=/d3/jlib/sax2.jar
    #wrapper.classpath=/d3/jlib/servlet.jar
    wrapper.bin.parameters= -DORACLE_HOME=/d3
    #wrapper.env=LD_LIBRARY_PATH=/d3/lib32
    wrapper.env.copy=DISPLAY
    wrapper.bin.parameters=-DORACLE_HOME=/d3
    #wrapper.classpath=/d3/lib/vbjorb.jar
    #wrapper.classpath=/d3/lib/vbjapp.jar
    wrapper.classpath=/d3/classes/classesFromIDLVisi
    wrapper.classpath=/d3/jlib/swingall-1_1_1.jar
    wrapper.classpath=/d3/jlib/ewtcompat3_3_15.jar
    wrapper.classpath=/d3/jlib/ewt-3_3_18.jar
    wrapper.classpath=/d3/jlib/share-1_1_9.jar
    wrapper.classpath=/d3/jlib/help-3_2_9.jar
    wrapper.classpath=/d3/jlib/ice-5_06_3.jar
    wrapper.classpath=/d3/jdbc/lib/classes111.zip
    wrapper.classpath=/d3/classes
    wrapper.classpath=/d3/jlib/oembase-9_0_1.jar
    wrapper.classpath=/d3/jlib/oemtools-9_0_1.jar
    wrapper.classpath=/d3/jlib
    wrapper.classpath=/d3/jlib/javax-ssl-1_1.jar
    wrapper.classpath=/d3/jlib/jssl-1_1.jar
    wrapper.classpath=/d3/jlib/netcfg.jar
    wrapper.classpath=/d3/jlib/dbui-2_1_2.jar
    #wrapper.classpath=/d3/lib/aurora_client.jar
    #wrapper.classpath=/d3/lib/xmlparserv2.jar
    wrapper.classpath=/d3/network/jlib/netmgrm.jar
    wrapper.classpath=/d3/network/jlib/netmgr.jar
    wrapper.classpath=/d3/network/tools
    wrapper.classpath=/d3/jlib/kodiak-1_2_1.jar
    wrapper.classpath=/d3/sysman/jlib/netchart360.jar
    wrapper.classpath=/d3/jlib/pfjbean.jar
    wrapper.env=SHLIB_PATH=/d3/lib32
    wrapper.env=LIBPATH=/d3/lib32
    wrapper.classpath=/d3/ultrasearch/lib/isearch_midtier.jar
    wrapper.classpath=/d3/ultrasearch/lib/isearch_query.jar
    wrapper.classpath=/d3/ultrasearch/lib/jgl3.1.0.jar
    wrapper.classpath=/d3/lib/mail.jar
    wrapper.classpath=/d3/lib/activation.jar
    wrapper.classpath=/d3/ultrasearch/jsp/admin/config
    # Additions for iFS
    ## DO NOT REMOVE OR ALTER THE FOLLOWING LINE ....
    # iFS true
    # Uncomment if you want to use the same Jserv as other
    applications
    wrapper.classpath=/d3/9ifs/custom_classes
    wrapper.classpath=/d3/9ifs/settings
    wrapper.classpath=/d3/9ifs/lib/adk.jar
    wrapper.classpath=/d3/9ifs/lib/email.jar
    wrapper.classpath=/d3/9ifs/lib/http.jar
    wrapper.classpath=/d3/9ifs/lib/release.jar
    wrapper.classpath=/d3/9ifs/lib/repos.jar
    wrapper.classpath=/d3/9ifs/lib/utils.jar
    wrapper.classpath=/d3/9ifs/lib/webui.jar
    wrapper.classpath=/d3/9ifs/lib/provider.jar
    wrapper.classpath=/d3/jlib/javax-ssl-1_2.jar
    wrapper.classpath=/d3/jlib/jssl-1_2.jar
    wrapper.env=ORACLE_HOME=/d3
    wrapper.env=ORACLE_SID=cmpdb
    wrapper.env=LD_LIBRARY_PATH=/d3/lib:/d3/ctx/lib:/d3/lib32
    wrapper.env=NLS_LANG=.US7ASCII
    ## Additions for the iFS zone
    # Uncomment if you want to use the same Jserv as other
    applications
    zones=ifs
    ifs.properties=/d3/Apache/Jserv/etc/ifs.properties
    # End iFS section

    About your home page; Manually set up Firefox with the window(s) and tab(s)
    the way you want them to be. Then;
    '''''Firefox Options > General > Homepage'''''.
    Press the button labeled ''''Use Current'''.'
    =====================================
    Open a new window or tab. In the address bar, type '''''about:config'''''.
    If a warning screen comes up, press the '''''Be Careful''''' button.
    This is where Firefox finds information it needs to run.
    At the top of the screen is a search bar. Enter '''''browser.newtab.url'''''
    and press enter. '''''browser.newtab.url'''''
    tells Firefox what to show when a new tab is opened.
    If you want, right click and select '''''Modify'''''. You can change the
    setting to;<BR><BR>about:home (Firefox default home page),<BR>
    about:newtab (shows the sites most visited),<BR>
    about:blank (a blank page),<BR>
    or you can enter any web page you want.<BR><BR>
    The same instructions are used for the new window setting, listed as
    '''''browser.startup.homepage'''''.

  • How to insert Data in a table from iFS.

    Hi,
    We have an application that communicates with the customer through iFS. I am asked to add a new functionality to that application that will populate a
    table in the database with customer id, customer inserted file name and internal file name after rename. I would
    really appreciate any input on how can I achieve this
    from our Custom Application using iFS.
    Is it possible to achieve this through LibrarySession API or I have to write a separate JDBC application which will be called from our current application to do the task.
    Thanks,
    SA

    Your question is little perplexing.
    If you're using XML SQL Utility from
    the commandline, just use putXML.
    java OracleXML putXML
    null

  • How to access IFS document contents in PL/SQL procedure ?

    I am interested in using IFS as a way to load documents
    (PDF, HTML, RFT, text...) in an Oracle database table, and
    then access the table via a regular application Server.
    I understand that the right way to do this is via a Java API
    mapped on top of IFS.
    But we already have a fairly sophisticated web application using
    Java and PL/SQL procedures so that I would ideally need
    to write a PL/SQL procedure such as :
    function get_document (ifs_file_name in varchar, ifs_file_path in varchar) return clob
    For this I need to outline how to query the IFS schema using SQL.
    Any idea which table to query ?
    Have a nice day

    Many thanks to Chris Schneider : it works. Withing a few hours
    I was able to make a servlet with a file name as a parameter which sends back
    the file contents (in our case its a PDF file).
    Here is a sample servlet which uses this access scheme :
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    public class TestIFS extends HttpServlet
    * Handle the GET and HEAD methods by building a simple web page.
    * HEAD is just like GET, except that the server returns only the
    * headers (including content length) not the body we write.
    public void doGet (HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException
    //PrintWriter out;
    String title = "Test d'acchs IFS";
    // set content type and other response header fields first
    response.setContentType("application/pdf");
    // then write the data of the response
              ServletOutputStream outbin = response.getOutputStream();
              String theQuery=
         "SELECT "+
         " odm_publicobject.name object_name"+
         ", odmm_contentstore.id content_id"+
         ", odm_format.mimetype"+
         ", odmm_contentstore.globalindexedblob "+
         "FROM odm_publicobject"+
         ", odm_document"+
         ", odm_contentobject"+
         ", odmm_contentstore"+
         ", odm_format "+
         "WHERE odm_publicobject.id = odm_document.id "+
         "AND odm_document.contentobject = odm_contentobject.id "+
         "AND odm_contentobject.content = odmm_contentstore.id "+
         "AND odm_contentobject.format = odm_format.id "+
         "AND odm_publicobject.name = ";
              theQuery += "'" + request.getParameter("fic") + "'";
              try {
                   System.out.println("TestIFS debut");
                   DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
                   Connection conn = DriverManager.getConnection ("jdbc:oracle:oci8:@LXP9","ifssys","ifssys");
                   Statement stmt = conn.createStatement ();
                   ResultSet rset = stmt.executeQuery (theQuery);
                   while (rset.next ()) {
                        byte b[] = new byte[10000000];               
                        b = rset.getBlob(4).getBytes (1,10000000);
                        outbin.write (b);
                   rset.close();
                   System.out.println("TestIFS fin");
              catch (Exception e) {
    (beware mime type is forced to PDF, and file size max 10Mb)

  • IS IT POSSIBLE TO CHANGE THE DEFAULT WEB PRESENTATION OF IFS?

    We have a web application that has links to specific documents and directories stored in IFS. For example, there could be a link that resolves to this URL within IFS:
    http://oraifs-pd.nbme.org:8002/ifs/files/home/ads/systems/CLOP/Minutes/Inventory/
    What we see when the user follows this link is something like this:
    Index of /home/ads/systems/CLOP/Minutes/Inventory/
    CLOP_Shipping_Procedures.doc
    Meetings
    P&P0404.xls
    P&Pdoc.xls
    Samples
    Schedules
    Note that this is a very plain presentation, with just a heading telling you the directory you're in and a dumb list of the files and subdirectories you are looking at.
    The developers would like to change this default presentation, if possible, without having to go deep into the IFS API calls to build a custom application.
    Is there a template or default html file that we can edit to change this presentation? I opened a TAR on this, but was told to come to OTN since Oracle Support doesn't get into customization issues.
    Thanks,
    Joe

    no, you cannot change the built-in http file listing that iFS provides. you can, however, write your own servlet and display whatever HTML you would like. the iFS API calls to get file listings by path and attributes from objects are very easy -- most of the work would be in building the servlet.

  • File Adapter to iSeries IFS "Configured source directory does not exist"

    Good day, All
    We are using PI 7.1
    I need the PI file adapter to pull a file off of an iSeries(AS400) IFS folder directory.
    I'm able to configure the file adapter to pull off files from the PI server C and D drives.
    I'm able to configure the file adapter to pull off files from other network drives.
    But the iSeries IFS folder keeps coming back "does not exist".
    I've configured the Source Directory with / and with \ and it doesn't help.
    I am able to navigate to the folder while logged into the PI server as the server admin.
    I've tried mapping a drive on the server to the IFS folder but that doesn't work either.
    Please help!!!
    I've wasted too much time trying different settings on this already.
    Any assistance would be greatly appreciated.
    Thanks,
    Chad

    Dear Chad,
    Please go through the following SDN link :
    - Configured source directory .... does not exist was suppressed
    give the write permisson to the directory for everyone group and check if that helps.
    Also, kindly go through the following links :
    1) http://wiki.sdn.sap.com/wiki/display/XI/TroubleshootingtheFile+Adapter (point 2)
    2) Not able to read files from Windows directory to Unix Server using NFS
    which might give some hints in solving your issue.
    Best Regards
    Nishwanth

  • Help, CheckOut causes error IFS-34611

    There was an error checking out logo.jpg: oracle.ifs.common.IfsException: There was an error checking out logo.jpg: oracle.ifs.common.IfsException: IFS-34611: Error reserving version series. oracle.ifs.common.IfsException: IFS-30054: Insufficient access to add a new version to a VersionSeries oracle.ifs.common.IfsException: IFS-30030: Permission not granted on specified ACL series. oracle.ifs.common.IfsException: IFS-30054: Insufficient access to add a new version to a VersionSeries oracle.ifs.common.IfsException: IFS-30030: Permission not granted on specified ACL
    I am writing my own CheckOut and CheckIn code for IFS1.1.10. The problem is that every time I check in a file, nobody but the person who originally checked in the file is able to check out the file. SO user1 checks in a file, user2 checks out the file and BAM error. please help.
    I have made sure to set the ACL to public at initial document creation (by giving the DocumentDefinition a Public ACL).
    //////////////////////////////////// BEGIN CHECKIN CLASS ////////////////////////////////////////////////////
    ******* CheckIn is pretty big so the only things to look at are the doPost and other called methods
    * Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html; charset=WINDOWS-1252");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>CheckIn</title>");
    out.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=WINDOWS-1252\">");
    out.println("</head>");
    out.println("<body>");
    //Debug mode stuff
    if (MODE == "info")
    iterateThroughHeaders(out, request);
    //Determine the length and location of the boundary tags
    //wrapping the files contents, these will
    //be used to trim away the header and footer later
    String contentType = request.getContentType();
    int boundaryIndex = contentType.indexOf("boundary=");
    String boundary = contentType.substring(boundaryIndex+9);
    int boundaryStrLength = boundary.length();
    // Parse out the filename from the stream
    // and at the same time remove the boundary tag
    // wrapping the file
    ServletInputStream sis = request.getInputStream();
    try {
    //Create a Junkbuffer to hold "lines" of the content Stream
    //and junk the first line of the stream
    int offset=0;
    int bufferLength=1024; // 1kilobyte
    byte[] junkBuffer = new byte[bufferLength];
    int junkLineSize = sis.readLine(junkBuffer, offset, bufferLength);
    junkLineSize = sis.readLine(junkBuffer, offset, bufferLength);
    // Read the file name from 2nd line of the stream
    // by isolating everything between the last
    // file backslash "\" and the last quote """
    ByteArrayOutputStream ContentDispositionStream = new ByteArrayOutputStream();
    ContentDispositionStream.write(junkBuffer, 0, bufferLength);
    String ContentDisposition = ContentDispositionStream.toString();
    ContentDisposition.trim();
    //String filename = ContentDisposition.substring(ContentDisposition.lastIndexOf("\\")+1,ContentDisposition.lastIndexOf("\""));
    login.setfilename( ContentDisposition.substring(ContentDisposition.lastIndexOf("\\")+1,ContentDisposition.lastIndexOf("\"")) );
    // junk the 3rd and 4th lines
    junkLineSize = sis.readLine(junkBuffer, offset, bufferLength);
    junkLineSize = sis.readLine(junkBuffer, offset, bufferLength);
    } catch (Exception e){
    // Now that we have the filename, we need to make sure that
    // the file is not checked out by somebody else
    PublicObject pendingCheckIn = null;
    try {
    pendingCheckIn = login.getFileSystem().findPublicObjectByPath(login.IFS_FILE_PATH+login.getFilename());
    if (login.getFileSystem().isCheckedOut(pendingCheckIn) ) {
    // if file is checked out, find out by whom
    DirectoryUser currentOwner = login.getFileSystem().checkedOutBy(pendingCheckIn);
    if ( !currentOwner.equals(login.getLibrarySession().getDirectoryUser()) ){
    // it must be checked out by somebody,inform the current user as to whom the file is checked out by
    out.println("That file has been checked out by "+ currentOwner.getDistinguishedName());
    out.println("<br>");
    out.println("</body></html>");
    out.close();
    return;
    } else {// it must be checked out by the current user
    // Remove the trailing boundary tag wrapping the file contents
    ByteArrayInputStream contentInputStream = null;
    DataInputStream dis = new DataInputStream(sis);
    try{
    // Create a new Buffer for writing the headerless input stream to
    // a ByteArrayOutputStream
    byte[] buffer2 = new byte[4096]; //4Kilobyte buffer
    int length;
    ByteArrayOutputStream truncatedHeaderStream = new ByteArrayOutputStream(request.getContentLength());
    while ((length = dis.read(buffer2)) > 0) {
    truncatedHeaderStream.write(buffer2, 0, length);
    // Write the headerless ByteArrayOutputStream to a byteArray
    byte[] truncatedHeaderArray = truncatedHeaderStream.toByteArray();
    // Create a new ByteArrayOutputStream with the trailing
    // boundary tags removed by truncating the end of
    ByteArrayOutputStream contentOnly = new ByteArrayOutputStream(request.getContentLength());
    contentOnly.write(truncatedHeaderArray, 0, truncatedHeaderArray.length - boundaryStrLength - 8);
    byte[] contentAsBytes = contentOnly.toByteArray();
    contentInputStream = new ByteArrayInputStream(contentAsBytes);
    } catch (Exception e) {
    out.println("Error parsing the file out of the request<br>");
    //Create a new version of the document in the Primary Version Series
    createNewVersion(pendingCheckIn, contentInputStream, checkInComment);
    //Connect to the Oracle Database using the database versions of the username and password
    DatabaseHelper dbHelp = new DatabaseHelper(login);
    //Insert The uploaded document's name into the appropriate table.
    dbHelp.insertRecord(login.getTableName(), login.getKeyID(), login.getFilename());
    return;
    } catch (IfsException ifse) {
    //out.println("There was an error trying to: " + ifse.toString());
    try {
    if (null == pendingCheckIn) {
    // then this object does not exist and we must create a document and then version it.
    // Remove the trailing boundary tag wrapping the file contents
    ByteArrayInputStream contentInputStream = null;
    DataInputStream dis = new DataInputStream(sis);
    try{
    // Create a new Buffer for writing the headerless input stream to
    // a ByteArrayOutputStream
    byte[] buffer2 = new byte[4096]; //4Kilobyte buffer
    int length;
    ByteArrayOutputStream truncatedHeaderStream = new ByteArrayOutputStream(request.getContentLength());
    while ((length = dis.read(buffer2)) > 0) {
    truncatedHeaderStream.write(buffer2, 0, length);
    // Write the headerless ByteArrayOutputStream to a byteArray
    byte[] truncatedHeaderArray = truncatedHeaderStream.toByteArray();
    // Create a new ByteArrayOutputStream with the trailing
    // boundary tags removed by truncating the end of
    // the headerless byteArray
    ByteArrayOutputStream contentOnly = new ByteArrayOutputStream(request.getContentLength());
    contentOnly.write(truncatedHeaderArray, 0, truncatedHeaderArray.length - boundaryStrLength - 8);
    byte[] contentAsBytes = contentOnly.toByteArray();
    contentInputStream = new ByteArrayInputStream(contentAsBytes);
    } catch (Exception e) {
    out.println("Error parsing the file out of the request<br>");
    Document doc = null;
    try {
    DocumentDefinition newDocDef = new DocumentDefinition(login.getLibrarySession());
    newDocDef.setAttribute( "NAME",AttributeValue.newAttributeValue(login.getFilename()) );
    newDocDef.setContentStream(contentInputStream);
    PublicObject poForAcl = login.getFileSystem().findPublicObjectByPath(login.PUBLIC_ACL_OBJECT_PATH);
    AccessControlList acl = poForAcl.getAcl();
    AttributeValue av = AttributeValue.newAttributeValue( acl );
    newDocDef.setAttribute( PublicObject.ACL_ATTRIBUTE, av );
    doc=(Document)login.getLibrarySession().createPublicObject(newDocDef);
    } catch (IfsException ifseIn) {
    out.println("Error creating new Document definition"+ifseIn);
    //return the versioned Family object
    Family documentFamily=null;
    try {
    documentFamily = this.makeVersioned(doc,checkInComment);
    }catch (IfsException ifseIn) {
    out.println("error in makeVersion");
    //Put the family object into /public/Pool
    Folder folder=null;
    FolderPathResolver folderPathResolver = null;
    try {
    //Get a handle on the public/Pool directory object
    folderPathResolver = new FolderPathResolver(login.getLibrarySession());
    folder = (Folder) folderPathResolver.findPublicObjectByPath("/public/Pool");
    folder.addItem(documentFamily);
    out.println("added the document successfully");
    } catch (IfsException ifseIn) {
    out.println("error getting a handle on public pool"+ifseIn);
    } catch (Exception e) {
    out.println("error adding Item"+e);
    try {
    out.println(" folderPathResolver "+folderPathResolver.toString() +" folder "+folder.getName());
    } catch (Exception e1) {
    //Connect to the Oracle Database using the database versions of the username and password
    DatabaseHelper dbHelp = new DatabaseHelper(login);
    //Insert The uploaded document's name into the appropriate table.
    dbHelp.insertRecord(login.getTableName(), login.getKeyID(), login.getFilename());
    return;
    }//end If
    } catch (Exception exc) {
    out.println("Error creating new doc: "+exc);
    }//end Catch
    } //end doPost()
    * Get Servlet information
    * @return java.lang.String
    public String getServletInfo() {
    return "com.pws.FileTransfer.CheckIn Information";
    //this method was found on Oracle Forums, posted by Mark D Drake
    public Family makeVersioned( PublicObject po, String comment)
    throws IfsException {
    Collection c = po.getSession().getClassObjectCollection();
    ClassObject co = (ClassObject) c.getItems(Family.CLASS_NAME);
    if (po.isInstanceOf(co))
    return (Family) po;
    // - Create a Family Definition. Set the Name of the Family to the name of the Public Object etc.
    FamilyDefinition familyDef = new FamilyDefinition( po.getSession() );
    familyDef.setName( po.getName() );
    //AccessControlList acl = po.getAcl();
    //Added by Weber to give the versioned document a public ACL
    PublicObject poForAcl = login.getFileSystem().findPublicObjectByPath(login.PUBLIC_ACL_OBJECT_PATH);
    AccessControlList acl = poForAcl.getAcl();
    AttributeValue av = AttributeValue.newAttributeValue( acl );
    familyDef.setAttribute( PublicObject.ACL_ATTRIBUTE, av );
    familyDef.setAttribute( PublicObject.DESCRIPTION_ATTRIBUTE, AttributeValue.newAttributeValue( "Family Definition for " + po.getName() ) );
    // Create the version series definition.
    // Attach the Family Definition to the Version Series Defintion
    VersionSeriesDefinition versionSeriesDef = new VersionSeriesDefinition( po.getSession() );
    versionSeriesDef.setFamilyDefinition( familyDef );
    // Create the Version Description Definition
    // Set the Description for the initial version.
    // Set the Versioned Object to be the current Purchase Order
    // Attach the Version Series Defintion to the Version Description Definition
    av = AttributeValue.newAttributeValue( comment );
    VersionDescriptionDefinition versionDescriptionDef = new VersionDescriptionDefinition( po.getSession() );
    versionDescriptionDef.setAttribute( VersionDescription.REVISIONCOMMENT_ATTRIBUTE, av );
    versionDescriptionDef.setVersionSeriesDefinition( versionSeriesDef );
    versionDescriptionDef.setPublicObject( po );
    // Create the Version description. This will create the Version Series and Version Family
    VersionDescription vd = ( VersionDescription ) po.getSession().createPublicObject( versionDescriptionDef );
    // Return the Family
    Family family = vd.getFamily();
    po.setSecuringPublicObject( family );
    //updateFolderReferences( po, family );
    return family;
    public void createNewVersion(PublicObject p_ifsFamily,
    InputStream p_contentStream,
    String p_versionComment){
    try {
    //begin a transaction for saving the new content
    oracle.ifs.common.Transaction transaction = login.getLibrarySession().beginTransaction();
    //get resolved public object from the family of the document
    Family l_family = (Family) p_ifsFamily;
    VersionSeries l_vs = l_family.getPrimaryVersionSeries();
    PublicObject l_rpo = l_family.getResolvedPublicObject();
    try {
    //construct the document definition with contentobject
    DocumentDefinition l_docDef = (DocumentDefinition)l_rpo.getDefinition();
    //Format l_format = ((Document)l_rpo).getFormat();
    l_docDef.setContentStream(p_contentStream);
    //it is unkown whether this is necessary but I have added it for redundancy
    l_docDef.setAttribute("NAME",AttributeValue.newAttributeValue(login.getFilename()));
    //form a new publicobject with the document definition
    PublicObject l_po = login.getLibrarySession().createPublicObject(l_docDef);
    //set the pendingpublicobject for the version series
    l_vs.setPendingPublicObject(l_po);
    //if here,then no exception. so, commit the transaction
    login.getLibrarySession().completeTransaction(transaction);
    //dereference the transaction object
    transaction = null;
    } catch (IfsException ifsEx) {
    ifsEx.setVerboseMessage(true);
    ifsEx.printStackTrace();
    }finally {
    if(transaction != null) {
    //if transaction is pending then exception. so, abort the transaction
    login.getLibrarySession().abortTransaction(transaction);
    //dereference the transaction object
    transaction = null;
    // check in the document with the versioning comments.
    login.getFileSystem().checkIn(p_ifsFamily, p_versionComment);
    }catch(IfsException ex){ // Trap Errors
    if (ex.getErrorCode() != 30661) {
    ex.setVerboseMessage(true);
    ex.printStackTrace();
    }//end make Version
    private AccessControlList getPublicAcl(PrintWriter p_out) {
    AccessControlList l_acl = null;
    try {
    PublicObject poForAcl = login.getFileSystem().findPublicObjectByPath(login.PUBLIC_ACL_OBJECT_PATH);
    AccessControlList acl = poForAcl.getAcl();
    } catch (IfsException ifse) {
    p_out.println("Error in getPublicAcl: "+ifse);
    return l_acl;
    }// end getPublicAcl
    }//end Class
    //////////////////////////////////// BEGIN CHECKOUT CLASS ////////////////////////////////////////////////////
    package com.pws.FileTransfer;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import oracle.ifs.beans.PublicObject;
    import oracle.ifs.beans.Family;
    import oracle.ifs.beans.FamilyDefinition;
    import oracle.ifs.beans.VersionSeries;
    import oracle.ifs.beans.VersionSeriesDefinition;
    import oracle.ifs.beans.VersionDescription;
    import oracle.ifs.beans.VersionDescriptionDefinition;
    import oracle.ifs.beans.DirectoryUser;
    import oracle.ifs.adk.filesystem.IfsFileSystem;
    import oracle.ifs.common.IfsException;
    public class CheckOut extends HttpServlet {
    public static final String CHECKOUT_FILE_LOCATION = "files"+Login.IFS_FILE_PATH;
    * Initialize global variables
    public void init(ServletConfig config) throws ServletException {
    super.init(config);
    * Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html; charset=WINDOWS-1252");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>CheckOut</title>");
    out.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=WINDOWS-1252\">");
    out.println("</head>");
    // Parse the userName, password, docID and file from the request
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String file = request.getParameter("file");
    // Create a Login object to represent this session between the user and ifs
    Login login = new Login(username, password, null, null, null, null, file);
    // Create a publicObject from the provided filename
    PublicObject poFromFile = null;
    String lastDescriptID = null;
    String firstDescriptID = null;
    String getID = null;
    String descriptionAttribute = null;
    String defaultVersionDescription = null;
    try {
    // Find the file pending Check Out in IFS
    Family pendingCheckOut = (Family)login.getFileSystem().findPublicObjectByPath(login.IFS_FILE_PATH + file);
    PublicObject resolvedPO = pendingCheckOut.getResolvedPublicObject();
    // Find out who it is checked out by
    DirectoryUser currentFileUser = login.getFileSystem().checkedOutBy(pendingCheckOut);
    if (null == currentFileUser) {
    // The file is not checked out,
    // proceed with CheckOut process
    PublicObject po = login.getFileSystem().checkOut(resolvedPO, false);
    out.println("<a href="\""+ CHECKOUT_FILE_LOCATION + file +"\" target=\"_blank\">"+ file +"</a>");
    } else {
    // The file is already checked out,
    // display who the currentFileUser is
    out.println(file +" is currently checked out by "+currentFileUser.getDistinguishedName());
    } catch (IfsException ifse) {
    out.println("There was an error checking out "+ file +": "+ ifse);
    out.println("</body></html>");
    out.close();
    * Get Servlet information
    * @return java.lang.String
    public String getServletInfo() {
    return "com.pws.FileTransfer.CheckOut Information";

    Hi,
    We are facing exact same problem?
    Have you got any fix for this?
    Please let me know.
    Thanks
    Sri
    (Cisco Systems)

  • Mapping the IFS from a Windows 2003 service

    Hi,
    We are trying to install Esker inbound faxing. The process involves their software receiving a file to a Windows server and transfering the file directily to the IFS using a service. My question is how do you get the service user mapping to be available to a service? We can't write the file so I'm assuming the IFS is not availablle to the service.  
    Thanks,
    Craig

    Hi Victor,
    I think I am getting closer to understanding the problem but maybe not the solution.
    The iSeries V5R4M5 has a domain of BRC.GBL defined locally (CFGTCP option 12) with a *DFT domain search list. The Host name search priority is *LOCAL.
    Our Active Directory also has the BRC.GBL Domain definition.
    But - when we interactivly map a drive from the windows server to the iSeries we need to use hostname/userid which to me indicates that we are requesting to use a local (not domain) user id.  Then we log out and back in but the mapping is gone even though we have checked off reconnect.
    Also for the user ID defined for the service, we cannot use hostname/userid but rather have to use the domain/userid. when I try and use hostname/userid in the service login I get an error that the user is not defined.
    I'm not sure this helps, but hopefully my problem definition will be more clear.
    Thanks,
    Craig

  • IFS Searching with other Search Engines

    Is it possible to set up iFS searching with or without interMedia) that would work with a search engine for static pages, like Infoseek?
    From an "end-users" point of view, I would like to have them search for a document, some of which may be stored in the database, but others are html pages used for the site.

    You would have to write a custom program which would submit searches to IFS and to your Infoseek search engine, and then combine the results for the end user.
    Or you could use iFS and Intermedia to index the static HTML pages.

  • Logging in ifs and renderering capabilities out of the box

    Hello there
    Just wondering if anybody could clarify/confirm a few things for me...
    I'm currently trying to use 9ifs as a 'conversion' engine. I have an XML file within a 9ifs repository that I wish to transform using an xslt when I retrieve it.
    Does 9ifs contain out of the box functionality to perform this? If so, how do I use it or do I need to write a custom renderer to perform the tasks that I have specified?
    I have had a play with the SimpleXmlRenderer however have not been able to find any solid examples of how to use it nor do I know whether it is possible to use it to specify the xslt that will perform the transformation.
    I have also heard that 9ifs has an inbuilt 'logging' capability - ie it can keep a record of files that have gone in to 9ifs or gone out. Is this also true and how would I use it?
    Finally, I have heard that one of the capabilities of ifs is that it provides 'transactional' support in either putting files into the repository or taking files out - ie a file is either there or it is not, there is no in between, corrupt file state. Can anybody shed any light on this as to whether it is true or not?
    Jason

    The CMSDK does not include any out-of-the-box XML transformation capabilities, but it is very easy to code XML/XSLT transformations using Java, and I believe Internet Explorer has built-in support for it, so one could consider that built-in functionality. You could write your own servlet to perform any kind of transformation you wish on any file in the CMSDK, and serve up the resulting file via HTTP, for example.
    The CMSDK is extensible and configurable in a way that could allow you to keep track of files uploaded and downloaded into the instance. You can write custom code and plug it into various extensibility points which allow you to modify default behavior or extend it to include custom operations. See the developer's guide and the javadoc for more details.
    The CMSDK is a transactional object store -- it is true that files can be uploaded and modified within a transaction, and completely rolled back in case of failures.

Maybe you are looking for

  • PDF issues in Preview

    I use pdf's all of the time for looking a primary literature online, and this problem certainly does not occur on every, or even the majority, of pdf's that I view. When opening some pdf files the scrolling is extremely jerky (especially between page

  • Jinitiator Vs JRE

    Dear All, While invoking Oracle forms and reports in Jinitiator for the first time, Jini software will be automatically dowloading the client PC. But, when the forms and reports are invoked from JRE, the IE is not downloading the JRE software in the

  • How to export photos in order

    Yay!  I finally found out how to keep the photos in your albums in the correct order when you export the album! I am fortunate to have AppleCare so I decided to call them after trying to figure this out for years. The fellow on the phone said he'd ha

  • How do you connect to wi fi. i can t get the ipad to connect to my home network.

    how do you connect to wi fi. i can t get the ipad to connect to my home network.

  • Loosing Sent Mail

    Hi, I get this message once and a while when I look in my Sent mail folder: The message from Peter Carry <[email protected]> concerning "Speedline Tech- Electrovert quote and rental" has not been downloaded from the server. You need to take this acco