<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 * 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.
-->
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://web.resource.org/cc/"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="1052.3622"
   height="744.09448"
   id="svg2"
   sodipodi:version="0.32"
   inkscape:version="0.45.1"
   sodipodi:docbase="C:\simon\tuscany\java-sca-1.3\samples\helloworld-service-jms"
   sodipodi:docname="helloworld-service.svg"
   version="1.0"
   inkscape:export-filename="C:\simon\tuscany\java-sca-1.3\samples\helloworld-service-jms\helloworld-service.png"
   inkscape:export-xdpi="70.806541"
   inkscape:export-ydpi="70.806541"
   inkscape:output_extension="org.inkscape.output.svg.inkscape">
  <defs
     id="defs4" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     gridtolerance="10000"
     guidetolerance="10"
     objecttolerance="10"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="1.4"
     inkscape:cx="519.38407"
     inkscape:cy="414.63224"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     inkscape:window-width="1111"
     inkscape:window-height="783"
     inkscape:window-x="204"
     inkscape:window-y="141" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <g
       id="g2997"
       transform="matrix(0.991389,0,0,1,2.215655,0)">
      <rect
         rx="13.79423"
         ry="12.692303"
         y="192.00233"
         x="258.3114"
         height="299.99988"
         width="446.72086"
         id="rect2067"
         style="opacity:1;fill:#90baf4;fill-opacity:1;stroke:#060000;stroke-width:2.00866628;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
      <flowRoot
         id="flowRoot2954"
         xml:space="preserve"><flowRegion
           id="flowRegion2956"><rect
             y="212.66591"
             x="281.42856"
             height="61.42857"
             width="170"
             id="rect2958" /></flowRegion><flowPara
           id="flowPara2960">helloworld</flowPara></flowRoot>    </g>
    <rect
       style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:3.70037222;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
       id="rect2988"
       width="201.81923"
       height="168.4483"
       x="387.1951"
       y="262.30353"
       rx="12.207596"
       ry="13.974144" />
    <flowRoot
       xml:space="preserve"
       id="flowRoot2966"
       transform="translate(168.89697,70.2291)"><flowRegion
         id="flowRegion2968"><rect
           id="rect2970"
           width="170"
           height="61.42857"
           x="281.42856"
           y="212.66591" /></flowRegion><flowPara
         id="flowPara2972">HelloWorld</flowPara><flowPara
         id="flowPara1883">Service</flowPara><flowPara
         id="flowPara1885">Component</flowPara></flowRoot>    <path
       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       d="M 353.15921,319.32458 L 420.34042,319.32458 L 432.55517,351.3994 L 418.30463,381.00696 L 353.15921,381.00696 L 368.42768,351.3994 L 353.15921,319.32458 z "
       id="path1892" />
    <flowRoot
       xml:space="preserve"
       id="flowRoot1894"
       transform="translate(88.234846,118.54669)"
       style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"><flowRegion
         id="flowRegion1896"><rect
           id="rect1898"
           width="170"
           height="61.42857"
           x="281.42856"
           y="212.66591"
           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
         id="flowPara1900">HelloWorld</flowPara><flowPara
         id="flowPara1904">Service</flowPara><flowPara
         id="flowPara2181">JMS</flowPara></flowRoot>  </g>
</svg>
