<!DOCTYPE html>
<html lang="en">
  <head>

    <meta charset="UTF-8">
      <title>Tips and Suggestions</title>
    <meta name="description" content="Apache TomEE">
    <meta name="author" content="Apache TomEE">
    <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="./../resources/css/bootstrap.css" rel="stylesheet">
    <link href="./../resources/css/prettify.css" rel="stylesheet">
    <!--link href="./../resources/css/bootstrap-mods.css" rel="stylesheet"-->
    <link href="./../resources/css/main.css" rel="stylesheet">
    <link href="./../resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">

    <script type="text/javascript">
        var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
        var u = encodeURIComponent(""+document.URL);
    
      function fbshare () {
          window.open(
                  "http://www.facebook.com/sharer/sharer.php?u="+u,
                  'Share on Facebook',
                  'width=640,height=426');
      };
      function gpshare () {
          window.open(
                  "https://plus.google.com/share?url="+u,
                  'Share on Google+',
                  'width=584,height=385');
      };
      function twshare () {
          window.open(
                  "https://twitter.com/intent/tweet?url="+u+"&text="+t,
                  'Share on Twitter',
                  'width=800,height=526');
      };
      function pinshare () {
          window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
                  'Share on Pinterest',
                  'width=800,height=526');
      };
    </script>

    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="./../favicon.ico">
    <link rel="apple-touch-icon" href="./../resources/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="./../resources/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="./../resources/images/apple-touch-icon-114x114.png">

    <script src="./../resources/js/prettify.js" type="text/javascript"></script>
    <script src="./../resources/js/jquery-latest.js"></script>
    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script src="./../resources/js/common.js"></script>
    <script src="./../resources/js/prettyprint.js"></script>
    <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
    
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
  </head>

  <body>

    <div class="topbar" data-dropdown="dropdown">
      <div class="fill">
        <div class="container">
          <a class="brand" href="./../index.html">Apache TomEE</a>
          <ul class="nav">
              <li class="dropdown">
                  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                  Apache
                      <b class="caret"></b>
                  </a>
                  <ul class="dropdown-menu">
                     <!-- <li><a href="./../misc/whoweare.html">Who we are?</a></li> -->
                     <!-- <li><a href="./../misc/heritage.html">Heritage</a></li> -->
                     <li><a href="http://www.apache.org">Apache Home</a></li>
                     <!-- <li><a href="./../misc/resources.html">Resources</a></li> -->
                     <li><a href="./../misc/contact.html">Contact</a></li>
                     <li><a href="./../misc/legal.html">Legal</a></li>
                     <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                     <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                     <li class="divider"/>
                     <li><a href="http://www.apache.org/security">Security</a></li>
                  </ul>
              </li>
              <li><a href="./../index.html">Home</a></li>
              <li><a href="./../downloads.html">Downloads</a></li>
              <li><a href="./../documentation.html">Documentation</a></li>
              <li><a href="./../examples-trunk/index.html">Examples</a></li>
              <li><a href="./../support.html">Support</a></li>
              <li><a href="./../contribute.html">Contribute</a></li>
              <li><a href="./../security/index.html">Security</a></li>
          </ul>

            <!-- Google CSE Search Box Begins  -->
            <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
                <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
                <INPUT type="hidden" name="cof" value="FORID:0">
                <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
            </FORM>
            <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
            <!-- Google CSE Search Box Ends -->
        </div>
      </div>
    </div>

    <div class="container">
    

<div class="page-header">
    <small><a href="./../index.html">Home</a>&nbsp;&raquo&nbsp;<a href="./../dev/">Dev</a></small><br>
    <h1>Tips and Suggestions

        <div style="float: right; position: relative; bottom: -10px; ">
            <a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
            <a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
            <a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
            <a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
            <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
        </div>
    </h1>
</div>

<blockquote>
  
</blockquote>

<p><a name="TipsandSuggestions-Usefulinformationforcontributors"></a></p>

<h2>Useful information for contributors</h2>

<p><a name="TipsandSuggestions-JIRAusage"></a></p>

<h3>JIRA usage</h3>

<p>It's good to leverage JIRA, but everything that happens there should be
considered invisible for the most part and only reviewed on a random and
infrequent basis.</p>

<p>A good way to bring jira "discussion" back to the list is to follow up on the list rather than posting more jira comments.  Maybe by having the first followup comment be a link to Nabble's "forum" view of the list.  Optionally, you can Cc jira@apache.org and include "<a href="jira.html">jira</a>
 OPENEJB-XXX" anywhere in your subject line and your email will get added
as a jira comment.</p>

<p>For those looking to contribute, there are some good habits to put into
use.  We use a permission scheme called "Interactive Permissions."  It's
description has some good information:</p>

<p>Interactive Permissions</p>

<p>This permissions model differs from the Standard Permissions
 model in that people in the Contributor role must interact with
 the dev list to get to get issues assigned to them and issues
 closed. This isn't a trust issue, more that there are a few
 benefits.</p>

<ol>
<li>Active contributors hitting the list to begin and end work
 shows other people not yet active how to get involved.</li>
<li>Adds more "touch points" between Contributors and
 Committers. It should be possible to "see" the active
 contributors even if you are not watching the JIRA or SVN
 notifications. It's also hoped that the practice of
 announcing your intentions on the dev list will persist
 even when the Contributor becomes a Committer.</li>
<li>Gives Committers the opportunity to help, mentor or
 otherwise get the Contributor going in the right direction
 before a task is started; potentially resulting in fewer
 rejected patches, less waisted Contributor time, and more
 collaborative development.</li>
<li>Overall brings more communication to the dev list before
 all work is done and all decisions made giving more
 potential to collaboration.</li>
</ol>

<p>{{{{{+}If you'd like to get added to the openejb-contributors JIRA group, just
ping the list with your JIRA id and someone will add you.{+}</p>

<p><a name="TipsandSuggestions-Commits"></a></p>

<h3>Commits</h3>

<p><em>Contributed by</em>: David Blevins
+Here is an email from David Blevins explaining the things he keeps in mind
during commits.+ <em>{+}Definitely worth a read{+}{</em>}+:+</p>

<p>I generally <em>try never to reformat a file and make changes at the same
time</em> as it makes it impossible for anyone to see what I've changed. Needle
in a haystack.  I <em>try to get the reformatting as its own commit</em> before or
after I change a file.</p>

<p>A lot of times I end up tweaking a bunch of little unrelated things while
working on a bigger change. <em>I tend to like to "clear them out" in separate
commits as to isolate the big change in one commit</em>. Sometimes I'm not so
good at that and other times I'm really meticulous about it.</p>

<p><em>Include the JIRA number and title (if there is a jira)</em>.  I try never to
say "Fixed FOO-2543" all by itself.  Reviewing the last 10 changes on a
file is a super big PITA when all you see is numbers to other systems. <em>I
shoot for more or less "Fixed <issue-number> <issue-title>
<how-did-i-fix-it>"</em> Sometimes the "how did i fix it" part is obvious by
the title, other times not.  Sometimes I'm too tired and the wife is
impatiently waiting for me to leave the computer :-)
As far as jiras go, there doesn't have to be a jira for absolutely every
commit -- what's the point of that.  I <em>try to make sure there's a jira for
anything we'd definitely want to see in the release notes</em>.  Sometimes I
don't get the jira created till long after the change, towards release time
when creating the release notes :-) It's pretty easy to forget stuff that
way though :-)</p>

<p>As far as jira titles, I always <em>try and make them short and succinct</em> for
the future release notes.</p>

<p><a name="TipsandSuggestions-SVN+JIRA"></a></p>

<h3>SVN + JIRA</h3>

<p><a name="TipsandSuggestions-*Contributedby*:Vamsi"></a></p>

<h4><em>Contributed by</em>: Vamsi</h4>

<p>I had trouble figuring out if a revision is related to a JIRA and what all
revisions corresponded to a particular JIRA.  So, I always include the JIRA
number (if there is an associated JIRA) in the svn comment and once
committed, I add the revision number to the JIRA comment.  It may be a
minute or two more to do this.  But, it saves a lot of time if you ever
have to investigate a regression or if there are multiple revisions for a
JIRA you know where to find the revision numbers instead of having to mine
the svn logs.</p>

<p>Some files may be missing $Rev$ and $Date$ in the header.  Whenever I
modify an existing file, I always check if I have to add these missing
$Rev$ $Date$ and add those so that the file will have them from my next
commit onwards.</p>

<p><a name="TipsandSuggestions-*Contributedby*:DavidBlevins"></a></p>

<h4><em>Contributed by</em>: David Blevins</h4>

<blockquote>
  <p>If you put "[jira](jira.html)
   OPENEJB-XXX" anywhere in your subject line and cc jira@apache.org our
  email gets added as a comment with all '> quoted' text stripped out.
  PS: XXX is the JIRA issue number</p>
</blockquote>

<p><a name="TipsandSuggestions-Details"></a></p>

<h4>Details</h4>

<p>The following subject lines did work:
- Subject: [jira](jira.html)
 OPENEJB-670
- Subject: Some other subject prefix ([jira](jira.html)
 OPENEJB-670)
- Subject: Re: Some other subject prefix ([jira](jira.html)
 OPENEJB-670)</p>

<p>The following subject lines did <em>not</em> work:
- Subject: OPENEJB-670
- Subject: Some other subject prefix (jira: OPENEJB-670)
- Subject: Some other subject prefix (jira OPENEJB-670)
- Subject: Some other subject prefix (OPENEJB-670)</p>

<p>It appears that as long as the subject contains "[jira](jira.html)
 FOO-XXX" the email contents will be added as comments.</p>

<p>It also appears that all quoted text regardless of place in the email is
stripped out and the remaining text is added as the comment.</p>

<p>The exact email bodies, white space and all, for the "reply text" comments
above are:</p>

<p><one>
Reply text at the top.</p>

<p>-- David</p>

<p>On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>

<p>Testing adding comments via email with this subject line "Some other subject prefix ([jira](jira.html)
 OPENEJB-670)"</p>

<p></one></p>

<p><two></p>

<p>On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>

<p>Testing adding comments via email with this subject line "Some other subject prefix ([jira](jira.html)
 OPENEJB-670)"</p>

<p>Reply text at the bottom.</p>

<p>--
David</p>

<p></two></p>

<p><three>
On Aug 23, 2007, at 1:02 PM, David Blevins wrote:</p>

<p>Testing adding comments via email</p>

<p>Some reply text</p>

<p>with this subject line "Some other subject prefix ([jira](jira.html)
 OPENEJB-670)"</p>

<p>Some more reply text</p>

<p>--
David</p>

<p></three></p>

<h3>scp, ssh, and rsync examples for working with files and directories on</h3>

<p>people.apache.org</p>

<p><em>Contributed by</em>: David Blevins</p>

<p><em>copying a file to apache from locahost</em>
scp topsecret.tar.gz kmalhi@people.apache.org:
scp index.html kmalhi@people.apache.org:public_html/</p>

<p><em>copying a file from apache to localhost -- reverse of the above</em>
scp kmalhi@people.apache.org:topsecret.tar.gz ./
scp kmalhi@people.apache.org:public_html/index.html ./</p>

<p><em>copying directories</em>
scp -r kmalhi@people.apache.org:public_html ./
scp -r public_html kmalhi@people.apache.org:</p>

<p><em>When the directory exists, better to rsync</em></p>

<p><em>pull a dir from apache</em>
rsync -v -e ssh -lzrptog kmalhi@people.apache.org:public_html ./
rsync -v -e ssh -lzrptog
kmalhi@people.apache.org:/home/kmalhi/public_html ./</p>

<p><em>the two above commands do the exact same thing</em></p>

<p><em>push the same dir to apache</em>
rsync -v -e ssh -lzrptog ./public_html kmalhi@people.apache.org:
rsync -v -e ssh -lzrptog ./public_html
kmalhi@people.apache.org:/home/kmalhi/</p>

<p><em>the two above commands do the exact same thing</em></p>

<p><em>sometimes useful to execute commands over ssh (piping works too)</em>
ssh people.apache.org ls /home \| tee home-dirs-on-apache.txt
echo -e 'Hello, me\n\nHow am I doing today?' \| ssh
kmalhi@people.apache.org mail -s 'Greetings' kmalhi@apache.org</p>

<p><em>For Putty users</em>
<em>Contributed by:</em> Mohammad
I have Putty on my linux machine and it is easier to use, Putty has a
Windows version too, I issue this command to upload a file to my home dir
on people.apache.org</p>

<pre><code>pscp [[file-name]
</code></pre>

<p>| [dir]
] mnour@people.apache.org:~/</p>

<p>and if you want to access your home page, you should create a dir with the
name public_html, and then upload files to it.</p>

<p><a name="TipsandSuggestions-Acoolsubversiontip"></a></p>

<h3>A cool subversion tip</h3>

<p><em>Contributed by</em>: Jacek Laskowski.</p>

<p><em>It'll let you forget about some svn administrative commands you'd
otherwise have to type in on the command line.</em>
Edit/Add the following configurations to \~/.subversion/config:</p>

<pre><code>[miscellany]
global-ignores = *.log *.save *.o *.lo *.la #*# .*~ *~ .#* .DS_Store
build dist target *.ipr *.iml *.iws .project .classpath .settings
enable-auto-props = yes

[auto-props]
*.c = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.cpp = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.h = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.dsp = svn:eol-style=CRLF
*.dsw = svn:eol-style=CRLF
*.sh = svn:executable;svn:eol-style=native;svn:keywords=Date Revision
*.cmd = svn:mime-type=text/plain;svn:eol-style=CRLF
*.bat = svn:mime-type=text/plain;svn:eol-style=CRLF
Makefile = svn:eol-style=native;svn:keywords=Date Author Id Revision
</code></pre>

<p>HeadURL
    *.obj = svn:mime-type=application/octet-stream
    *.bin = svn:mime-type=application/octet-stream
    *.bmp = svn:mime-type=image/bmp
    *.class = svn:mime-type=application/java
    *.doc = svn:mime-type=application/msword
    *.exe = svn:mime-type=application/octet-stream
    *.gif = svn:mime-type=image/gif
    *.gz = svn:mime-type=application/x-gzip
    *.jar = svn:mime-type=application/java-archive
    *.jelly = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
    Revision
    *.jpg = svn:mime-type=image/jpeg
    *.jpeg = svn:mime-type=image/jpeg
    *.pdf = svn:mime-type=application/pdf
    *.png = svn:mime-type=image/png
    *.tgz = svn:mime-type=application/octet-stream
    *.tif = svn:mime-type=image/tiff
    *.tiff = svn:mime-type=image/tiff
    *.zip = svn:mime-type=application/zip
    *.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.xml = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
    *.ent = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.dtd = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.vsl = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.xsd = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
    *.xsl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
    *.wsdl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date
Revision
    *.htm = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date
Revision
    *.html = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date
Revision
    *.css = svn:mime-type=text/css;svn:eol-style=native;svn:keywords=Date
Revision
    *.js = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.jsp = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision
    *.java = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
    Revision
    *.properties =
svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
    Revision
    *.sql = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date
Revision</p>

<p><a name="TipsandSuggestions-Maventips"></a></p>

<h3>Maven tips</h3>

<p><em>Contributed by:</em> Jacek and David
<em>I want to make a small change in a module , for example openejb-core and
then want to build a snapshot of openejb-standalone, start the server and
test my change. What is the easiest and fastest way of doing it?</em>
Run the following from within openejb-core</p>

<pre><code>mvn -Dtest=none install
</code></pre>

<p>Now run the following from within openejb-standalone</p>

<pre><code>mvn -Dtest=none clean package
</code></pre>

<p><em>So what if I wanted to do the above in a single command?</em>
It's possible with ${module} and ${assemble} properties and <em>create a
profile or a plugin</em></p>

<p>Another option is and <em>if you're in bash</em>, here's what could be done</p>

<pre><code># camping out in assembly/openejb-standalone/
$ (cd ../../container/openejb-core &amp;&amp; mvn clean install -Dtest=skip) &amp;&amp; mvn
</code></pre>

<p>clean install &amp;&amp; ./try.sh</p>

<p>That's one command, parens and all. The first "$" is the prompt,don't type
that.  Then just edit ./try.sh to do what you're looking for on the
standalone zip.</p>

<p>The parens in bash are great as nothing done in there lasts -- at least no
changes to the environment.  So you can 'cd' around all you want and not
have to 'cd' back when done.</p>

<p>For example</p>

<pre><code>$ export FOO=hello &amp;&amp; (export FOO=byebye) &amp;&amp; echo $FOO
hello

$ cd ~ &amp;&amp; echo $PWD &amp;&amp; (cd /tmp &amp;&amp; echo $PWD) &amp;&amp; echo $PWD
/Users/dblevins
/tmp
/Users/dblevins
</code></pre>

<p>As well, several commands can be combined with '&amp;&amp;'.  Far better than just
separating commands with ';' as if one of the commands fail, the remaining
commands will not be executed.</p>

<p><em>Suggestion from Dain</em></p>

<blockquote>
  <p>&nbsp;I suggest that you always do a full build (with tests) before
  committing.  I do this even if the change is small because I have been
  burned too many times by trivial changes. At the very least I suggest you
  run</p>

<pre><code>mvn -Dtest=none clean install
</code></pre>
  
  <p>Using -Dtest=none instead of -Dmaven.test.skip=true causes maven to
  compile the test classes so you know that your change doesn't have compile
  errors.
  If you want to be thorough, run with -Dassemble.</p>
</blockquote>

<p><a name="TipsandSuggestions-JAXBUsage"></a></p>

<h3>JAXB Usage<div class="note">:title=TODO}</h3>

<p>Create a write up from here
http://www.nabble.com/jaxb-question-td18023648.html<div class="note">}</p>




        <div id="edit" class="modal hide fade in" style="display: none; ">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">x</a>

                <h3>Thank you for contributing to the documentation!</h3>
            </div>
            <div class="modal-body">
                <h4>Any help with the documentation is greatly appreciated.</h4>
                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
                <!--[if gt IE 6]>
                <h4>Internet Explorer Users</h4>
                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
                <![endif]-->

            </div>
            <div class="modal-footer">
                Do you have an Apache ID?
                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
            </div>
        </div>
        <script src="./../resources/js/bootstrap-modal.js"></script>

        <footer>
            <p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
                All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </footer>

    </div> <!-- /container -->

    <!-- Javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./../resources/js/bootstrap-dropdown.js"></script>

  </body>
</html>
