You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2013/01/02 23:13:04 UTC

svn commit: r1428087 [2/4] - in /uima/sandbox/uima-ducc/trunk/src/main: ./ admin/ assembly/ config/ resources/ saxon/ scripts/

Added: uima/sandbox/uima-ducc/trunk/src/main/admin/stop_ducc
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/stop_ducc?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/stop_ducc (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/stop_ducc Wed Jan  2 22:13:03 2013
@@ -0,0 +1,250 @@
+#!/usr/bin/env python
+# -----------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# -----------------------------------------------------------------------
+
+
+import os
+import sys
+
+from ducc_boot import *
+set_ducc_home()
+
+
+import getopt
+import glob
+from ducc_util  import DuccUtil
+from ducc_util  import DuccProperties
+from ducc_util  import DuccPropertiesException
+from ducc       import Ducc
+
+class StopDucc(DuccUtil):
+
+    def stop_component(self, component, force):
+
+        #
+        # If it's an unqualified management component, we need to get it's qualified name
+        #
+        if ( component in self.default_components ):
+            if ( self.pids.has_key(component) ):
+                component = self.pids.get(component)
+            else:
+                print 'Skipping', component, 'not in pids file.'
+                return
+
+        #
+        # If the name is not qualified we've got a problem, everything in the pids file is qualified
+        #
+        if ( component.find('@') >= 0 ):            
+            com, target_node = component.split('@')
+        else:
+            self.invalid("Must specify hostname when stopping", component)
+
+        #
+        # If despite all that we can't find the pid, we need to run check_ducc
+        #
+        if ( not self.pids.has_key(component) ):
+            print("Cannot find PID for component", component, ". Run check_ducc to refresh PIDS and then rerun stop_ducc.")
+            return
+
+        pid = self.pids.get(component)
+    
+        if ( force ):
+            print 'Stopping component', com, 'on node', target_node, 'with PID', pid, 'forcibly (kill -9)'
+            self.nohup(['ssh', target_node, 'kill', '-KILL', pid], False)
+
+            if ( component == 'or' ):
+                self.remove_orchestrator_lock()
+
+            pass
+        else:
+            print 'Stopping component', com, 'on node', target_node, 'with PID', pid
+            self.nohup(['ssh', target_node, 'kill', '-INT', pid], False)
+
+        # clear the short name if it exists, and the long name
+        self.pids.delete(com)
+        self.pids.delete(component)
+
+    def stop_agents(self, node, force):
+        self.stop_component('agent@' + node.strip(), force)
+    
+    def usage(self, msg):
+        if ( msg != None ):
+            print msg
+
+        print 'stop_ducc [options]'
+        print '    If no options are given, this help screen is shown.'
+        print ''
+        print 'Options:'
+        print '   -a --all'
+        print '        Stop all the DUCC processes, including agents and management processes.'
+        print ''
+        print '   -n --nodelist nodefile'
+        print '        Stop agents on the nodes in the nodefile.  Multiple nodefiles may be specified:'
+        print ''
+        print '        stop_ducc -n foo.nodes -n bar.nodes -n baz.nodes'
+        print ''
+        print '   -m --management'
+        print '        Stop the management processes (rm, pm, sm, or, and ws).'
+        print ''
+        print '   -c --component component'
+        print '        Stop a specific component.  The component may be qualified with the node name'
+        print '        using the @ symbol: component@node.'
+        print ''
+        print '        stop_ducc -c rm@foonode'
+        print '        stop_ducc -c agent@barnode -c or'
+        print ''
+        print '        Components include:'
+        print '          rm - resource manager'
+        print '          or - orchestrator'
+        print '          pm - process manager'
+        print '          sm - services manager'
+        print '          ws - web server'
+        print '          agent - node agent'        
+        print ''
+        print '   -k --kill'
+        print '        Stop the component forcibly and immediately using kill -9.  Use this only if a'
+        print '        normal stop does not work (e.g. the process may be hung).'
+        sys.exit(1)
+
+    def invalid(self, *msg):
+        if ( msg[0] != None ):
+            print ' '.join(msg)
+
+        print "For usage run"
+        print "    stop_ducc -h"
+        print 'or'
+        print '    stop_ducc --help'
+        sys.exit(1)
+    
+    
+    def main(self, argv):
+
+        if ( len(argv) == 0 ):
+            self.usage(None)
+
+        components = []
+        nodefiles = []
+        management = False
+        do_agents = False
+        do_components = False
+        force = False
+        all = False
+
+        try:
+            opts, args = getopt.getopt(argv, 'ac:n:kmmn:h?v', ['all', 'component=', 'components=', 'help', 'nodelist=', 'management', 'kill'])
+        except:
+            self.invalid('Invalid arguments ' + ' '.join(argv))
+        
+        for ( o, a ) in opts:
+            if o in ('-c', '--component', '--components'):
+                components.append(a)
+                do_components = True
+            elif o in ( '-m', '--management' ):
+                management = True
+                components = self.default_components
+            elif o in ( '-a', '--all' ):
+                all = True
+                components = self.default_components
+            elif o in ( '-n', '--nodelist' ):
+                nodefiles.append(a)
+                do_agents = True
+            elif o in ( '-k', '--kill' ):
+                force = True
+            elif ( o == '-v' ) :
+                print self.version()
+                sys.exit(0)
+            elif ( o == '-h'):
+               self.usage(None)
+            elif ( o == '-?'):
+               self.usage(None)
+            else:
+                print 'badarg', a
+                self.invalid('bad arg: ' + a)
+
+        
+        # 'management' means stop all the management daemons - if specific components are also specified
+        # there is at least a redundancy and maybe also a conflict.
+        if ( do_components and management ):
+            self.invalid("The --management and --compoent options are mutually exclusive")
+
+        # avaid confusion by insuring that if 'all', then nothing else is specified
+        if ( all and ( do_components or management ) ):
+            self.invalid("The --all option is mutually exclusive with --management and --component")
+
+        
+        # 'all' means everything. we use broadcast.  should use check_ducc to make sure
+        # it actually worked, and find the stragglers.
+        if ( all ):
+            if ( not force ) :
+                self.clean_shutdown()
+                if ( os.path.exists(self.pid_file) ):
+                    os.remove(self.pid_file)
+                return
+            else:
+                if ( len(nodefiles) == 0 ):
+                    nodefiles = self.default_nodefiles
+
+        self.pids = DuccProperties()
+        try:
+            self.pids.load(self.pid_file)
+        except DuccPropertiesException, (inst):
+            print inst.msg
+            print ''
+            print 'Run check_ducc to refresh the PIDs file, or check_ducc -k to search for and',
+            print 'kill all DUCC processes.'
+            print ''
+            sys.exit(1)
+
+        #
+        # if not 'all', we use nodefiles and component names
+        #
+        
+        # make sure all the nodefiles exist and are readable
+        ok = True
+        nodes = {}
+        for n in nodefiles:
+            nodes = self.read_nodefile(n, nodes)
+
+        for ( nf, nl ) in nodes.items():
+            if ( nl == None ):                       # die early if the parameters are wrong
+                print "Can't read nodefile", nf
+                ok = False
+
+        if ( not ok ):
+            sys.exit(1)
+
+        for c in components:
+            self.stop_component(c, force)
+
+        for (nf, nl) in nodes.items():
+            for n in nl:
+                self.stop_agents(n, force)            
+
+        if ( len(self.pids) > 0 ):
+            self.pids.write(self.pid_file)
+        else:
+            os.remove(self.pid_file)
+
+        return
+
+if __name__ == "__main__":
+    stopper = StopDucc()
+    stopper.main(sys.argv[1:])
+
+    

Added: uima/sandbox/uima-ducc/trunk/src/main/admin/stop_sim
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/stop_sim?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/stop_sim (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/stop_sim Wed Jan  2 22:13:03 2013
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+# -----------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# -----------------------------------------------------------------------
+
+
+import os
+import sys
+
+from ducc_boot import *
+set_ducc_home()
+
+
+import getopt
+
+from ducc_util import DuccUtil
+from ducc_util import DuccProperties
+from ducc import Ducc
+
+class StopSim(DuccUtil):
+
+    def signal_process(self, inst, data, signal):
+        (node, pid, pname) = data.split(' ')
+        if ( not (inst in self.default_components )):
+            cmp = 'agent'
+        else:
+            cmp = inst
+        print 'Stopping process', inst, 'on', node, pid, pname, 'with signal', signal
+        self.ssh(node, False, 'kill', signal, pid)
+
+        if ( inst == 'or' ):
+            self.remove_orchestrator_lock()
+
+    def usage(self, msg):
+
+        if ( msg != None ):
+            print ' '.join(msg)
+
+              
+        print "Usage:"
+        print "   stop_sim [options]"   
+        print "        If no options are given, all ducc processes from sim.pids are stopped using SIGINT"
+        print ""
+        print "Options:"
+        print "   -c --component compenent name"
+        print "        The name is one of", self.default_components, "or an ID from sim.pids or the nodelist"
+        print "        that was used to start DUCC"
+        print ""
+        print "   -i --instance instancid"  
+        print "        Sends SIGINT to the indicated process, enabling orderly shutdown."
+        print ""
+        print "   -k --kill"
+        print "        Sends SIGKILL to the indicated process"
+        print ""
+        print "   -p --pause"
+        print "        Sends SIGSTOP to the indicated process"
+        print ""
+        print "   -r --resume"
+        print "        Sends SIGCONT to the indicated process"
+        print ""
+        print "   -v, --version"
+        print "        Print the current DUCC version"
+        print ""
+        sys.exit(1) 
+            
+
+    def invalid(self, *msg):
+        if ( msg[0] != None ):
+            print ' '.join(msg)
+            
+            print "For usage run"
+            print "    stop_sim -h"
+            print 'or'
+            print '    stop_sim --help'
+            sys.exit(1)
+
+    def main(self, argv):
+
+        components = []
+        instances = []
+        signal = '-INT'
+
+        try:
+            opts, args = getopt.getopt(argv, 'c:i:kprvh?', ['component=', 'instance=', 'kill' 'pause', 'resume', 'version'])
+        except:
+            self.invalid('Invalid arguments', ' '.join(argv))
+                  
+        for ( o, a ) in opts:
+            if o in ( '-i', '--instance' ):
+                instances.append(a)
+            elif o in ( '-c', '--component' ):
+                instances.append(a)
+            elif o in ( '-k', '--kill' ):
+                signal = '-KILL'
+            elif o in ( '-p', '--pause' ):
+                signal = '-STOP'
+            elif o in ( '-r', '--resume' ):
+                signal = '-CONT'
+            elif o in ( '-v', '--version' ):
+                print self.version()
+                sys.exit(0)
+            elif o in ( '-h', '--help' ):
+                self.usage(None)
+            elif ( o == '-?'):
+                self.usage(None)
+            else:
+                self.invalid('bad args: ', ' '.join(argv))
+
+        pids = DuccProperties()
+        pids.load('sim.pids')
+
+        if ( (len(components) + len(instances)) == 0 ):
+            for (inst, data) in pids.items():
+                self.signal_process(inst, data, signal)
+                if ( signal in ('-KILL', '-INT') ):
+                    pids.delete(inst)
+
+        else:
+            for inst in instances:
+                data = pids.get(inst)
+                self.signal_process(inst, pids.get(inst), signal)
+                if ( signal in ('-KILL', '-INT') ):
+                    pids.delete(inst)
+
+        pids.write('sim.pids')
+
+if __name__ == "__main__":
+    stopper = StopSim()
+    stopper.main(sys.argv[1:])

Added: uima/sandbox/uima-ducc/trunk/src/main/admin/verify_ducc
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/verify_ducc?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/verify_ducc (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/verify_ducc Wed Jan  2 22:13:03 2013
@@ -0,0 +1,323 @@
+#!/usr/bin/env python
+# -----------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# -----------------------------------------------------------------------
+
+
+import os
+import sys
+
+from ducc_boot import *
+set_ducc_home()
+
+import string
+import re
+import getopt
+
+global errors
+errors = 0
+
+from ducc_util import DuccUtil
+from ducc_util import DuccProperties
+from ducc      import Ducc
+
+class VerifyDucc(DuccUtil):
+
+    #
+    # Make sure ducc_ling is set up ok.
+    # Make sure ducc_ling is configured in ducc.properties
+    # Make sure the broker address is set in ducc.properties.
+    # Make sure reserved.nodes has at least one of the nodes named in ducc.nodes
+    #
+    
+    def check_duckling(self):
+        global errors
+        self.verify_duccling()
+    
+    #
+    # allnodes is a dictionary.  The key is the name of a nodefile, the value is a
+    #          list of all nodes in that file.
+    def check_remote_nodes(self, allnodes, environment):
+        global errors
+
+        duckling_ok = True
+
+        for (nodefile, nodes) in allnodes.items():
+            for node in nodes:
+                checklist = []
+                mem = ''
+                lines = self.ssh(node, True, self.DUCC_HOME + '/admin/verify_ducc', '-d')
+                for line in lines:
+                    line = line.strip()
+                    if ( line.startswith('ENV') ):
+                        if (line.find('not found') >= 0):
+                            print 'NOTOK', node, 'from', nodefile, line
+                            errors = errors + 1
+                        else:
+                            checklist.append(line)
+                    elif (line.startswith('MEM')):
+                        mem = line
+                    elif ( line != 'ducc_ling OK'):
+                        print 'NOTOK:', node, 'from', nodefile, line, mem
+                        errors = errors + 1
+                        duccling_ok = False
+                    else:
+                        print 'OK:', node, line, mem
+                for ( local, remote ) in zip(environment, checklist):
+                    if (local != remote):
+                        print 'DIFFERENCE on node', node, ':'
+                        print '%20s %s' % ('LOCAL:', local)
+                        print '%20s %s' % (node, remote)
+
+        return duckling_ok
+
+
+    def check_broker(self, broker_conf):
+        global errors
+
+        #broker_conf = broker_loc + '/apache-activemq-5.5.0/conf/activemq.xml'        
+        broker_uri = None
+        
+        #look for something like this: <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
+        f = open(broker_conf)
+        for line in f:
+            if ( not line ):
+                break
+            line = line.strip()
+            toks = line.split()
+            if ( not line ):
+                continue
+            if ( toks[0] == '<transportConnector' ):
+                # we need to parse out the uri and if localhost or 0.0.0.0 is specified,
+                # we need to replace it with the hostname
+                
+                url = toks[2]
+                toks = url.split('"')
+                address = toks[1]
+                toks = address.split(':')
+                protocol = toks[0]
+                host = toks[1]
+                if ( (toks[1] == '//0.0.0.0') or (toks[1] == 'localhost') ):
+                    host = os.uname()[1]
+                else:
+                    host = host[2:]      # strip //
+                shorthost = host
+                ttoks = host.split('.') #strip domain for easier matching later
+                if ( len(ttoks) > 1 ):
+                    shorthost = ttoks[0]
+                port = toks[2]
+
+                amqok = True
+                protocols = ['tcp', 'nio']
+                if ( not ((protocol in protocols) and (self.broker_protocol in protocols)) ):
+                    amqok = False
+                if ( host != self.broker_host ):
+                    amqok = False
+                if ( port != self.broker_port ):
+                    amqok = False
+
+                if ( amqok ):
+                    print 'OK DUCC Configured ActiveMQ URL', self.broker_url, 'matches ActiveMQ configured URL.'
+                else:
+                    print 'NOTOK DUCC Configured ActiveMQ URL', self.broker_url, 'does not match ActiveMQ configured URL:', address
+                    errors = errors + 1
+                
+                return amqok
+        
+    def compare_nodes(self, n1, n2):
+
+        if ( n1 == n2 ):             # exact match - covers both short and both long
+            return True
+
+        if ( n1.find('.') >= 0 ):    # shortened n1 == n2?
+            t1 = n1.split('.')
+            n1A = t1[0]
+            if ( n1A == n2 ):
+                return True
+
+        if ( n2.find('.') >= 0 ):    # n1 == shortened n2?
+            t2 = n2.split('.')
+            n2A = t2[0]
+            if ( n1 == n2A ):
+                return True
+
+        return False
+
+    def check_nodepools(self, allnodes):
+        global errors
+
+        classfile = self.ducc_properties.get('ducc.rm.class.definitions')
+        classfile = self.resolve(classfile, self.propsfile)    # resolve the classfile relative to ducc.properties
+
+        classprops = DuccProperties()
+        classprops.load(classfile)
+
+        #
+        # First make sure that all the nodepools that are declared have definition files
+        # and that the defined nodes are in some nodelist.
+        #
+        nodepools = classprops.get('scheduling.nodepool').split()
+        nodepools_ok = True
+        for np in nodepools:
+            npkey = 'scheduling.nodepool.' + np
+            npfilename = classprops.get(npkey)
+            npfile = self.DUCC_HOME + '/resources/' + npfilename
+            if ( not os.path.exists(npfile) ):
+                print 'NOTOK: Cannot find nodepool file', npfile
+                errors = errors + 1
+                continue
+
+            npnodes = DuccProperties()
+            npnodes.load(npfile)
+            for ( node, v ) in npnodes.items():
+                found = False
+                for (nodefile, nodelist) in allnodes.items():
+                    for n in nodelist:                        
+                        if ( self.compare_nodes(n, node)):
+                            found = True
+                            break                        
+                if ( not found ):
+                    print 'NOTOK: Cannot find node defined in pool "' +np+'" in any nodefile:', node
+                    errors = errors + 1
+                    nodepools_ok = False
+
+        #
+        # Now make sure that all classes that reference nodepools have corresponding
+        # nodepool definitions
+        #
+
+        for ( k, v ) in classprops.items():
+            if ( k.startswith('scheduling.class.') and k.endswith('.nodepool') ):
+                if ( not ( v in nodepools ) ):
+                    toks = k.split('.')
+                    classname = toks[2]
+                    print 'NOTOK: Class', classname, 'references non-existent nodepool', v
+                    errors = errors + 1
+                    nodepools_ok = False
+
+        if ( nodepools_ok ):
+            print 'OK: All nodepools are verified'
+        else:
+            print 'NOTOK: some nodepools are not correctly defined.'
+
+    def usage(self, msg=None):
+        if ( msg != None ):
+            print msg
+        print 'verify_ducc [-b broker_install_dir] [-d] [-n] [-h | -?] [-v]'
+        print ''
+        print 'Where'
+        print '    -b broker_conf - specify the configuration file for the broker you are using.'
+        print '       Example: verify_ducc -b /home/challngr/amqbroker/amq/conf/activemq-nojournal5.xml'
+        print ''
+        print '    -n nodelist - use this nodelist.'
+        print '       May be specified multiple times.'
+        print ''
+        print '    -h or -? gives this help message'
+        print '' 
+        print '    -v shows the DUCC version'
+        print ''
+        print 'Internally verify_ducc recursively uses a -d flag, not intended for general use.'
+        print '    -d just verify duccling on the local host'
+        print ''
+        print 'When invoked with no arguments, this performs installation verification checks for DUCC.'
+        sys.exit(1)
+        
+    def main(self, argv):
+        global errors
+    
+        environ = self.show_ducc_environment()
+        jars = []
+        for e in environ:
+            if ( e.startswith('ENV:') ):
+                jars.append(e)
+            print e
+
+        do_duckling = False
+        nodelists = []
+        amqhome = None
+
+        try:
+            opts, args = getopt.getopt(argv, 'b:dn:h?v')
+        except:
+            self.usage('Invalid arguments.')
+
+
+        for ( o, a ) in opts:
+            if ( o == '-v' ) :
+                print self.version()
+                sys.exit(0)
+            elif ( o == '-d'):
+                do_duckling = True
+            elif ( o == '-b'):
+                amqhome = a
+            elif ( o == '-n'):
+                nodelists.append(a)                
+            elif ( o == '-h'):
+               self.usage(None)
+            elif ( o == '-?'):
+               self.usage(None)
+            else:
+                self.usage('bad arg: ' + a)
+    
+        if ( do_duckling ):
+            self.check_duckling()
+            return
+
+        HOME = os.environ['HOME']
+        DEFAULT_MQ = HOME + '/activemq/apache-activemq-5.5.0/conf/activemq.xml' 
+        MQ_DIR = DEFAULT_MQ    
+        MQ_VERSION = 'apache-activemq-5.5.0'           # required 
+    
+        if ( amqhome == None ):
+            MQ_DIR = DEFAULT_MQ
+        else:
+            MQ_DIR = amqhome
+        print 'ActiveMQ     directory:', MQ_DIR
+
+        if ( len(nodelists) == 0 ):
+            nodelists = self.default_nodefiles
+
+        activemq_loc    = MQ_DIR
+
+        # read all nodes into a dictionary keyed off the nodefile name
+        tmp = {}
+        for nodefile in nodelists:
+            tmp = self.read_nodefile(nodefile, tmp)
+
+        # transfer nodes into an array with only stuff that could be 
+        # found, emitting errors as needed
+        allnodes = {}
+        for ( k, v ) in tmp.items():
+            if ( v == None ):
+                print 'NOTOK: Cannot read nodefile', k
+                errors = errors + 1
+            else:
+                allnodes[k] = v
+                
+        self.check_broker(activemq_loc)            # reads activemq.conf and verifies the url against the configured url
+        self.check_nodepools(allnodes)
+        self.check_remote_nodes(allnodes, jars)
+        
+        print 'Verified with', errors, 'errors'
+        
+    
+if __name__ == "__main__":
+    verifier = VerifyDucc()
+    verifier.main(sys.argv[1:])
+    
+    

Added: uima/sandbox/uima-ducc/trunk/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/assembly/bin.xml?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/assembly/bin.xml (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/assembly/bin.xml Wed Jan  2 22:13:03 2013
@@ -0,0 +1,422 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.    
+-->
+
+<assembly>
+  <id>bin</id>
+  <formats>
+    <format>tar.gz</format>  
+    <format>zip</format>
+  </formats>
+  
+  <baseDirectory>apache-uima-ducc-${project.version}</baseDirectory> 
+  <includeBaseDirectory>true</includeBaseDirectory>
+
+   <dependencySets>
+     <dependencySet>
+      <includes>
+        <include>org.apache.uima:uima-ducc-common</include>
+        <include>org.apache.uima:uima-ducc-transport</include>
+        <include>org.apache.uima:uima-ducc-agent</include>
+        <include>org.apache.uima:uima-ducc-cli</include>
+        <include>org.apache.uima:uima-ducc-jd</include>
+        <include>org.apache.uima:uima-ducc-pm</include>
+        <include>org.apache.uima:uima-ducc-rm</include>
+        <include>org.apache.uima:uima-ducc-sm</include>
+        <include>org.apache.uima:uima-ducc-orchestrator</include>
+      </includes>      
+      <outputFileNameMapping>${artifact.artifactId}.jar</outputFileNameMapping>
+      <outputDirectory>ducc_runtime/lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+   
+     <!-- UIMA Core + UIMA-AS -->   
+     <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-as-core</include>
+        <include>org.apache.uima:uimaj-as-jms</include>
+        <include>org.apache.uima:uimaj-as-activemq</include>
+        <include>org.apache.uima:uimaj-core</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/uima</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+    <!-- dependencySet>
+      <unpack>false</unpack>
+      <outputDirectory>runtime/webserver2/lib</outputDirectory>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <includes>
+        <include>org.eclipse.jetty:jetty-server</include>
+        <include>org.eclipse.jetty:jetty-ajp</include>
+        <include>org.eclipse.jetty:jetty-annotations</include>
+        <include>org.eclipse.jetty:jetty-client</include>
+        <include>org.eclipse.jetty:jetty-continuation</include>
+        <include>org.eclipse.jetty:jetty-deploy</include>
+        <include>org.eclipse.jetty:jetty-http</include>
+        <include>org.eclipse.jetty:jetty-io</include>
+        <include>org.eclipse.jetty:jetty-jmx</include>
+        <include>org.eclipse.jetty:jetty-jndi</include>
+        <include>org.eclipse.jetty:jetty-overlay-deployer</include>
+        <include>org.eclipse.jetty:jetty-plus</include>
+        <include>org.eclipse.jetty:jetty-policy</include>
+        <include>org.eclipse.jetty:jetty-rewrite</include>
+        <include>org.eclipse.jetty:jetty-security</include>
+        <include>org.eclipse.jetty:jetty-servlet</include>
+        <include>org.eclipse.jetty:jetty-servlets</include>
+        <include>org.eclipse.jetty:jetty-util</include>
+        <include>org.eclipse.jetty:jetty-webapp</include>
+        <include>org.eclipse.jetty:jetty-websocket</include>
+        <include>org.eclipse.jetty:jetty-xml</include>
+        <include>javax.servlet:servlet-api</include>
+      </includes>
+    </dependencySet -->
+
+
+
+
+
+     <dependencySet>
+      <includes>
+        <include>commons-cli:commons-cli</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-commons-cli</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>log4j:log4j</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-log4j</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>org.apache.xmlbeans:xmlbeans</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/xmlbeans</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>com.google.guava:guava</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/guava</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>joda-time:joda-time</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/joda-time</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>org.apache.httpcomponents:httpclient</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/http-client</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>commons-codec:commons-codec</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/http-client</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>commons-collections:commons-collections</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-commons-collections</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>commons-lang:commons-lang</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-commons-lang</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>org.apache.commons:commons-math</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-commons-math</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+    <dependencySet>
+      <includes>
+        <include>junit:junit</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/junit</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+	</dependencySet>
+			
+     <dependencySet>
+      <includes>
+        <include>org.apache.activemq:activemq-web</include>
+        <include>org.apache.activemq:activemq-core</include>
+        <include>org.apache.activemq:activemq-optional</include>
+        <include>org.apache.activemq:activemq-spring</include>
+        <include>org.apache.activemq:activemq-web</include>
+        <include>org.apache.activemq:activemq-web</include>
+        <include>org.apache.activemq:activemq-web</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-activemq</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>org.apache.camel:camel-context</include>
+        <include>org.apache.camel:camel-http</include>
+        <include>org.apache.camel:camel-http4</include>
+        <include>org.apache.camel:camel-jetty</include>
+        <include>org.apache.camel:camel-jms</include>
+        <include>org.apache.camel:camel-mina</include>
+        <include>org.apache.camel:camel-servlet</include>
+        <include>org.apache.camel:camel-test-spring</include>
+        <include>org.apache.camel:camel-test</include>
+        <include>org.apache.camel:camel-spring</include>
+        <include>org.apache.camel:camel-stream</include>
+        <include>org.apache.camel:camel-xmlbeans</include>
+        <include>org.apache.camel:camel-xstream</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/apache-camel</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+     <dependencySet>
+      <includes>
+        <include>org.springframework:spring-core</include>
+        <include>org.springframework:spring-expression</include>
+        <include>org.springframework:spring-beans</include>
+        <include>org.springframework:spring-aop</include>
+        <include>org.springframework:spring-tx</include>
+        <include>org.springframework:spring-asm</include>
+        <include>org.springframework:spring-jms</include>
+        <include>org.springframework:spring-context</include>
+        <include>org.springframework:spring-context-support</include>
+      </includes>      
+      <outputDirectory>ducc_runtime/lib/springframework</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode> 
+      <directoryMode>755</directoryMode>        
+    </dependencySet>
+
+
+   </dependencySets>
+  
+  <!-- Add other files - scripts, documentation, examples -->
+  <fileSets>
+
+    <fileSet>
+      <directory>src/main/resources</directory>
+      <outputDirectory>ducc_runtime/resources</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes />
+    </fileSet>
+
+    <fileSet>
+      <directory>../uima-ducc-cli/target</directory>
+      <outputDirectory>ducc_runtime/lib</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes>
+         <include>*.jar</include>
+      </includes>
+      <excludes>
+         <exclude>uima-ducc-cli.jar</exclude>
+      </excludes>
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/config</directory>
+      <outputDirectory>ducc_runtime/resources</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes />
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/admin</directory>
+      <outputDirectory>ducc_runtime/admin</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes />
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/scripts</directory>
+      <outputDirectory>ducc_runtime/bin</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes />
+      <excludes>
+      	<exclude>dd2spring.bat</exclude>
+      	<exclude>dd2spring.xsl</exclude>
+      </excludes>
+    </fileSet>
+
+    <fileSet>
+      <directory>../uima-ducc-spawn/src</directory>
+      <outputDirectory>ducc_runtime/duccling/src</outputDirectory>
+      <fileMode>750</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes />
+      <excludes />
+    </fileSet>
+
+    <fileSet>
+      <directory>../uima-ducc-spawn</directory>
+      <outputDirectory>ducc_runtime/duccling</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes>
+      	<include>README*</include>
+      </includes>
+      <excludes />
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/saxon</directory>
+      <outputDirectory>ducc_runtime/lib/saxon</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>        
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/webserver</directory>
+      <outputDirectory>ducc_runtime/webserver</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>        
+    </fileSet>
+
+
+    <fileSet>
+      <directory>../uima-ducc-ducbook/target/site/d</directory>
+      <outputDirectory>ducc_runtime/docs</outputDirectory>
+      <excludes>
+        <exclude>css/*</exclude>
+      </excludes>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>        
+    </fileSet> 
+
+  </fileSets> 
+  
+  <files>
+  
+    <file>
+      <source>README.BUILD</source>
+      <outputDirectory>ducc_runtime</outputDirectory>
+      <destName>README.BUILD</destName>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>README.INSTALL</source>
+      <outputDirectory>ducc_runtime</outputDirectory>
+      <destName>README.INSTALL</destName>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>RELEASE.NOTES</source>
+      <outputDirectory>ducc_runtime</outputDirectory>
+      <destName>RELEASE.NOTES</destName>
+      <fileMode>644</fileMode>
+    </file>
+
+
+    <!-- file>
+      <source>target/uimaj/apache-uima/examples/.project</source>
+      <outputDirectory>examples</outputDirectory>
+      <fileMode>644</fileMode> 
+    </file>
+    <file>
+      <source>target/uimaj/apache-uima/RELEASE_NOTES.html</source>
+      <outputDirectory/>
+      <destName>RELEASE_NOTES.uimaj.html</destName>
+      <fileMode>644</fileMode>
+    </file>
+    
+    <file>
+      <source>target/uimaj/apache-uima/LICENSE</source>
+      <outputDirectory/>
+      <destName>LICENSE.uimaj.txt</destName>
+      <fileMode>644</fileMode>
+    </file>
+
+    <file>
+      <source>target/uimaj/apache-uima/NOTICE</source>
+      <outputDirectory/>
+      <destName>NOTICE.uimaj.txt</destName>
+      <fileMode>644</fileMode>
+    </file>
+    
+    
+    <file>
+      <source>src/main/eclipseProject/classpath</source>
+      <outputDirectory>examples</outputDirectory>
+      <destName>.classpath</destName>
+      <fileMode>644</fileMode> 
+    </file -->
+  </files>
+</assembly>

Propchange: uima/sandbox/uima-ducc/trunk/src/main/assembly/bin.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/sandbox/uima-ducc/trunk/src/main/config/activemq-nojournal5.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/config/activemq-nojournal5.xml?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/config/activemq-nojournal5.xml (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/config/activemq-nojournal5.xml Wed Jan  2 22:13:03 2013
@@ -0,0 +1,53 @@
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <!-- Allows us to use system properties as variables in this configuration file -->
+    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
+
+    <broker xmlns="http://activemq.apache.org/schema/core" persistent="false">
+              
+        <destinationPolicy>
+            <policyMap>
+              <policyEntries>
+                <policyEntry topic=">" producerFlowControl="false" optimizedDispatch="true">
+                  <pendingSubscriberPolicy>
+                    <vmCursor />
+                  </pendingSubscriberPolicy>
+                </policyEntry>
+                <policyEntry queue=">" producerFlowControl="false" optimizedDispatch="true" maxPageSize="2000">
+                  <pendingQueuePolicy>
+                    <vmQueueCursor/>
+                  </pendingQueuePolicy>
+                </policyEntry>
+              </policyEntries>
+            </policyMap>
+        </destinationPolicy> 
+ 
+        <managementContext>
+            <managementContext createConnector="true" connectorPort="1099"/>
+        </managementContext>
+             
+        <systemUsage>
+            <systemUsage>
+                <memoryUsage>
+                    <memoryUsage limit="500 mb"/>
+                </memoryUsage>
+                <storeUsage>
+                    <storeUsage limit="1 gb" name="foo"/>
+                </storeUsage>
+                <tempUsage>
+                    <tempUsage limit="500 mb"/>
+                </tempUsage>
+            </systemUsage>
+        </systemUsage>
+		  
+        <transportConnectors>
+            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?transport.soWriteTimeout=45000"/>
+        </transportConnectors>
+
+    </broker>
+</beans>

Propchange: uima/sandbox/uima-ducc/trunk/src/main/config/activemq-nojournal5.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/sandbox/uima-ducc/trunk/src/main/config/log4j.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/config/log4j.xml?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/config/log4j.xml (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/config/log4j.xml Wed Jan  2 22:13:03 2013
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+  <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
+    <param name="Target" value="System.out"/> 
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+  
+  <appender name="cli-console" class="org.apache.log4j.ConsoleAppender"> 
+    <param name="Target" value="System.out"/> 
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%m%n"/> 
+    </layout> 
+  </appender>
+  
+  <appender name="cli-console-ts" class="org.apache.log4j.ConsoleAppender"> 
+    <param name="Target" value="System.out"/> 
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %m%n"/> 
+    </layout> 
+  </appender>
+  
+  <appender name="rmlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/rm.log"/>
+    <param name="maxBackupIndex" value="50" />
+    <param name="maxFileSize" value="20MB" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+
+  <appender name="orlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/or.log"/>
+    <param name="maxBackupIndex" value="20" />
+    <param name="maxFileSize" value="20MB" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+
+  <appender name="ormon" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/or.mon"/>
+    <param name="maxBackupIndex" value="20" />
+    <param name="maxFileSize" value="20MB" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+  
+  <appender name="smlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/sm.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+
+  <appender name="pmlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/pm.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+
+  <appender name="wslog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/ws.${NodeName}.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %X{TID} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+  
+  <appender name="vizlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/viz.${NodeName}.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %X{TID} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+  
+  <appender name="jdout" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${ducc.process.log.dir}/jd.out.log"/>
+    <param name="maxBackupIndex" value="20" />
+    <param name="maxFileSize" value="20MB" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %X{TID} %5p %c{2} %m%n"/> 
+    </layout> 
+  </appender> 
+  
+  <appender name="jderr" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${ducc.process.log.dir}/jd.err.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %X{TID} %5p %c{2} %m%n"/> 
+    </layout> 
+  </appender> 
+
+  <appender name="agentlog" class="org.apache.uima.ducc.common.utils.DeferredOpenRollingAppender"> 
+    <param name="append" value="true"/>
+    <param name="file" value="${DUCC_HOME}/logs/${NodeName}.${ducc.deploy.components}.log"/>
+    <param name="maxBackupIndex" value="5" />
+    <layout class="org.apache.log4j.PatternLayout"> 
+      <param name="ConversionPattern" value="%d{DATE} %5p %X{COMPONENT}.%c{1} - %m%n"/> 
+    </layout> 
+  </appender> 
+
+   <category name="org.apache.uima.ducc.rm.scheduler" additivity="true">
+     <priority value="info"/>
+     <appender-ref ref="rmlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.rm.JobManagerConverter" additivity="true">
+     <priority value="trace"/>
+     <appender-ref ref="rmlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.rm.NodeStability" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="rmlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.rm.ResourceManagerComponent" additivity="true">
+     <priority value="info"/>
+     <appender-ref ref="rmlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.orchestrator" additivity="true">
+     <priority value="info"/>
+     <appender-ref ref="orlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.orchestrator.monitor" additivity="false">
+     <priority value="info"/>
+     <appender-ref ref="ormon" /> 
+   </category>
+   
+   <category name="org.apache.uima.ducc.agent" additivity="false">
+     <priority value="debug"/>
+     <appender-ref ref="agentlog" />
+   </category>
+
+   <category name="org.apache.uima.ducc.agent.deploy" additivity="false">
+     <priority value="off"/>
+     <appender-ref ref="agentlog" />
+   </category>
+
+   <category name="org.apache.uima.ducc.jd" additivity="false">
+     <priority value="debug"/>
+     <appender-ref ref="jdout" />
+   </category>
+
+   <category name="org.apache.uima.ducc.sm" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="smlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.pm" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="pmlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.ws" additivity="true">
+     <priority value="info"/>
+     <appender-ref ref="wslog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.viz" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="vizlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.duccsight" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="vizlog" /> 
+   </category>
+
+   <category name="org.apache.uima.ducc.user.logs" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="jdout" /> 
+   </category>
+   
+   <category name="org.apache.uima.ducc.user.out" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="jdout" /> 
+   </category>
+   
+   <category name="org.apache.uima.ducc.user.err" additivity="true">
+     <priority value="debug"/>
+     <appender-ref ref="jderr" /> 
+   </category>
+
+   <category name="org.springframework.beans.factory">
+     <priority value="off"/>
+   </category>
+
+   <category name="org.apache.camel">
+     <priority value="off"/>
+   </category>
+
+   <category name="org.apache.uima.ducc.cli" additivity="false">
+     <priority value="info"/>
+     <appender-ref ref="cli-console" />
+   </category>
+   
+   <category name="org.apache.uima.ducc.cli-ts" additivity="false">
+     <priority value="info"/>
+     <appender-ref ref="cli-console-ts" />
+   </category>
+   
+  <root> 
+    <priority value ="info" /> 
+    <appender-ref ref="console" /> 
+  </root>
+  
+</log4j:configuration>

Propchange: uima/sandbox/uima-ducc/trunk/src/main/config/log4j.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.administrators
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.administrators?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.administrators (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.administrators Wed Jan  2 22:13:03 2013
@@ -0,0 +1,3 @@
+bobtheadmin
+joehelper
+billywho

Added: uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.classes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.classes?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.classes (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.classes Wed Jan  2 22:13:03 2013
@@ -0,0 +1,77 @@
+scheduling.class_set    = background low normal high urgent weekly fixed reserve JobDriver
+scheduling.default.name = normal
+
+scheduling.nodepool         = reserve
+scheduling.nodepool.reserve = reserved.nodes
+
+#
+# The first five classes are blade-like unfair share
+#
+scheduling.class.background.policy       = FAIR_SHARE
+scheduling.class.background.share_weight = 1
+scheduling.class.background.priority     = 10
+scheduling.class.background.cap          = 0
+
+scheduling.class.low.policy              = FAIR_SHARE
+scheduling.class.low.share_weight        = 50
+scheduling.class.low.priority            = 10
+scheduling.class.low.cap                 = 0
+
+scheduling.class.normal.policy           = FAIR_SHARE
+scheduling.class.normal.share_weight     = 100
+scheduling.class.normal.priority         = 10
+scheduling.class.normal.cap              = 0
+
+# Note that it is possible to override some of the the global scheduling parameters
+# on a class-wise basis
+scheduling.class.normal.prediction       = true
+scheduling.class.normal.prediction.fudge = 10000
+scheduling.class.normal.expand.by.doubling = true
+scheduling.class.normal.initialization.cap = 2
+
+scheduling.class.high.policy         = FAIR_SHARE
+scheduling.class.high.share_weight   = 200
+scheduling.class.high.priority       = 10
+scheduling.class.high.cap            = 0
+
+scheduling.class.urgent.policy       = FAIR_SHARE
+scheduling.class.urgent.share_weight = 10000
+scheduling.class.urgent.priority     = 10
+scheduling.class.urgent.cap          = 0
+
+#
+# Some number of fixed share aka pinned shares 
+#
+scheduling.class.fixed.policy                = FIXED_SHARE
+scheduling.class.fixed.priority              = 5
+scheduling.class.fixed.max_shares            = 10    #max per user
+#scheduling.class.fixed.cap                   = 20%
+
+#
+# This is for weekly.  It will eat the system if there's enough work for it but
+# relinquish resources as things complete.  So we cap it at 80% to allow some bits of
+# work to trickle through
+#
+scheduling.class.weekly.policy           = FAIR_SHARE
+scheduling.class.weekly.share_weight     = 100
+scheduling.class.weekly.priority         = 3
+scheduling.class.weekly.cap              = 80%
+
+#
+# Reservations - 
+# 
+scheduling.class.reserve.policy                = RESERVE
+scheduling.class.reserve.priority              = 1
+scheduling.class.reserve.cap                   = 0
+scheduling.class.reserve.enforce.memory        = false
+#scheduling.class.reserve.nodepool              = reserve
+
+#
+# Job driver, always going to succeed
+# 
+scheduling.class.JobDriver.policy                = RESERVE
+scheduling.class.JobDriver.priority              = 0
+scheduling.class.JobDriver.cap                   = 0
+#scheduling.class.JobDriver.nodepool              = reserve
+scheduling.class.JobDriver.enforce.memory        = false
+scheduling.class.JobDriver.max_machines     	 = 5

Added: uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.properties
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.properties?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.properties (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.properties Wed Jan  2 22:13:03 2013
@@ -0,0 +1,307 @@
+# Declare which components to load into the jvm on process startup.
+
+ducc.jms.provider=activemq
+
+# ---------------------------------------------------
+# deprecated ducc.broker.url in favor of breaking a url into pieces
+# as defined below
+#ducc.broker.url=tcp://localhost:61616
+# ---------------------------------------------------
+# define broker protocol. Should typically be tcp. *** Dont specify : or // ***
+ducc.broker.protocol=tcp
+# define hostname where the broker is running
+ducc.broker.hostname=localhost
+# define broker port
+ducc.broker.port=61616
+# define broker url parms (url decoration). *** Dont specify leading ? ***
+# 
+# recoveryInterval=30000 - Specifies an interval between recovery attempts, i.e. when 
+#                          a connection is being refreshed, in milliseconds
+# jms.useCompression=true - Compress message body
+#
+ducc.broker.url.decoration=wireFormat.maxInactivityDuration=0&recoveryInterval=30000&jms.useCompression=true
+
+# To enable tracing of RM messages arriving in OR and NodeMetrics arriving in WS.
+#ducc.transport.trace = orchestrator:RmStateDuccEvent webserver:NodeMetricsUpdateDuccEvent
+
+# define broker name. This name should match the actual broker name
+# defined in activemq-nojournal5.xml. The name is used by JD to 
+# connect to a remote broker in order to remove its queue when
+# JD is done processing
+ducc.broker.name=localhost
+ducc.broker.jmx.port=1099
+
+ducc.cluster.name=DUCC!
+
+ducc.authentication.implementer=com.ibm.ducc.authentication.AuthenticationManager
+
+# ducc.runmode=Test
+
+ducc.locale.language=en
+ducc.locale.country=us
+
+# Specify a minimum amount of free swap space available on a node.
+# If an agent detects free swap space dipping below the value defined
+# below, it will find the fattest (in terms of memory) process in its
+# inventory and kill it. The value of the parameter below is expressed
+# in Megabytes.
+ducc.node.min.swap.threshold=1000000
+
+# Specify the jvm here.  If not here, java must be in your path.  If java is in neither place DUCC won't start.
+#ducc.jvm = /share/ibm-java-sr10-x86_64-60/bin/java
+
+# administrative endpoint for all ducc components
+ducc.admin.endpoint=ducc.admin.channel
+# endpoint type choices[vm,queue,topic]
+ducc.admin.endpoint.type=topic
+
+# jmx port number for Ducc process. Each Ducc process will attempt
+# to use this port for its JMX Connector. If the port is not available
+# port+1 will be used until an available port is found.
+ducc.jmx.port=2099
+
+ducc.agent.jvm.args        = -Xmx100M
+ducc.orchestrator.jvm.args = -Xmx1G
+ducc.rm.jvm.args           = -Xmx1G
+ducc.pm.jvm.args           = -Xmx1G
+ducc.sm.jvm.args           = -Xmx1G
+ducc.ws.jvm.args           = -Xmx8G
+ducc.viz.jvm.args          = -Xmx8G
+
+# ========== CLI Configuration block ==========
+#ducc.submit.threads.limit=200
+#ducc.submit.driver.jvm.args=-XX:+HeapDumpOnOutOfMemoryError
+#ducc.submit.process.jvm.args=-XX:+HeapDumpOnOutOfMemoryError
+# No timeout
+ducc.cli.httpclient.sotimeout=0
+#------------------------------------------------------------------------------
+#	off,  // CLI submit and cancel signature enforcement disabled
+#	on,   // CLI submit and cancel signature enforcement enabled (default)
+ducc.signature.required=on
+#------------------------------------------------------------------------------
+
+# ========== Web Server Configuration block ==========
+ducc.ws.configuration.class=org.apache.uima.ducc.ws.config.WebServerConfiguration
+# Optionally configure the webserver node
+#ducc.ws.node = my.node.com
+# Optionally configure the webserver IP address
+#ducc.ws.ipaddress = 192.168.3.77
+# Optionally configure the webserver IP port for HTTP requests, default is 42133
+ducc.ws.port = 42133
+# Optionally configure the webserver IP port for HTTPS requests, default is 42155
+ducc.ws.port.ssl = 42155
+# Optionally configure the webserver ssl pw for  HTTPS requests, default is quackquack
+ducc.ws.port.ssl.pw = quackquack
+# Optionally configure the webserver login session timeout, default is 30
+ducc.ws.session.minutes = 60
+# Optionally configure the webserver max history entries for each of Jobs/Reservations/Services
+ducc.ws.max.history.entries = 4096
+# <for Apache only>
+#uncomment this line and set pw for login to webserver, otherwise no pw required to login.
+#ducc.ws.authentication.pw = ducksoup
+# </for Apache only>
+#ducc.beta.host = bluej02.watson.ibm.com
+#ducc.beta.port = 42133
+# ========== Web Server Configuration block ==========
+
+# ========== Viz Configuration block ==========
+ducc.viz.configuration.class=org.apache.uima.ducc.viz.config.VizServerConfiguration
+# Configure the webserver host and IP port for HTTP requests, default is 42134
+ducc.viz.host = bluej02.watson.ibm.com
+ducc.viz.port = 42134
+#uncomment this line to record the serialized objects to ~/serializedDuccWorkMaps:
+#ducc.viz.writeSerObjsToDir = serializedDuccWorkMaps
+#uncomment this line to read and replay the serialized objects in ~/DuccsightRecordings:
+#ducc.viz.readSerObjsFromDir = DuccsightRecordings
+#this variable defines how long the hourly svg snapshots are kept in the webserver root/viz/history directory
+ducc.viz.numOfDaysToKeepSnapshots = 7
+# ========== Viz Configuration block ==========
+
+# ========== Job Driver Configuration block ==========
+ducc.jd.configuration.class=org.apache.uima.ducc.jd.config.JobDriverConfiguration
+ducc.jd.state.update.endpoint=ducc.jd.state
+# endpoint type choices[vm,queue,topic]
+ducc.jd.state.update.endpoint.type=topic
+ducc.jd.state.publish.rate=15000
+ducc.jd.queue.prefix=ducc.jd.queue.
+ducc.jd.host.class=JobDriver
+ducc.jd.host.description=Job Driver
+ducc.jd.host.memory.size=8GB
+ducc.jd.host.number.of.machines=2
+ducc.jd.host.user=System
+# ========== Job Driver Configuration block ==========
+
+
+# ========== Service Manager Configuration block ========== 
+ducc.sm.configuration.class=org.apache.uima.ducc.sm.config.ServiceManagerConfiguration
+ducc.sm.state.update.endpoint=ducc.sm.state
+ducc.sm.state.update.endpoint.type=topic
+ducc.sm.meta.ping.rate = 60000
+ducc.sm.meta.ping.stability =  10
+ducc.sm.meta.ping.timeout =  500
+ducc.sm.http.port=19989
+ducc.sm.http.node=localhost
+ducc.sm.default.linger=300
+# === END == Service Manager Configuration block ========== 
+
+# ========== Orchestrator Configuration block ==========
+ducc.orchestrator.configuration.class=org.apache.uima.ducc.orchestrator.config.OrchestratorConfiguration
+#ducc.orchestrator.checkpoint=off
+ducc.orchestrator.checkpoint=on
+#------------------------------------------------------------------------------
+#	cold, // Recover: All is lost					JD host: employ new
+#	warm, // Recover: Reservations only (default) 	JD host: employ new
+#	hot , // Recover: Reservations and Jobs, 		JD host: employ current
+ducc.orchestrator.start.type=warm
+#------------------------------------------------------------------------------
+#ducc.orchestrator.retain.completed.hours=200
+ducc.orchestrator.request.endpoint=ducc.orchestrator.request?requestTimeout=180000
+# endpoint type choices[vm,queue,topic]
+ducc.orchestrator.request.endpoint.type=queue
+#------------------------------------------------------------------------------
+ducc.orchestrator.state.update.endpoint=ducc.orchestrator.state
+# endpoint type choices[vm,queue,topic]
+ducc.orchestrator.state.update.endpoint.type=topic
+ducc.orchestrator.state.publish.rate=15000
+#------------------------------------------------------------------------------
+ducc.orchestrator.abbreviated.state.update.endpoint=ducc.orchestrator.abbreviated.state
+# endpoint type choices[vm,queue,topic]
+ducc.orchestrator.abbreviated.state.update.endpoint.type=topic
+ducc.orchestrator.abbreviated.state.publish.rate=15000
+#------------------------------------------------------------------------------
+ducc.orchestrator.maintenance.rate=60000
+#------------------------------------------------------------------------------
+#ducc.orchestrator.job.factory.classpath.order=ducc-before-user
+ducc.orchestrator.job.factory.classpath.order=user-before-ducc
+#------------------------------------------------------------------------------
+# orchestrator's jetty http port
+ducc.orchestrator.http.port=19988
+# !!!!!!!! Node where OR is running. This is needed by CLI
+# to compose a URL to access OR jetty server
+ducc.orchestrator.node=localhost
+# ========== Orchestrator Configuration block ==========
+
+# Resource Manager Configuration block
+ducc.rm.configuration.class=org.apache.uima.ducc.rm.config.ResourceManagerConfiguration
+ducc.rm.state.update.endpoint=ducc.rm.state
+# endpoint type choices[vm,queue,topic]
+ducc.rm.state.update.endpoint.type=topic
+# This is the scheduling epoch in milliseconds. We publish at the end of each epoch.
+# No longer used.
+ducc.rm.state.publish.rate = 60000
+# Number of orchestrator updates to accumulate before sheduling
+ducc.rm.state.publish.ratio = 4
+# Amount of Dram to reserve before computing shares for a machine In GB
+ducc.rm.reserved.dram = 0
+# Base size of dram quantum in Gb
+ducc.rm.share.quantum = 15
+# Implementation class for actual scheduling algorithm
+#ducc.rm.scheduler = org.apache.uima.ducc.sm.pm.orchestrator.agent.jd.rm.rm.scheduler.ClassBasedScheduler
+ducc.rm.scheduler = org.apache.uima.ducc.rm.scheduler.NodepoolScheduler
+# File defining thescheduler classes - found in DUCC_HOME/resources
+ducc.rm.class.definitions = ducc.classes
+# default number of questions if not specified in job
+ducc.rm.default.tasks = 10
+# default memory, in GB, if not specified in job
+ducc.rm.default.memory = 15
+#default number of threads, if not specified in job
+ducc.rm.default.threads = 4
+# number of node metrics heartbeats to wait for before rm starts up
+ducc.rm.init.stability = 3
+# number of missed node metrics updates to consider node down
+ducc.rm.node.stability = 5
+# which policy to use when shrinking/evicting shares - alternatively, SHRINK_BY_MACHINE
+ducc.rm.eviction.policy = SHRINK_BY_INVESTMENT
+# max nodes to initially allocate until init is complete
+ducc.rm.initialization.cap = 2
+# When true, jobs expand not all at once after init, but a bit slower, doubling each epoch
+# until max fair-share is set.  If false, jobs increase immediately to their fair share,
+# at the cost of mass evictions.
+ducc.rm.expand.by.doubling = true
+# Predict when a job will end and avoid expanding if not needed
+ducc.rm.prediction = true
+# Add this fudge factor (milliseconds) to the expansion target when using prediction
+ducc.rm.prediction.fudge = 10000
+ducc.rm.defragmentation = true
+# What is minimum number of shares before we do defrag?
+ducc.rm.fragmentation.threshold = 2
+
+# Agent Configuration block
+ducc.agent.configuration.class=org.apache.uima.ducc.agent.config.AgentConfiguration
+ducc.agent.request.endpoint=ducc.agent
+# endpoint type choices[vm,queue,topic]
+ducc.agent.request.endpoint.type=topic
+
+# Endpoint where uima as service wrapper reports status
+ducc.agent.managed.process.state.update.endpoint=ducc.managed.process.state.update
+# endpoint type choices[vm,queue,topic,socket]
+ducc.agent.managed.process.state.update.endpoint.type=socket
+# endpoint parameters which are transport specific. For socket
+# transport params are:
+#  - transferExchange=true - include Camel Exchange wrapper in a message 
+#  - synch=false - use socket transport for one-way messaging (no replies neeeded)
+ducc.agent.managed.process.state.update.endpoint.params=transferExchange=true&sync=false
+
+ducc.agent.node.metrics.publish.rate=60000
+ducc.agent.node.metrics.endpoint=ducc.node.metrics
+# endpoint type choices[vm,queue,topic]
+ducc.agent.node.metrics.endpoint.type=topic
+# Rate at which an agent publishes its process inventory
+# The agent will only publish at this rate if there are
+# changes since the last publish.
+ducc.agent.node.inventory.publish.rate=10000
+# If no changes in inventory, publish every 30 intervals defined by ducc.agent.node.inventory.publish.rate
+ducc.agent.node.inventory.publish.rate.skip=30
+ducc.agent.node.inventory.endpoint=ducc.node.inventory
+# endpoint type choices[vm,queue,topic]
+ducc.agent.node.inventory.endpoint.type=topic
+ducc.agent.launcher.thread.pool.size=10
+# enable/disable use of ducc_ling
+ducc.agent.launcher.use.ducc_spawn=true
+# specify location of ducc_ling in the filesystem
+ducc.agent.launcher.ducc_spawn_path=${DUCC_HOME}/admin/ducc_ling
+#ducc.agent.simulation.machine.config = resources/hw4.config
+# Max amount of time (in millis) agent allows the process to stop before issuing kill -9
+ducc.agent.launcher.process.stop.timeout=60000
+# Max tim in millis allowed for AE initialization. Default 2 hours 7200000.                                                                 
+ducc.agent.launcher.process.init.timeout=7200000
+# exclude the following user ids while detecting rogue processes
+ducc.agent.rogue.process.user.exclusion.filter=root,postfix,ntp,nobody,daemon,100
+#exclude the following processes while detecting rogue processes
+ducc.agent.rogue.process.exclusion.filter=sshd:,-bash,-sh,/bin/sh,/bin/bash,grep,ps
+# Fudge Factor (in terms of percantage) that agent uses to multiply a share size when 
+# determining if a JP exceeds its alloted memory, which is calculated as follows
+# (fudge factor/100)*share size + share size. If this number exceeds JPs RSS, the agent
+# kills the process.  
+ducc.agent.share.size.fudge.factor=5
+
+# Process Manager Configuration block
+ducc.pm.configuration.class=org.apache.uima.ducc.pm.config.ProcessManagerConfiguration
+ducc.pm.request.endpoint=ducc.pm
+# endpoint type choices[vm,queue,topic]
+ducc.pm.request.endpoint.type=queue
+#------------------------------------------------------------------------------
+ducc.pm.state.update.endpoint=ducc.pm.state
+# endpoint type choices[vm,queue,topic]
+ducc.pm.state.update.endpoint.type=topic
+ducc.pm.state.publish.rate=25000
+
+# UIMA AS Managed Process Configuration block
+ducc.uima-as.configuration.class=org.apache.uima.ducc.agent.deploy.uima.UimaAsServiceConfiguration
+ducc.uima-as.endpoint=ducc.job.managed.service
+# endpoint type choices[vm,queue,topic,socket]
+ducc.uima-as.endpoint.type=socket
+# endpoint parameters which are transport specific. For socket
+# transport params are:
+#  - transferExchange=true - include Camel Exchange wrapper in a message 
+#  - synch=false - use socket transport for one-way messaging (no replies neeeded)
+ducc.uima-as.endpoint.params=transferExchange=true&sync=false
+
+
+ducc.uima-as.saxon.jar.path=file:${DUCC_HOME}/lib/saxon8/saxon8.jar
+ducc.uima-as.dd2spring.xsl.path=${DUCC_HOME}/admin/dd2spring.xsl
+# custom Flow Controller to use for Ducc Job Processes
+ducc.uima-as.flow-controller.specifier=org.apache.uima.ducc.common.uima.DuccJobProcessFC
+
+
+

Propchange: uima/sandbox/uima-ducc/trunk/src/main/resources/ducc.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/sandbox/uima-ducc/trunk/src/main/saxon/saxon8.jar
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/saxon/saxon8.jar?rev=1428087&view=auto
==============================================================================
Binary file - no diff available.

Propchange: uima/sandbox/uima-ducc/trunk/src/main/saxon/saxon8.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: uima/sandbox/uima-ducc/trunk/src/main/scripts/__init__.py
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/scripts/__init__.py?rev=1428087&view=auto
==============================================================================
    (empty)

Propchange: uima/sandbox/uima-ducc/trunk/src/main/scripts/__init__.py
------------------------------------------------------------------------------
    svn:eol-style = native

Added: uima/sandbox/uima-ducc/trunk/src/main/scripts/dd2spring.bat
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/scripts/dd2spring.bat?rev=1428087&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/scripts/dd2spring.bat (added)
+++ uima/sandbox/uima-ducc/trunk/src/main/scripts/dd2spring.bat Wed Jan  2 22:13:03 2013
@@ -0,0 +1,39 @@
+@echo off
+@REM   Licensed to the Apache Software Foundation (ASF) under one
+@REM   or more contributor license agreements.  See the NOTICE file
+@REM   distributed with this work for additional information
+@REM   regarding copyright ownership.  The ASF licenses this file
+@REM   to you under the Apache License, Version 2.0 (the
+@REM   "License"); you may not use this file except in compliance
+@REM   with the License.  You may obtain a copy of the License at
+@REM
+@REM    http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM   Unless required by applicable law or agreed to in writing,
+@REM   software distributed under the License is distributed on an
+@REM   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM   KIND, either express or implied.  See the License for the
+@REM   specific language governing permissions and limitations
+@REM   under the License.
+
+@setlocal
+
+if not defined UIMA_HOME goto USAGE_UIMA
+if "%1" == "" goto usage
+goto RUN
+
+:USAGE_UIMA
+echo UIMA_HOME environment variable is not set 
+goto EXIT
+
+:usage
+echo USAGE: dd2spring source-deployment-descriptor output-file-path
+echo   for instance:  %%UIMA_HOME%%\bin\dd2spring %%UIMA_HOME%%\examples\deploy\as\Deploy_MeetingDetectorTAE.xml c:\temp\dd2so.xml
+goto EXIT
+
+:RUN
+set UIMA_CLASSPATH=%UIMA_CLASSPATH%;%UIMA_HOME%\saxon\saxon8.jar
+set UIMA_JVM_OPTS=%UIMA_JVM_OPTS% -Xmx256M 
+@call "%UIMA_HOME%\bin\runUimaClass.bat" net.sf.saxon.Transform -l -s "%1" -o "%2" "%UIMA_HOME%\bin\dd2spring.xsl" %3 %4 %5 %6 %7 %8 %9
+
+:EXIT
\ No newline at end of file

Propchange: uima/sandbox/uima-ducc/trunk/src/main/scripts/dd2spring.bat
------------------------------------------------------------------------------
    svn:eol-style = native