<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Brad's Blog</title>
    <link>http://bradrippe.com/serendipity/</link>
    <description>This blog is my incentive to write. I'm using it to push myself to learn more about myself.</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:" />
    <generator>Serendipity 0.8.2 - http://www.s9y.org/</generator>
    <pubDate>Tue, 16 Sep 2008 18:27:07 GMT</pubDate>

    <image>
        <url>http://bradrippe.com/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Brad's Blog - This blog is my incentive to write. I'm using it to push myself to learn more about myself.</title>
        <link>http://bradrippe.com/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>
<item>
    <title>Cinco de Mayo @ JavaOne</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/25-Cinco-de-Mayo-JavaOne.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/25-Cinco-de-Mayo-JavaOne.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=25</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;h2&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;May 4th&lt;/font&gt;&lt;/h2&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Arrived in San Francisco after a smooth flight, this flight is so quick from So Cal, you get a little reading in and before you know it you're on the ground again. Grabbed a shuttle to the hotel, &lt;a href=&quot;http://www.serranohotel.com/&quot; target=&quot;_blank&quot;&gt;Serrano Hotel&lt;/a&gt;, got my room and headed out for a little stroll to find some grub before I get an early start on Monday. &lt;img hspace=&quot;3&quot; border=&quot;1&quot; align=&quot;left&quot; vspace=&quot;3&quot; src=&quot;http://www.bradrippe.com/images/javaone/tads.jpg&quot; alt=&quot;TAD's S.F.&quot; /&gt;Grabbed a tuna melt at &lt;a href=&quot;http://www.tadssteaks-sf.com/&quot; target=&quot;_blank&quot;&gt;TAD's&lt;/a&gt; which is a few blocks away. Never been, food wasn't bad and they seemed to have a big breakfast menu. Considerably cheaper than the &lt;a href=&quot;http://www.serranohotel.com/html/Dining.html&quot; target=&quot;_blank&quot;&gt;Ponzu&lt;/a&gt;&lt;/font&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt; which is running about 30.00 a meal (maybe I'll check it out before I leave). &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;I must say, there is something about San Francisco, cool air hitting your face, homeless asking for money every corner, street musicians playing saxophone/guitar and what else they have, &lt;img hspace=&quot;3&quot; border=&quot;1&quot; align=&quot;right&quot; vspace=&quot;3&quot; src=&quot;http://www.bradrippe.com/images/javaone/band1.jpg&quot; alt=&quot;Musicians&quot; /&gt;cable cars going by, people on the move, that's really enjoyable. Every time I come here, there is some real character to this place that is like no other place I've been. Quite nice to walk the streets, to see the hustle and bussel moving through the streets being apart of it for a week is a nice change. The weather is cool jacket weather that feels great from the heat of the south lately. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;After my walk, I headed back to the hotel, prepared myself for the day to come, set the alarm and hit the hay.&lt;/font&gt;&lt;/p&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/h3&gt;&lt;h3 /&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/h3&gt;&lt;h3 /&gt;&lt;h3 /&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/h3&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;May 5th - Cinco de Mayo&lt;/font&gt;&lt;/h3&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;img hspace=&quot;3&quot; border=&quot;1&quot; align=&quot;left&quot; vspace=&quot;3&quot; src=&quot;http://www.bradrippe.com/images/javaone/moscone1.jpg&quot; /&gt;Got up at the break of dawn, 6:10 am (that's early for me), headed over to Moscone North, grabbed my registration and went to the lower level to pick up my materials for the conference. It's been since 2004 since I've visited Moscone and JavaOne, it looks similar to previous years, it always looked good and ready to deliver. This year is no exception. I guess I was so anxious to get over to the center and get my learn on that I had about two hours before my first Session, Developing Enterprise Applications with the Spring Framework, with two backpacks in tow I headed back to the hotel to drop some of this mess off. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Headed back, I grab a coffee and a piece of Banana Nut Bread from Starbucks, then it's over to the &lt;a href=&quot;http://www.intercontinentalsanfrancisco.com/&quot; target=&quot;_blank&quot;&gt;Intercontinental Hotel&lt;/a&gt; (Nice hotel) for the session. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/h3&gt;&lt;h3 /&gt;&lt;h3&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Spring Framework by Chris Richardson&lt;/font&gt;&lt;/h3&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Since I've used &lt;a href=&quot;http://springframework.org/&quot; target=&quot;_blank&quot;&gt;Spring Framework&lt;/a&gt; with &lt;a href=&quot;http://www.uportal.org&quot; target=&quot;_blank&quot;&gt;uPortal &lt;/a&gt;and some of the other projects at work, the first half of this session was simply a reminder of configuration possibilities and reasons why to use the framework, like the removal of DRY (Don't Repeat Yourself) code, easy testing with Mock Objects (&lt;a href=&quot;http://chrisrichardson.net/&quot; target=&quot;_blank&quot;&gt;Chris&lt;/a&gt; used &lt;a href=&quot;http://www.jmock.org/index.html&quot; target=&quot;_blank&quot;&gt;JMock 2&lt;/a&gt;), removal of dependancies. Chris also covered xml configuration and annotation based configuration, even covered &lt;a href=&quot;http://javaconfig.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Java Config&lt;/a&gt; for configuring Spring. I guess I must have skipped the Bean Scopes somewhere along the way because Chris' explanation of them eye opening, kind of woke me up (hey you know you can do this?)&lt;/font&gt;&lt;/p&gt;&lt;h4&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Bean Scopes&lt;/font&gt;&lt;/h4&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Singleton &lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;The default and most common&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Only create a single instance&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Use for stateless beans&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Prototype&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Create a new instance each time you need one&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;When its injected or requested by getBean()&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Use for stateful beans&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt; &lt;br /&gt;Request and Session&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Use in web applications for request/session-specfic state&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;The bean lives for the lifetime of request or session&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Referencing &lt;/font&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;beans are injected with a proxy&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;link href=&quot;file:///C:\Users\brippe\AppData\Local\Temp\msohtmlclip1\01\clip_filelist.xml&quot; rel=&quot;File-List&quot; /&gt;&lt;link href=&quot;file:///C:\Users\brippe\AppData\Local\Temp\msohtmlclip1\01\clip_themedata.thmx&quot; rel=&quot;themeData&quot; /&gt;&lt;link href=&quot;file:///C:\Users\brippe\AppData\Local\Temp\msohtmlclip1\01\clip_colorschememapping.xml&quot; rel=&quot;colorSchemeMapping&quot; /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;&lt;br /&gt;
 &lt;w:WordDocument&gt;&lt;br /&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;&lt;br /&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;&lt;br /&gt;
  &lt;w:TrackMoves/&gt;&lt;br /&gt;
  &lt;w:TrackFormatting/&gt;&lt;br /&gt;
  &lt;w:PunctuationKerning/&gt;&lt;br /&gt;
  &lt;w:ValidateAgainstSchemas/&gt;&lt;br /&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;&lt;br /&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;&lt;br /&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;&lt;br /&gt;
  &lt;w:DoNotPromoteQF/&gt;&lt;br /&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;&lt;br /&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;&lt;br /&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;&lt;br /&gt;
  &lt;w:Compatibility&gt;&lt;br /&gt;
   &lt;w:BreakWrappedTables/&gt;&lt;br /&gt;
   &lt;w:SnapToGridInCell/&gt;&lt;br /&gt;
   &lt;w:WrapTextWithPunct/&gt;&lt;br /&gt;
   &lt;w:UseAsianBreakRules/&gt;&lt;br /&gt;
   &lt;w:DontGrowAutofit/&gt;&lt;br /&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;&lt;br /&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;&lt;br /&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;&lt;br /&gt;
   &lt;w:DontVertAlignInTxbx/&gt;&lt;br /&gt;
   &lt;w:Word11KerningPairs/&gt;&lt;br /&gt;
   &lt;w:CachedColBalance/&gt;&lt;br /&gt;
  &lt;/w:Compatibility&gt;&lt;br /&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;&lt;br /&gt;
  &lt;m:mathPr&gt;&lt;br /&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;&lt;br /&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;&lt;br /&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;&lt;br /&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;&lt;br /&gt;
   &lt;m:dispDef/&gt;&lt;br /&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;&lt;br /&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;&lt;br /&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;&lt;br /&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;&lt;br /&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;&lt;br /&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;&lt;br /&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;br /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;&lt;br /&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;&lt;br /&gt;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;&lt;br /&gt;
  LatentStyleCount=&quot;267&quot;&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;&lt;br /&gt;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;&lt;br /&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;&lt;br /&gt;
 &lt;/w:LatentStyles&gt;&lt;br /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;&lt;br /&gt;
&lt;!--&lt;br /&gt;
 /&lt;strong&gt; Font Definitions &lt;/strong&gt;/&lt;br /&gt;
 @font-face&lt;br /&gt;
	{font-family:Wingdings;&lt;br /&gt;
	panose-1:5 0 0 0 0 0 0 0 0 0;&lt;br /&gt;
	mso-font-charset:2;&lt;br /&gt;
	mso-generic-font-family:auto;&lt;br /&gt;
	mso-font-pitch:variable;&lt;br /&gt;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}&lt;br /&gt;
@font-face&lt;br /&gt;
	{font-family:&quot;Cambria Math&quot;;&lt;br /&gt;
	panose-1:2 4 5 3 5 4 6 3 2 4;&lt;br /&gt;
	mso-font-charset:0;&lt;br /&gt;
	mso-generic-font-family:roman;&lt;br /&gt;
	mso-font-pitch:variable;&lt;br /&gt;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}&lt;br /&gt;
@font-face&lt;br /&gt;
	{font-family:Calibri;&lt;br /&gt;
	panose-1:2 15 5 2 2 2 4 3 2 4;&lt;br /&gt;
	mso-font-charset:0;&lt;br /&gt;
	mso-generic-font-family:swiss;&lt;br /&gt;
	mso-font-pitch:variable;&lt;br /&gt;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}&lt;br /&gt;
 /&lt;strong&gt; Style Definitions &lt;/strong&gt;/&lt;br /&gt;
 p.MsoNormal, li.MsoNormal, div.MsoNormal&lt;br /&gt;
	{mso-style-unhide:no;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	mso-style-parent:&quot;&quot;;&lt;br /&gt;
	margin-top:0in;&lt;br /&gt;
	margin-right:0in;&lt;br /&gt;
	margin-bottom:10.0pt;&lt;br /&gt;
	margin-left:0in;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
a:link, span.MsoHyperlink&lt;br /&gt;
	{mso-style-priority:99;&lt;br /&gt;
	color:blue;&lt;br /&gt;
	text-decoration:underline;&lt;br /&gt;
	text-underline:single;}&lt;br /&gt;
a:visited, span.MsoHyperlinkFollowed&lt;br /&gt;
	{mso-style-noshow:yes;&lt;br /&gt;
	mso-style-priority:99;&lt;br /&gt;
	color:purple;&lt;br /&gt;
	mso-themecolor:followedhyperlink;&lt;br /&gt;
	text-decoration:underline;&lt;br /&gt;
	text-underline:single;}&lt;br /&gt;
pre&lt;br /&gt;
	{mso-style-priority:99;&lt;br /&gt;
	mso-style-link:&quot;HTML Preformatted Char&quot;;&lt;br /&gt;
	margin:0in;&lt;br /&gt;
	margin-bottom:.0001pt;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:10.0pt;&lt;br /&gt;
	font-family:&quot;Courier New&quot;;&lt;br /&gt;
	mso-fareast-font-family:&quot;Times New Roman&quot;;}&lt;br /&gt;
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph&lt;br /&gt;
	{mso-style-priority:34;&lt;br /&gt;
	mso-style-unhide:no;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	margin-top:0in;&lt;br /&gt;
	margin-right:0in;&lt;br /&gt;
	margin-bottom:10.0pt;&lt;br /&gt;
	margin-left:.5in;&lt;br /&gt;
	mso-add-space:auto;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst&lt;br /&gt;
	{mso-style-priority:34;&lt;br /&gt;
	mso-style-unhide:no;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	mso-style-type:export-only;&lt;br /&gt;
	margin-top:0in;&lt;br /&gt;
	margin-right:0in;&lt;br /&gt;
	margin-bottom:0in;&lt;br /&gt;
	margin-left:.5in;&lt;br /&gt;
	margin-bottom:.0001pt;&lt;br /&gt;
	mso-add-space:auto;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle&lt;br /&gt;
	{mso-style-priority:34;&lt;br /&gt;
	mso-style-unhide:no;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	mso-style-type:export-only;&lt;br /&gt;
	margin-top:0in;&lt;br /&gt;
	margin-right:0in;&lt;br /&gt;
	margin-bottom:0in;&lt;br /&gt;
	margin-left:.5in;&lt;br /&gt;
	margin-bottom:.0001pt;&lt;br /&gt;
	mso-add-space:auto;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast&lt;br /&gt;
	{mso-style-priority:34;&lt;br /&gt;
	mso-style-unhide:no;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	mso-style-type:export-only;&lt;br /&gt;
	margin-top:0in;&lt;br /&gt;
	margin-right:0in;&lt;br /&gt;
	margin-bottom:10.0pt;&lt;br /&gt;
	margin-left:.5in;&lt;br /&gt;
	mso-add-space:auto;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
span.HTMLPreformattedChar&lt;br /&gt;
	{mso-style-name:&quot;HTML Preformatted Char&quot;;&lt;br /&gt;
	mso-style-priority:99;&lt;br /&gt;
	mso-style-unhide:no;&lt;br /&gt;
	mso-style-locked:yes;&lt;br /&gt;
	mso-style-link:&quot;HTML Preformatted&quot;;&lt;br /&gt;
	mso-ansi-font-size:10.0pt;&lt;br /&gt;
	mso-bidi-font-size:10.0pt;&lt;br /&gt;
	font-family:&quot;Courier New&quot;;&lt;br /&gt;
	mso-ascii-font-family:&quot;Courier New&quot;;&lt;br /&gt;
	mso-fareast-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-hansi-font-family:&quot;Courier New&quot;;&lt;br /&gt;
	mso-bidi-font-family:&quot;Courier New&quot;;}&lt;br /&gt;
.MsoChpDefault&lt;br /&gt;
	{mso-style-type:export-only;&lt;br /&gt;
	mso-default-props:yes;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-fareast-font-family:Calibri;&lt;br /&gt;
	mso-fareast-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;&lt;br /&gt;
	mso-bidi-font-family:&quot;Times New Roman&quot;;&lt;br /&gt;
	mso-bidi-theme-font:minor-bidi;}&lt;br /&gt;
.MsoPapDefault&lt;br /&gt;
	{mso-style-type:export-only;&lt;br /&gt;
	margin-bottom:10.0pt;&lt;br /&gt;
	line-height:115%;}&lt;br /&gt;
@page Section1&lt;br /&gt;
	{size:8.5in 11.0in;&lt;br /&gt;
	margin:1.0in 1.0in 1.0in 1.0in;&lt;br /&gt;
	mso-header-margin:.5in;&lt;br /&gt;
	mso-footer-margin:.5in;&lt;br /&gt;
	mso-paper-source:0;}&lt;br /&gt;
div.Section1&lt;br /&gt;
	{page:Section1;}&lt;br /&gt;
 /&lt;strong&gt; List Definitions &lt;/strong&gt;/&lt;br /&gt;
 @list l0&lt;br /&gt;
	{mso-list-id:836962690;&lt;br /&gt;
	mso-list-type:hybrid;&lt;br /&gt;
	mso-list-template-ids:-839511386 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}&lt;br /&gt;
@list l0:level1&lt;br /&gt;
	{mso-level-number-format:bullet;&lt;br /&gt;
	mso-level-text:&amp;#61623;;&lt;br /&gt;
	mso-level-tab-stop:none;&lt;br /&gt;
	mso-level-number-position:left;&lt;br /&gt;
	text-indent:-.25in;&lt;br /&gt;
	font-family:Symbol;}&lt;br /&gt;
ol&lt;br /&gt;
	{margin-bottom:0in;}&lt;br /&gt;
ul&lt;br /&gt;
	{margin-bottom:0in;}&lt;br /&gt;
--&gt;&lt;br /&gt;
&lt;/style&gt;&lt;!--[if gte mso 10]&gt;&lt;br /&gt;
&lt;style&gt;&lt;br /&gt;
 /&lt;strong&gt; Style Definitions &lt;/strong&gt;/&lt;br /&gt;
 table.MsoNormalTable&lt;br /&gt;
	{mso-style-name:&quot;Table Normal&quot;;&lt;br /&gt;
	mso-tstyle-rowband-size:0;&lt;br /&gt;
	mso-tstyle-colband-size:0;&lt;br /&gt;
	mso-style-noshow:yes;&lt;br /&gt;
	mso-style-priority:99;&lt;br /&gt;
	mso-style-qformat:yes;&lt;br /&gt;
	mso-style-parent:&quot;&quot;;&lt;br /&gt;
	mso-padding-alt:0in 5.4pt 0in 5.4pt;&lt;br /&gt;
	mso-para-margin-top:0in;&lt;br /&gt;
	mso-para-margin-right:0in;&lt;br /&gt;
	mso-para-margin-bottom:10.0pt;&lt;br /&gt;
	mso-para-margin-left:0in;&lt;br /&gt;
	line-height:115%;&lt;br /&gt;
	mso-pagination:widow-orphan;&lt;br /&gt;
	font-size:11.0pt;&lt;br /&gt;
	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;&lt;br /&gt;
	mso-ascii-font-family:Calibri;&lt;br /&gt;
	mso-ascii-theme-font:minor-latin;&lt;br /&gt;
	mso-hansi-font-family:Calibri;&lt;br /&gt;
	mso-hansi-theme-font:minor-latin;}&lt;br /&gt;
&lt;/style&gt;&lt;br /&gt;
&lt;![endif]--&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;p style=&quot;margin-left: 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Next, he&lt;br /&gt;
covered Transactional Services in Spring. Transactional services offered by&lt;br /&gt;
Spring simplify users code by removing the repeated code. Spring allows you to&lt;br /&gt;
write metadata to create transactional POJOs. Via the help of Aspect Oriented&lt;br /&gt;
Programming (AOP) and Spring your code can be greatly reduced. Before I get&lt;br /&gt;
into the Spring AOP Id like to cover a few AOP basics.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-left: 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;AOP Basics&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Joinpoint&lt;o:p /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; Well-defined point during the execution of your application&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; You can insert additional logic at Joinpoint's&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; Examples of Jointpoint's&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; Method invocation&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; Class initialization&lt;br /&gt;&lt;br /&gt;
 Object initialization&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Advice&lt;o:p /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; The code that is executed at a particular joinpoint&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; Types of Advice&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; before advice, which excutes before joinpoint&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; after advice, which executes after joinpoint&lt;br /&gt;&lt;br /&gt;
 around advice, which executes around joinpoint&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Pointcuts&lt;o:p /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; A collection of joinpoints that you use to define when advice&lt;br /&gt;
should be executed&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; By creating pointcuts, you gain fine-grained control over how&lt;br /&gt;
you apply advice to the components&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; Example&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; A typical joinpoint is a method invocation.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; A typical pointcut is a collection of all method invocations in&lt;br /&gt;
a particular class&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; Pointcuts can be composed in complex relationships to further&lt;br /&gt;
constrain when advice is executed&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;
&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt;&lt;br /&gt;
&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 0.5in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Aspects&lt;o:p /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 0.0001pt 1in; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;#9679; An aspect is the combination of advice and pointcuts&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;For more on Spring AOP see&lt;br /&gt;
&lt;a href=&quot;http://www.javapassion.com/j2ee/springaopbasics.pdf&quot;&gt;http://www.javapassion.com/j2ee/springaopbasics.pdf&lt;/a&gt;.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Spring wraps objects with&lt;br /&gt;
proxies that can execute extra advice before method invocation, after invoking&lt;br /&gt;
a method, or instead of a method. Transactions are managed through &lt;a href=&quot;http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/transaction/interceptor/TransactionInterceptor.html&quot;&gt;TransactionInterceptor&lt;/a&gt;.&lt;br /&gt;
This class manages transactions and intercepts method calls then delegates to&lt;br /&gt;
the &lt;a href=&quot;http://static.springframework.org/spring/docs/1.1.5/api/org/springframework/transaction/PlatformTransactionManager.html&quot;&gt;PlatformTransactionManager&lt;/a&gt;.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;By wrapping objects, your&lt;br /&gt;
components are unaware of the transactional code that is executed when your&lt;br /&gt;
object interact with other objects what are using Springs AOP Transaction&lt;br /&gt;
Management. Management is configured through an &lt;a href=&quot;http://static.springframework.org/spring/docs/2.5.x/reference/new-in-2.html#new-in-2-aop-configuration&quot;&gt;xml&lt;br /&gt;
configuration&lt;/a&gt; or via Spring Annotations. Check out &lt;/span&gt;&lt;i&gt;&amp;lt;context:annotation-config/&amp;gt;&lt;br /&gt;
&lt;/i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;for&lt;br /&gt;
&lt;a href=&quot;http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-annotation-config&quot;&gt;annotation&lt;br /&gt;
configuration&lt;/a&gt;. &lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Spring allows programmers to remove tightly coupled, duplicated and tangled code with code that is easier to maintain, test, and develop.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span&gt;  &lt;/span&gt;Chris did a good job of explain how Spring can help. The AOP/Transaction management was a real eye opener and features that I dont currently use. The dependency injection part of spring has been something Ive been using for quite some time. Im not going to cover every aspect of the session but Ive tried to highlight some of the key points that Chris when over in the session. Additional projects that Chris is involved with are:&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/aop-ood&quot;&gt;http://code.google.com/p/aop-ood&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/projecttrack&quot;&gt;http://code.google.com/p/projecttrack&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/aridpojos&quot;&gt;http://code.google.com/p/aridpojos&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/ormunit&quot;&gt;http://code.google.com/p/ormunit&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/umangite&quot;&gt;http://code.google.com/p/umangite&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/cloudtools&quot;&gt;http://code.google.com/p/cloudtools&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Web 2.0 Leveraging the Project jMaki and Google Web Toolkits for&lt;br /&gt;
Rapid Website Development&lt;o:p /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;jMaki&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;This session started with&lt;br /&gt;
Evan Troyka discussing &lt;a href=&quot;https://ajax.dev.java.net/&quot;&gt;jMaki&lt;/a&gt;. jMaki is&lt;br /&gt;
a wrapper for different ajax libraries like dojo and Yahoo ui. jMaki uses jsp&lt;br /&gt;
tags, JSF components, php libraries, and phobos implementations for different&lt;br /&gt;
deployments. A jMaki component consists of three different files, component.js,&lt;br /&gt;
component.htm, and a component.css. An optional file is the config.json. This&lt;br /&gt;
is a central location for configuration of javascript libraries, API keys, CSS&lt;br /&gt;
dependencies, jmaki Glue handler mappings, mapping extensions, and theme&lt;br /&gt;
information. jMaki glue lets you wire together jMaki widgets via a&lt;br /&gt;
publish/subscribe event model. This was interesting to see how you can use&lt;br /&gt;
different components from ajax libraries via one technology like JSF or JSP tags.&lt;br /&gt;
Some additional information on jMaki can be found at:&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://forums.java.net/jive/forum.jspa?forumID=96&quot;&gt;http://forums.java.net/jive/forum.jspa?forumID=96&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://weblogs.java.net/blog/carlavmott&quot;&gt;http://weblogs.java.net/blog/carlavmott&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://weblogs.java.net/blog/gmurray71&quot;&gt;http://weblogs.java.net/blog/gmurray71&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;a href=&quot;http://weblogs.java.net/blog/arungupta&quot;&gt;http://weblogs.java.net/blog/arungupta&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;GWT&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;The real value (for me) in&lt;br /&gt;
this session was the second half where David Geary went over &lt;a href=&quot;http://code.google.com/webtoolkit/&quot;&gt;GWT&lt;/a&gt; Toolkit. Ive messed with&lt;br /&gt;
this a little but I havent really dug into the project much. Wow was this&lt;br /&gt;
helpful to see the possibilities with GWT. GWT is a java library that allows&lt;br /&gt;
you to compile Swing like code into JavaScript. This eliminates the need to&lt;br /&gt;
test code for cross browser compatibility or learn JavaScript altogether. Some&lt;br /&gt;
of the features of GWT:&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpFirst&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Debug client-side UI in Java code&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Make remote method calls to a servlet&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Incorporate Javascript with native methods&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Use widgets and implement new ones&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Use the browser history mechanism&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Integration with JUnit&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; text-indent: -0.25in; line-height: normal;&quot; class=&quot;MsoListParagraphCxSpLast&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-family: Symbol; color: black;&quot;&gt;&lt;span&gt;·&lt;span&gt;        &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Internationalization&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;More on GWT later. You can&lt;br /&gt;
also look at http://cooland usefulgwt.com.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Ive been trying finish&lt;br /&gt;
this damn entry the last two days, there was just so much information at&lt;br /&gt;
JavaOne, it make it difficult to cover all that was there. To think Im still&lt;br /&gt;
on Monday, Java University, before the conference session really started.&lt;o:p /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;margin-bottom: 0.0001pt; line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;line-height: normal;&quot; class=&quot;MsoNormal&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;2&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Really today was jammed with&lt;br /&gt;
material, each session was 3 hours long and we stopped after 8pm. I was toast,&lt;br /&gt;
tons of information and it's only the beginning. I really hope to finish the&lt;br /&gt;
blog but I'd like to get some sleep for tomorrow is another day of learning.&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;3&quot;&gt;Really today was jammed with material, each session was 3 hours long and we stopped after 8pm. I was toast, tons of information and it's only the beginning. I really hope to finish the blog but I'd like to get some sleep for tomorrow is another day of learning.&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;    </content:encoded>
    <pubDate>Mon, 05 May 2008 23:45:34 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/25-guid.html</guid>
    </item>
<item>
    <title>JavaOne - May 5 - May 9th</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/24-JavaOne-May-5-May-9th.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/24-JavaOne-May-5-May-9th.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=24</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;b&gt;JavaOne 2008&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;img vspace=&quot;4&quot; hspace=&quot;4&quot; border=&quot;2&quot; align=&quot;left&quot; src=&quot;http://java.sun.com/javaone/images/2008/pavilion_scene1.jpg&quot; alt=&quot;JavaOne 2008&quot; /&gt;&lt;font size=&quot;2&quot; face=&quot;arial,helvetica,sans-serif&quot;&gt;Without actually thinking anyone would read this, I've been trying to spend a little more time writing in my blog. But work and life in general seem to get in the way. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;arial,helvetica,sans-serif&quot;&gt;Good News is on the horizon! I'm about to close on a new home with my squeeze, Lisa, and I'm off to JavaOne this week. I know, can't get much better than that! It's been since 05, the last time I went to San Fran to visit Duke and the city by the bay, so I'm going to try to make the most of it.  Major changes to Java and other languages based on the JVM have arrived so the goal is to check some of those languages out (&lt;a href=&quot;http://grails.codehaus.org/&quot; target=&quot;_blank&quot;&gt;Grails&lt;/a&gt;, &lt;a href=&quot;http://jruby.codehaus.org/&quot;&gt;JRuby&lt;/a&gt;). Also I want to get more information on &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=296&quot; target=&quot;_blank&quot;&gt;JSR 296&lt;/a&gt;. I've started a development in that area and I'm curious to see what is going on with that. I will for sure check out some &lt;a href=&quot;http://springframework.org/&quot; target=&quot;_blank&quot;&gt;Spring &lt;/a&gt;session as it's moving to 2.5 release, so I'm sure there is valuable information there. As I'll need that because I've been messing with the new &lt;a href=&quot;http://www.springframework.org/node/626&quot; target=&quot;_blank&quot;&gt;Spring Web Flow 2.0.0 RC1&lt;/a&gt; release. I also have a session on &lt;a href=&quot;https://ajax.dev.java.net/&quot; target=&quot;_blank&quot;&gt;jMaki&lt;/a&gt;, not to sure what to expect, but it should be interesting as I haven't been messing much with the Ajax stuff, so this seem like a good time to check it out of some hot clam chowder. Other notables are a session on &lt;a href=&quot;https://jxta-jxse.dev.java.net/servlets/NewsItemView?newsItemID=5464&quot; target=&quot;_blank&quot;&gt;JXTA&lt;/a&gt; which I haven't seen nor heard much from in years (I did my thesis using this technology). I'm quite interested to see if anything changed there (Wait as I'm getting the link, I see there is a new version 2.5 that has been released in November 07).&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot; face=&quot;arial,helvetica,sans-serif&quot;&gt;So as I prepare for my trip, I'm looking forward to all the information I can cram into my brain for the week and feel comfortable knowing that all the paperwork is in place for the new pad, for when I return, we can have a smooth transition from our current location to the new one. (Let's hope these damn gas prices give)&lt;/font&gt; &lt;/p&gt;&lt;p /&gt;    </content:encoded>
    <pubDate>Fri, 02 May 2008 16:02:50 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/24-guid.html</guid>
    </item>
<item>
    <title>MAVEN DEPENDENCIES</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/23-MAVEN-DEPENDENCIES.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/23-MAVEN-DEPENDENCIES.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=23</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;&lt;b&gt;MAVEN DEPENDENCIES&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Dependency scope is used to limit the transitivity of a depedency, and also &lt;br /&gt;
to affect the classpath used for various build tasks.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;There are 5 scopes available:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;compile&lt;/b&gt; &lt;br /&gt;This is the default scope, used if none is specified. &lt;br /&gt;
Compile dependencies are available in all classpaths of a project. Furthermore, &lt;br /&gt;
those dependencies are propagated to dependent projects. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;provided&lt;/b&gt; &lt;br /&gt;This is much like &lt;tt&gt;compile&lt;/tt&gt; , but indicates you &lt;br /&gt;
expect the JDK or a container to provide the dependency at runtime. For example, &lt;br /&gt;
when building a web application for the Java Enterprise Edition, you would set &lt;br /&gt;
the dependency on the Servlet API and related Java EE APIs to scope &lt;br /&gt;
&lt;tt&gt;provided&lt;/tt&gt; because the web container provides those classes. This scope &lt;br /&gt;
is only available on the compilation and test classpath, and is not transitive. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;runtime&lt;/b&gt; &lt;br /&gt;This scope indicates that the dependency is not required &lt;br /&gt;
for compilation, but is for execution. It is in the runtime and test classpaths, &lt;br /&gt;
but not the compile classpath. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;test&lt;/b&gt; &lt;br /&gt;This scope indicates that the dependency is not required for &lt;br /&gt;
normal use of the application, and is only available for the test compilation &lt;br /&gt;
and execution phases. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;system&lt;/b&gt; &lt;br /&gt;This scope is similar to &lt;tt&gt;provided&lt;/tt&gt; except that you &lt;br /&gt;
have to provide the JAR which contains it explicitly. The artifact is always &lt;br /&gt;
available and is not looked up in a repository. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;&lt;b&gt;import&lt;/b&gt; &lt;br /&gt;This scope is only used on a dependency of type &lt;br /&gt;
&lt;tt&gt;pom&lt;/tt&gt; in the &lt;tt&gt;&amp;lt;dependencyManagement&amp;gt;&lt;/tt&gt; section. It indicates &lt;br /&gt;
that the specified POM should be replaced with the dependencies in that POM's &lt;br /&gt;
&lt;tt&gt;&amp;lt;dependencyManagement&amp;gt;&lt;/tt&gt; section. Since they are replaced, &lt;br /&gt;
dependencies with a scope of &lt;tt&gt;import&lt;/tt&gt; do not actually participate in &lt;br /&gt;
limiting the transitivity of a dependency.&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope&quot;&gt;For more&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;
    </content:encoded>
    <pubDate>Thu, 17 Apr 2008 10:21:06 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/23-guid.html</guid>
    </item>
<item>
    <title>iPhone Totally Rocks</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/22-iPhone-Totally-Rocks.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/22-iPhone-Totally-Rocks.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=22</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;&lt;img vspace=&quot;3&quot; hspace=&quot;3&quot; border=&quot;0&quot; align=&quot;left&quot; src=&quot;http://www.newlaunches.com/entry_images/0107/10/apple-iphone.jpg&quot; /&gt;Ok after years of procrastination, I've finally broken down and gotten a new phone, but not just any phone, I got an iPhone. After hearing all the hype and the expense I've fought the urge the purchase a new phone for some time. My previous phone was the Treo 650. Now I guess this phone serviced its purpose, but the interface had issues and I could never really tell how many voice messages were in my inbox without calling. The internet of the phone, was pretty much unusable. &lt;/p&gt;&lt;p&gt;Now for the iPhone, this thing is cool. Really cool! I can tell when people call, leave voicemail, sms, and the internet with the 802.11b/g capability, forget it! This thing rocks! I didn't think one little device would be so much help and distraction all in one little package. I mean I really don't spend that much time away from the computer, and now with this little device, its really difficult to not take it to lunch and dinner and read what's up in the world wide web. &lt;/p&gt;&lt;p&gt;I'd really like to write some code for this thing, but I don't own a mac, but this thing may just cause me to breakdown an purchase yet another &lt;a href=&quot;http://www.apple.com&quot;&gt;Apple&lt;/a&gt; product. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;
    </content:encoded>
    <pubDate>Wed, 16 Apr 2008 11:57:59 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/22-guid.html</guid>
    </item>
<item>
    <title>Luminis IV &amp; uPortal</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/21-Luminis-IV-uPortal.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/21-Luminis-IV-uPortal.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=21</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;Random Note:&lt;/p&gt;&lt;p&gt;Luminis IV is built on top of uPortal 2.5.3.&lt;/p&gt;&lt;br /&gt;
    </content:encoded>
    <pubDate>Wed, 16 Apr 2008 11:30:29 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/21-guid.html</guid>
    </item>
<item>
    <title>Log Time No Post</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/20-Log-Time-No-Post.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/20-Log-Time-No-Post.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=20</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;&lt;b&gt;ForFiles&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Just a quick note to self, deleting Apache files older than 60 days:&lt;/p&gt;&lt;p&gt;forfiles /p f:\Apache\Apache\logs\ /s /m ssl.log /d -60 /c &amp;quot;cmd /c del @file&amp;quot;&lt;/p&gt;&lt;p&gt;Oh yeah! Blog more often!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;    </content:encoded>
    <pubDate>Tue, 15 Apr 2008 12:40:06 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/20-guid.html</guid>
    </item>
<item>
    <title>uPortal 2.6.0</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/19-uPortal-2.6.0.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/19-uPortal-2.6.0.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=19</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;p&gt;Quick Notes for me:&lt;/p&gt;&lt;p&gt;Tidy.jar has dom implementations that must be removed. These class file conflict with the dom implementation that is in JDK 1.6. Quick fix to remove the org.w3c.dom class files from the tidy.jar.&lt;/p&gt;&lt;p&gt;xml-apis.jar must be removed as well for the same reason. &lt;/p&gt;&lt;p&gt;CAS Setup Information&lt;/p&gt;&lt;p&gt;Testing remember to generate a cert with name localhost.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ja-sig.org/wiki/display/UPM/01+CAS+Authentication+for+the+Impatient&quot;&gt;&lt;br /&gt;
http://www.ja-sig.org/wiki/display/UPM/01+CAS+Authentication+for+the+Impatient&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ja-sig.org/products/cas/server/ssl/&quot;&gt;SSL Issues&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.mail-archive.com/cas-dev@tp.its.yale.edu/msg00089.html&quot;&gt;Proxy Validation Issues&lt;/a&gt;&lt;/p&gt;&lt;p /&gt;    </content:encoded>
    <pubDate>Fri, 24 Aug 2007 13:55:12 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/19-guid.html</guid>
    </item>
<item>
    <title>SD West 2007 - Random Notes</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/18-SD-West-2007-Random-Notes.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/18-SD-West-2007-Random-Notes.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=18</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;March 21, 2007  Day One&lt;br /&gt;Session 1: &lt;span&gt;       &lt;/span&gt;Effective Aspect-Oriented Programming  Ron Bodkin&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;mailto:rbodkin@newaspects.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;rbodkin@newaspects.com&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;http://www.eclipse.org/aspectj&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Eclipse with AspectJ Plugin or Spring AOP or JBoss also have tools for eclipse as well.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Pointcut defines the join point where we want to call the aspect. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;public aspect MeteringPolicy {&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                    &lt;/span&gt;pointcut useTitle() :&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                                    &lt;/span&gt;execution(public void Song.play()) ||&lt;br /&gt;&lt;span&gt;                                    &lt;/span&gt;execution(public void Song.showLyrics());&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                    &lt;/span&gt;after() returning : useTitle() {&lt;br /&gt;&lt;span&gt;                                        &lt;/span&gt;MeteringService.trackUse();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                    &lt;/span&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Terms: advice method (do the following thing), pointcut&lt;br /&gt;ajc&lt;span&gt;  &lt;/span&gt;links the aspects to the java objects. You need to use ajc at some point to grab the pointcuts in the java code. However, Spring will use proxies that are called instead of requiring the use of ajc (aspects compiler) to modify the bytecode.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Used for tracing, monitoring, handling boiler plate code, used for understanding your system better.&lt;br /&gt;Example:&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;call(* Remote+.*(..) throws RemoteException);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;This example can be used to handle all the RemoteExceptions so the programmer doesnt have to write the code to handle RemoteExceptions. This removes the boiler plate code of the try/catch in every call that throws a RemoteException.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Advice: Start small, only a few should write the aspects. Incremental adoption works best&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Random Notes:&lt;br /&gt;AspectJ 5 (latest, most flexible)&lt;br /&gt;Spring AOP  handles a subset of the JAspects advices handles&lt;br /&gt;JBoss AOP&lt;br /&gt;Check out Glassbox for performance monitoring and problems. Uses load time weaving. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session2: Crystal Clear: A Human Powered Methodology for Small Teams  Alistair Cockburn&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Talk about agile coming out well or not well. Whats the difference?&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;Crystal Clear  Questions&lt;/b&gt;&lt;br /&gt;Small teams hasnt been working well&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;Nothing written down&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;specs not clear&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;more changes than people can do&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;resource-starved project  reqts /it infrastru / &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Techniques for getting max benefit from limited resources&lt;br /&gt;Guidelines to use agile&lt;br /&gt;When Customer/sponsor&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Successful projects where listening to the people (people-centric) and constantly modify the methodology.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Different people do different things. Cant drive a methodology down someones throat. Different projects and people use different methods (pair programming, uml design, test driven development, etc). happy people ship, happy code! People like to be told what to do, so they wont do it. Each person has to say what they are going to do.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;i&gt;Crystals purpose&lt;/i&gt;: Keep people from hurting each other, keeping each other informed&lt;br /&gt;&lt;i&gt;Crystals nature&lt;/i&gt;: A set of conventions that get updated&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Six people or less. Give them a whiteboard, let them ship code, and youre almost done.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Thinks of each project as a game. &lt;br /&gt;Primary Goal: Deliver the project&lt;br /&gt;Secondary Goal: &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;From the seven principles of methodology design&lt;br /&gt;Face-to-face communication is the cheapest and fastest channel for exchanging information&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Recommended Reading &lt;br /&gt;&lt;b&gt;The Goal (Paperback) &lt;/b&gt;&lt;br /&gt;by &lt;/font&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/search-handle-url/102-8700057-1012958?%5Fencoding=UTF8&amp;search-type=ss&amp;index=books&amp;field-author=Eliyahu%20M.%20Goldratt&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Eliyahu M. Goldratt&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt; (Author), &lt;/font&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/search-handle-url/102-8700057-1012958?%5Fencoding=UTF8&amp;search-type=ss&amp;index=books&amp;field-author=Jeff%20Cox&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Jeff Cox&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt; (Author)&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Frequent Delivery&lt;br /&gt;Osmotic Communication  no private offices, communication is easy&lt;br /&gt;Reflective Improvement  What are we doing, how are we doing it.&lt;span&gt;  &lt;/span&gt;How do we improve.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Personal Safety&lt;br /&gt;Focus  dont work on two or more projects&lt;br /&gt;Easy Access to Expert Users&lt;br /&gt;Technical Environment with &lt;span&gt;                                       &lt;/span&gt;(agile places this first, thats ok)&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;Frequent integration&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;Automated testing&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;Config management&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Critical technique in Crystal: Slide 20 Reflection Workshop. Discuss and determine what things youre going to try. Try these are things you can control and do.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Sets projects based on color. Clear, Orange, Yellow, etc.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session 3:&lt;span&gt;  &lt;/span&gt;&lt;span&gt;      &lt;/span&gt;An Overview of TR1  Scott Meyers&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;mailto:smeyers@aristeia.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;smeyers@aristeia.com&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.aristeia.com/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.aristeia.com&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Technical Report 1  Future standard of functionality to be in standard C++&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Currently in the std::tr1 eventually maybe in the std namespace. You must have a TR1 conformant library for this to work. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;New Functionality: C99 Compatibility&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;TR1 is a specification. This is an interface specification not an implementation. To understand the functionality in TR1: &lt;/font&gt;&lt;a href=&quot;http://www.aristeia.com/EC3E/TR1_info.html&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.aristeia.com/EC3E/TR1_info.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;10 of the 14 libraries in TR1 are modeled on Boost libraries. Boost will bring its libraries into conformance with TR1.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;gcc 4.0  has some of the TR1. To get it, you can use Boost library, it has 11 of the 14. You can also look at Dinkumware.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Smart pointers declared in the header &amp;lt;memory&amp;gt;. Check out auto_ptr and shared_ptr. this is a raw pointer. Be careful when returning shared pointers to yourself. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Operators: static_pointer_cast, dynamic_pointer_cast, const_pointer_cast&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;Relational: ==, !=, &amp;lt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;Output: &amp;lt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;auto_ptr solves the problem of exclusive ownship. shared_ptr solves the problem of shared ownship. auto_ptr always deletes its resource.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;tr1::weak_ptrs cant keep resources alive. Solve the problem of dangling pointers and cyclic references.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;TR1 tells you nothing about where these features are thread safe.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;HashTables&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Regular Expressions&lt;br /&gt;declared &amp;lt;regex&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Pete Beckers Book on TR1. Slide page 54.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;Session4: Puzzlers&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;i&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Review the slides&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Examine - Autoboxing, varargs, generics&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;March 23, 2007&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session1: Whats coming in Java6  Jason Hunter&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;StaX  pull parse, doesnt store the whole document in memory, good good.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Annotations&lt;br /&gt;Thrid Party&lt;span&gt;  &lt;/span&gt;@Nullable, @notNull  IntelliJ&lt;br /&gt;@Test, @Before, @After in JUnit 4&lt;br /&gt;@Immutable, @ThreadSafe, @NotThreadSafe, @GuardedBy from Java Concurrency in Practice&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Java 5  apt (annotation processor tool)&lt;br /&gt;Java 6  (standardized) java processor&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Core HTTP Server&lt;br /&gt;Mini-Servlets, in com.sun.net.httpserver. Designed to support JMX and JAX-RPC. Only used for their own purposes.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;New Deque = Double Ended Queue&lt;br /&gt;acts like a Queue + Stack&lt;br /&gt;Navigable Sets and Maps, lets you get near missed items. Im looking for this, if its not there, give me the one right above it or the one right below it.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Randomized Skip Lists - &lt;/font&gt;&lt;a href=&quot;http://en.wekepedia.org/wiki/Skip_list&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://en.wekepedia.org/wiki/Skip_list&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;A linked list capable of large forward jumps&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Removing features in Java 6&lt;br /&gt;Aimed at reducing the Java Runtime jar. The first thing to remove is javax.sound.midi, it has a target.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;Java 7&lt;/b&gt;&lt;br /&gt;Just thinking about stuff right now.&lt;br /&gt;JAM to JARS. Java Modules proposed in JSR 277&lt;br /&gt;Use the metadata to discover, load, and check module&lt;br /&gt;Also superpackages, package families, which has special rights to classes in the superpackage&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Dynamic Languages  new invokedynmaic bytecode&lt;br /&gt;JSR 292 would let you invoke methods in the absensce of static type information&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;NIO 2  JSR 203&lt;br /&gt;A new filesystem API&lt;br /&gt;Asynchronous filesystem calls&lt;br /&gt;Better tie socket channels and sockets&lt;br /&gt;(Fuse) - &lt;/font&gt;&lt;a href=&quot;http://fuse.sourceforge.net/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://fuse.sourceforge.net/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Javadoc Update&lt;br /&gt;More easily identify factory methods&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Non-API features&lt;br /&gt;Putting XML in as a standard data type&lt;br /&gt;Strings in switch statements&lt;br /&gt;Comparisons for enums&lt;br /&gt;Closures?&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;http://java.sun.com/avase/6/docs/api&lt;br /&gt;http://planetjdk.org&lt;br /&gt;get slides @ &lt;/font&gt;&lt;a href=&quot;mailto:jhunter@marklogic.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;jhunter@marklogic.com&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session2:&lt;span&gt;             &lt;/span&gt;Extreme Web Caching  Jason Hunter&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;javap -public -classpath jsse.jar java.lang.Class &lt;br /&gt;Determines the public interface&lt;br /&gt;&lt;span style=&quot;color: black;&quot;&gt;Based on HTTP Caching &amp;amp; Cache-Busting for Content Publishers by Michael Radwin&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Client&lt;br /&gt;GET /index.html HTTP/1.1&lt;br /&gt;Host: &lt;/font&gt;&lt;a href=&quot;http://www.server.com/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;www.server.com&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Server&lt;br /&gt;HTTP/1.1 200 OK&lt;br /&gt;Date: &lt;br /&gt;Last-Modified: &lt;br /&gt;Content-Length: 2750 (Good for keep alive, this helps the client know when its the clients turn to talk again)&lt;br /&gt;Connection: close&lt;br /&gt;Content-Type: text/html&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Side note: JSPs buffer 8K by default&lt;br /&gt;expires tag means the jpg or whatever is still go until that date.&lt;span&gt;  &lt;/span&gt;If-Modified-Since revalidates that the content hasnt changed. If the content hasnt been modified the server returns status code 304, not-modified-since, but doesnt return the content the user requested.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: -0.25in;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;1.&lt;/font&gt;&lt;span style=&quot;font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Use Cache-Control: private for personalized content&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Issue with cookies, sending a cookie say from jane back to john. So you should use Cache-Control header. Cache-Control: private&lt;br /&gt;Disallows shared caching, allows private (browser)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Cache-Control: public&lt;br /&gt;Explicitly allows shared caching&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p style=&quot;text-indent: -0.25in;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;2.&lt;/font&gt;&lt;span style=&quot;font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;&lt;font size=&quot;3&quot;&gt; &lt;/font&gt;&lt;/span&gt;&lt;font size=&quot;3&quot;&gt;Implement Images Never Expire policy&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Dictate that images (icons, logos) once published never change&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;        &lt;/span&gt;Set Expires header 10 years in the future&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Check  &lt;/font&gt;&lt;a href=&quot;http://use.perl.org/~geoff/journal/22049&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://use.perl.org/~geoff/journal/22049&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p /&gt;&lt;p style=&quot;text-indent: -0.25in;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;3.&lt;/font&gt;&lt;span style=&quot;font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Cookie-free TLD for Static&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Use a separate domain for static content&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;        &lt;/span&gt;A domain without cookies&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;        &lt;/font&gt;&lt;/span&gt;&lt;a href=&quot;http://www.server.com/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;www.server.com&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt; for html&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;        &lt;/span&gt;static.server.net for images, PDFs, etc&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p style=&quot;text-indent: -0.25in;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;4.&lt;/font&gt;&lt;span style=&quot;font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Apache Defaults for CSS/JS&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Rely on If-Modified-Since request header&lt;br /&gt;No special configuration needed&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;How can a server know when servlet content changes?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;        &lt;/span&gt;The .class timestamp is meaningless&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Help the ser with getLastModified()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;public long getLastModified(HttpServletRequest req) {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;        &lt;/span&gt;Return datamodified.getTime();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Called before doGet(), possibly avoiding doGet()&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p style=&quot;text-indent: -0.25in;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;5.&lt;/font&gt;&lt;span style=&quot;font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;Random URL strings&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt 0.25in;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Add javascript to create random url&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Point all the ad servers to localhost 127.0.0.1, this removes all the adds when browsing&lt;/font&gt;&lt;a href=&quot;http://www.everythingisnt.com/hosts.html&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.everythingisnt.com/hosts.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;http://www.mnot.net/cacheability/&lt;/font&gt;&lt;a href=&quot;http://www.mnot.net/cache_docs/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.mnot.net/cache_docs/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;http://www.radwin.org/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.radwin.org&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;  hes blog&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session3: Java Persistence API Overview  Cay Horstmann&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;San Jose State University&lt;br /&gt;Influenced by Hibernate, Oracle TopLink, JDO&lt;br /&gt;Annotation the fields in the class, not the getter and setter. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;There are five requirements for an Entity&lt;br /&gt;Annotated with @Entity&lt;br /&gt;primary key&lt;br /&gt;no-arg constructor&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Persistence context = set of managed entities&lt;br /&gt;Entity manager = object that manages persistence context (find, persist, createQuery, )&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Need the persistence.xml file. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Can persist inner classes and final classes&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;With eclipse wait for Dali and WTP.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Address issues of refactoring the objects. What happens if we change the foreign key relationship or we modify the way that relationship between entities are modified. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;What happens with the cache? If we get a result from a query and then modify the table so we have a new entity. If I query again the cache returns the original result set before the insert. How do we get around this?&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Away around naming objects like User this is a sql reserved word. However, Hibernate has a method of getting around this does JPA. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Java Persistence Query Language (JPQL)&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Lazy Fetching&lt;br /&gt;Fetching is eager by default for @OneToOne, @ManyToOne. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;To use an EJB container or not? Use annotations to get EJBs and a handle on the EntityManager.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session4: Whats New in XML in Java 5 and 6 &lt;span&gt; &lt;/span&gt; Elliotte Rusty Harold&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;JAXP&lt;br /&gt;DOM 3&lt;br /&gt;Java XPath API&lt;br /&gt;Java Validation API&lt;br /&gt;Java XML Digital Signature API&lt;br /&gt;StAX&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Java 5 added DOM Level 3 support&lt;br /&gt;Remember, getTextContent() and setTextContent(String textContent) cuts dozens of lines out of programs. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;User Data  a user-defined callback class that is invoked when a node is cloned, imported, etc.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Bootstrapping&lt;br /&gt;DOM2 has no implementation-independent means to create a new Document object&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;DOMImplementation impl = DOMImplementationImpl.getDOMImplemenation();&lt;br /&gt;Document fibonacci = impl.createDocument();&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;To read a document, must import&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;org.w3c.dom.ls.*;&lt;br /&gt;org.w3c.dom.bootstrap.*;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Checkout LSParserFilter, org.w3c.dom.ls, for removing parts of the document when reading.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Writing LSSerializer serializer = implls.createLSSerializer();&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;LSOutput output = implls.createLSOutput();&lt;br /&gt;blah blah&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;XPath&lt;br /&gt;Query without detailed DOM navigation&lt;br /&gt;eg. //book[author=Neal Stephenson]/title&lt;br /&gt;javax.xml.xpath package&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Java Validation API&lt;br /&gt;package javax.xml.validation&lt;br /&gt;JDK bundles W3C schema support&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;http://www.cafeconleche.org/slides/sd2007west/java5xml/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.cafeconleche.org/slides/sd2007west/java5xml/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;BOF  Interviewing in Silicon Valley&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;http://www.techsmith.com/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.techsmith.com&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;mailto:htdye@linkedin.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;htdye@linkedin.com&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;paultima.blogspot.com&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Interesting bit of information about interviewing for jobs in Silicon Valley, from Google perspective. Discussion included a log of emphasis on algorithms and Big O runtime for algorithms. How would you sort a collection of A, for example, why? Advice was to focus on some open source projects that are interesting. This helps when potential employers look at your resume they see that youre interested in the community and making contributions to projects. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;March 23, 2007&lt;br /&gt;Session1: Everything New in ASP.NET 2.0 - Stanfield&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;This session was a complete waste of time. The speaker was fumbling around, finished early and started his next presentation on AJAX. In addition, the presentation is available online from Microsoft, so the session was completely unhelpful.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session2: Using Visual C++ To Light Up on Windows Vista  Nikola Dubar&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Microsoft is trying to make development on Vista easier for C++ developers. Includes WCF, and WPF. The demonstration utilizes Visual C++ Orcas. Second part of the talk will be improvements to MFC. Check the article, Top 10 Ways To Light Up.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Orcas is coming out pretty soon. &lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;User Access Control &lt;br /&gt;Reliability and manageability&lt;br /&gt;&lt;span&gt;                &lt;/span&gt;Restart Manager  saves the applications state, shuts the app down, updates the application code and restarts the application.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;Application Recovery and Restart  register callback functions, if the app dies this function is called to restart the application. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;Function Discovery  enables apps to discover and manage lists of devices or objects sorted by functionality or class. Available before but it is more organized now, a standardize method for retrieving this information.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;span&gt;                &lt;/span&gt;Cancelable I/O  &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Customer Feedback Loop&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Windows Quality Online Service, register with ms and get your app dumps when they crash. The apis provide ability to customize reports for your dumps. &lt;span&gt; &lt;/span&gt;Check this out!&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Windows Vista style guidelines&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;New Common Item Dialogs&lt;br /&gt;Windows Vista Wizard Framework  PSH_AEROWIZARD&lt;br /&gt;Checkout comctl32.dll&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;WPF  Rich library of controls  core component of .NET 3.0&lt;br /&gt;No native code alternative&lt;br /&gt;WPF, WCF, XPF  is only available in managed code&lt;br /&gt;MFC part is all native&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Organize and Search&lt;br /&gt;All mechanisms are exposed via COM interfaces&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;WCF  Windows Communication Foundation&lt;br /&gt;Helps with evolving client app into service oriented applications&lt;br /&gt;Single programming model&lt;br /&gt;Part of .Net Framework&lt;br /&gt;No native code alternative&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Mix mode allows you to use native C++ and call the .NET framework for features that use .NET features through C++ CLI.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Three modes &lt;br /&gt;clr (native and managed)&lt;br /&gt;-clrpure (all managed code)&lt;br /&gt;-clr (verifiable code)&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;RSS library&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Document data&lt;br /&gt;XML-based document packaging&lt;br /&gt;XPS&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Additional libraries for Mobile Devices&lt;br /&gt;Network Awareness APIs&lt;br /&gt;Sync Center&lt;br /&gt;Power Management&lt;br /&gt;Window SlideShow&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;10 new features in Vista only 3 are managed code the others are native code&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;VC++ Orcas&lt;/b&gt;&lt;br /&gt;UAC-ready&lt;br /&gt;Base Address Randomization  prevents hacker for getting address of dll. Hacker has to guess where dlls are loaded. &lt;br /&gt;Data Execution Protection doesnt allow buffer overflow&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot; /&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;JPA  possible app rss reader that persists content&lt;br /&gt;Or java accessing the .net apis for rss feeds etc&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;Session4: How to Build a Scalable Multiplexed Serer With NIO  Ron Hitchens&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;mailto:ron.hitchens@marklogic.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;ron.hitchens@marklogic.com&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;mailto:ron@ronsoft.com&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;ron@ronsoft.com&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://javanio.info/&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://javanio.info&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;How to use NIO to build a server. Lower level i/o that is more sufficient for io than the java.io package. Gives access to some of the lower features that the OS has for I/O.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;Three ways for multiplexing in a server. &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Poll each socket&lt;/b&gt;  not very good cause we have to check each socket for a request. If theres one there process it. This could starve other processes&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;Thread-per-socket&lt;/b&gt;  this is how java worked before. Overhead of managing many threads.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;b&gt;Readiness selection (NIO)&lt;/b&gt;selects the sockets that are ready, requires OS and JAVA VM support&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;The Reactor Pattern  Google for Douglas Schmidt*&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;a href=&quot;http://www.cs.wustl.edu/~schmidt/patterns-ace.html&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot;&gt;http://www.cs.wustl.edu/~schmidt/patterns-ace.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;Calibri&quot;&gt;&lt;i&gt;From the UML Pattern&lt;/i&gt;Demultiplexer  knows which sockets are ready. This is the object that answers that question.&lt;br /&gt;Event on a handle is some data has arrived&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;NOTE: buffer bytes and reconstitute the structure. Structured messages will be fragmented across the network.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Handler cant write directly to the socket. This is by design it should only read and write to queues. Handler checks the queue to see if it do something with data. If there isnt enough data the handler replies back to the Dispatcher, I dont have enough data. Once all the data is there, the handler will do its thing with it.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;Old model is thread per socket, bad. This new model is one thread per message.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;NIO Reactor UML  blue objects are part of the jdk&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0in 0in 10pt;&quot;&gt;&lt;font size=&quot;3&quot; face=&quot;Calibri&quot; color=&quot;#000000&quot;&gt;OReilly  Ray Lischners C++ in a Nutshell&lt;/font&gt;&lt;/p&gt;    </content:encoded>
    <pubDate>Tue, 27 Mar 2007 22:12:21 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/18-guid.html</guid>
    </item>
<item>
    <title>Gradebook TODO:: What's Next?</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/17-Gradebook-TODO-Whats-Next.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/17-Gradebook-TODO-Whats-Next.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=17</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;img vspace=&quot;5&quot; hspace=&quot;5&quot; border=&quot;0&quot; align=&quot;right&quot; src=&quot;http://www.filesland.com/companies/AcademSoft/Wasp-Static-Error-Checker-15551.jpg&quot; /&gt;Now I have a good portion of the &lt;a href=&quot;http://www.sakaiproject.org/&quot; target=&quot;_blank&quot;&gt;Gradebook app&lt;/a&gt; working in &lt;a href=&quot;http://www.uportal.org&quot; target=&quot;_blank&quot;&gt;uPortal&lt;/a&gt;. Next I need to add the export in Excel and CSV formats to the instructor view, but before I got that far, I'm going to  add data from a live course. I mean the course information with the roster. The student view needs to be tested and examined before I can do anything else. Once I have the course and students loaded I'll return to export features, then I should be ready for demo day... Just wanted to write a quick note to myself, so I remember where I'm at on this. It took me all week to get to work on this, so I didn't want to forget my train of thought.&lt;p&gt;If I get the chance, I'd like to start working on my course material for my &lt;a href=&quot;http://staffwww.fullcoll.edu/brippe/csci123&quot; target=&quot;_blank&quot;&gt;C++ course&lt;/a&gt;. Well I better find some way to wind down so that I can start another day tomorrow.&lt;/p&gt;&lt;br /&gt;
    </content:encoded>
    <pubDate>Fri, 01 Dec 2006 01:36:32 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/17-guid.html</guid>
    </item>
<item>
    <title>Gradebook Portlet URL Errors</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/16-Gradebook-Portlet-URL-Errors.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/16-Gradebook-Portlet-URL-Errors.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=16</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;p&gt;&lt;img vspace=&quot;3&quot; hspace=&quot;4&quot; border=&quot;0&quot; align=&quot;left&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/uportal_gradebook1.gif&quot; /&gt;Now that I have the application (Sakai Gradebook) working as a portlet, I had to modify a few more things that the portlet framework didn't like. &lt;/p&gt;&lt;p&gt;1) I was receiving Portlet Exceptions on resources. &lt;font face=&quot;courier new,courier,monospace&quot;&gt;assignmentDetails.jsp&lt;/font&gt; and &lt;font face=&quot;courier new,courier,monospace&quot;&gt;courseGradeDetails.jsp&lt;/font&gt; were receiving exceptions when trying to retrieve the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;dhtmlpopup.css&lt;/font&gt; and the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;dhtmlphpup.js&lt;/font&gt;. The jsps use relative links to reference these files. I had to add the portlet context to the references to stop the exception from being thrown. &lt;/p&gt;&lt;p&gt;org.apache.pluto.core.impl.PortletResponseImpl.encodeURL() checks for absolute urls. If the resource is reference via a relative url, a PortletException is thrown.&lt;/p&gt;&lt;p&gt;2) Beans defined in the ui project are defined with request scope. These beans had to be modified to use session scope. Since the request is split in an action request and a render request, when the jsps are being rendered, there aren't any request variables in scope. This is solved by changing the bean scope to session and using my RoleListener to handle removing the bean upon new requests. Example, when assignment details are requested for each homework assignment, upon the initial request a session bean is created say for homework #1. Now if we make a new request to view details of homework #2, the session bean exists from the initial request and homework #1 is displayed again. Thus the session bean needs to be removed to create a new bean with the data pertaining to homework #2. Again this works fine if we're using the application as a standalone application, but since the app has been pushed into a portlet framework, uportal, the requests don't work as designed.&lt;/p&gt;&lt;p&gt;3) The popup for gradebook logs doesn't show the close icon due to it being specified as a relative link. I've changed the the following line:&lt;/p&gt;&lt;font size=&quot;2&quot; color=&quot;#7f007f&quot;&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot; color=&quot;#000000&quot;&gt;closeIconUrl=&amp;quot;&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot; color=&quot;#000000&quot;&gt;dhtmlpopup/dhtmlPopClose.gif&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot; color=&quot;#000000&quot;&gt;to&lt;/font&gt;&lt;/p&gt;&lt;font size=&quot;2&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;p&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;closeIconUrl=&amp;quot;${pageContext.request.contextPath}&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;dhtmlpopup/dhtmlPopClose.gif&amp;quot;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot;&gt;in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;gradingEventLogs.jspf&lt;/font&gt; file. I also modified the tag library descriptor, &lt;font face=&quot;courier new,courier,monospace&quot;&gt;gb-jsp.tld&lt;/font&gt;, changing the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;rtexprvalue&lt;/font&gt; to true so that the attribute &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;closeIconUrl&lt;/font&gt;&amp;quot; accepts and evaluates the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;${pageContext.request.contextPath}&lt;/font&gt; expression.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&lt;p align=&quot;left&quot;&gt;&amp;lt;&lt;font color=&quot;#3f7f7f&quot;&gt;attribute&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;br /&gt;    &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;name&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#000000&quot;&gt;closeIconUrl&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;name&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;br /&gt;    &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;required&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#000000&quot;&gt;false&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;required&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;br /&gt;    &lt;/font&gt;&lt;font color=&quot;#008080&quot;&gt;&lt;font size=&quot;2&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;rtexprvalue&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;strong&gt;&lt;font size=&quot;3&quot; color=&quot;#000000&quot;&gt;true&lt;/font&gt;&lt;/strong&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;rtexprvalue&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;attribute&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; color=&quot;#000000&quot;&gt;Now the eventLogs popup shows correctly in the portal. One minor issue was that the popup was showing up lower than I liked so I removed the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;dhtmlGetPageYOffset()&lt;/font&gt; from the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;dhtmlPopupShow()&lt;/font&gt; function so that it displays the popup where the log image is clicked on (this is located in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;dhtmlPopup.js&lt;/font&gt;).&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; color=&quot;#000000&quot;&gt;4) **** Is another issue with the portlet getting the proper context for tags in the myfaces library. In the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;addAssignment.jsp&lt;/font&gt;, it uses the inputCalendar component. When this component is loaded it initialize the calendar. However, the component needs &lt;font face=&quot;courier new,courier,monospace&quot;&gt;popcalendar_init.js&lt;/font&gt; and the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;popcalendar.js&lt;/font&gt; to initialize the calendar component. I assume that the issue is due to the application being in the portal context while trying to get the js files from that context and not the portlet context. I'll have to look into this later. However, a quick fix is to add the two js files to the js directory in the ui package in the Gradebook, then add references to the to files in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;assignmentEditing.jspf&lt;/font&gt; file after the description text in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;h:panelGroup/&amp;gt;&lt;/font&gt; tag.&lt;/font&gt;&lt;/p&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; color=&quot;#000000&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;p align=&quot;left&quot; /&gt;&lt;p /&gt;&lt;/font&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;f:verbatim&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;script &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#7f007f&quot;&gt;src&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;=&amp;quot;${pageContext.request.contextPath}&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;/js/popcalendar_init.js&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&amp;quot; &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#7f007f&quot;&gt;type&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;=&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;script&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&amp;lt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;script &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#7f007f&quot;&gt;src&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;=&amp;quot;${pageContext.request.contextPath}&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;/js/popcalendar.js&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&amp;quot; &lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#7f007f&quot;&gt;type&lt;/font&gt;&lt;font size=&quot;2&quot;&gt;=&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#2a00ff&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;script&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#3f7f7f&quot;&gt;f:verbatim&lt;/font&gt;&lt;/font&gt;&lt;font size=&quot;2&quot; color=&quot;#008080&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;    </content:encoded>
    <pubDate>Fri, 01 Dec 2006 01:35:00 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/16-guid.html</guid>
    </item>
<item>
    <title>Integrating Sakai Gradebook in Uportal</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/15-Integrating-Sakai-Gradebook-in-Uportal.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/15-Integrating-Sakai-Gradebook-in-Uportal.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=15</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;img vspace=&quot;0&quot; hspace=&quot;0&quot; border=&quot;0&quot; align=&quot;left&quot; src=&quot;http://www.sakaiproject.org/images/stories/sakaiLogo_files/logoslate160x89.jpg&quot; /&gt;&lt;p&gt;As you may or may not know I've been trying to integrate &lt;a href=&quot;http://bugs.sakaiproject.org/confluence/display/SG2X/Home&quot;&gt;Sakai's Gradebook applicaiton&lt;/a&gt; into &lt;a href=&quot;http://uportal.org&quot;&gt;uportal&lt;/a&gt;. I thought this may save some resources by not having to have a full implementation of Sakai in place to take advantage of the code that is available. Even if this is the end result of this whole exploration. At least I was able to get up close and personal with Sakai. &lt;/p&gt;&lt;p&gt;So to begin with I copied the standalone-app in the sakai gradebook src and decided to modify my code in a new directory instead of messing with the standalone app. Thus, I called the new directory, &amp;quot;uportal-app&amp;quot;. Then I added a portlet.xml file containing the following:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;portlet-app xmlns=&amp;quot;http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd&amp;quot;&lt;br /&gt;    version=&amp;quot;1.0&amp;quot;&lt;br /&gt;    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;    xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd&amp;quot;&amp;gt;&lt;br /&gt; &lt;br /&gt;    &amp;lt;portlet&amp;gt;&lt;br /&gt;        &amp;lt;description xml:lang=&amp;quot;en&amp;quot;&amp;gt;Gradebook Portlet&amp;lt;/description&amp;gt;&lt;br /&gt;        &amp;lt;portlet-name&amp;gt;gradebook&amp;lt;/portlet-name&amp;gt;&lt;br /&gt;        &amp;lt;display-name xml:lang=&amp;quot;en&amp;quot;&amp;gt;gradebook&amp;lt;/display-name&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt; &amp;lt;portlet-class&amp;gt;&lt;b&gt;org.apache.myfaces.portlet.MyFacesGenericPortlet&lt;/b&gt;&amp;lt;/portlet-class&amp;gt;&lt;br /&gt;                &lt;br /&gt;        &amp;lt;init-param&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;default-view&amp;lt;/name&amp;gt;&lt;br /&gt;               &amp;lt;value&amp;gt;&lt;b&gt;/index.jsp&lt;/b&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;        &amp;lt;/init-param&amp;gt;       &lt;br /&gt;        &amp;lt;expiration-cache&amp;gt;-1&amp;lt;/expiration-cache&amp;gt;        &lt;br /&gt;        &amp;lt;supports&amp;gt;&lt;br /&gt;            &amp;lt;mime-type&amp;gt;text/html&amp;lt;/mime-type&amp;gt;&lt;br /&gt;            &amp;lt;portlet-mode&amp;gt;view&amp;lt;/portlet-mode&amp;gt;&lt;br /&gt;            &amp;lt;portlet-mode&amp;gt;help&amp;lt;/portlet-mode&amp;gt;&lt;br /&gt;        &amp;lt;/supports&amp;gt;        &lt;br /&gt;        &amp;lt;portlet-info&amp;gt;&lt;br /&gt;            &amp;lt;title&amp;gt;gradebook&amp;lt;/title&amp;gt;&lt;br /&gt;            &amp;lt;short-title&amp;gt;gradebook&amp;lt;/short-title&amp;gt;&lt;br /&gt;            &amp;lt;keywords&amp;gt;portlet, gradebook&amp;lt;/keywords&amp;gt;&lt;br /&gt;        &amp;lt;/portlet-info&amp;gt;&lt;br /&gt;    &amp;lt;/portlet&amp;gt;&lt;br /&gt;   &amp;lt;!-- Fullerton College Attributes --&amp;gt;     &lt;br /&gt;   &amp;lt;user-attribute&amp;gt;&lt;br /&gt;        &amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;username&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;/user-attribute&amp;gt;&lt;br /&gt;    &amp;lt;user-attribute&amp;gt;&lt;br /&gt;        &amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;displayName&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;/user-attribute&amp;gt;&lt;br /&gt;    &amp;lt;user-attribute&amp;gt;&lt;br /&gt;        &amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;uPortalTemplateUserName&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;/user-attribute&amp;gt;&lt;br /&gt;    &amp;lt;user-attribute&amp;gt;&lt;br /&gt;        &amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;memberOf&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;/user-attribute&amp;gt;&lt;br /&gt;&amp;lt;/portlet-app&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;There are two things to take note of here. One is the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;portlet-class&lt;/font&gt; which is located in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;myfaces.jar&lt;/font&gt; that is provided in the application to begin with. The second is the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;index.jsp&lt;/font&gt; file which I provide for the instructors/students to choose which grade/gradebook they want to work with first (more on this later). The standalone application has an index.htm file with essentially logs the user into the application. The html file won't work in the portlet beside the fact that if the user is seeing the gradebook application in uportal, they are already logged in. &lt;/p&gt;&lt;p&gt;Next, I had to add modifications to the web.xml file. Here I define a new servlet to respond to the portlet context:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;        &amp;lt;servlet-name&amp;gt;gradebook&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;        &amp;lt;servlet-class&amp;gt;org.apache.pluto.core.PortletServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;        &amp;lt;init-param&amp;gt;&lt;br /&gt;          &amp;lt;param-name&amp;gt;portlet-class&amp;lt;/param-name&amp;gt;&lt;br /&gt;          &amp;lt;param-value&amp;gt;org.apache.myfaces.portlet.MyFacesGenericPortlet&amp;lt;/param-value&amp;gt;&lt;br /&gt;        &amp;lt;/init-param&amp;gt;&lt;br /&gt;        &amp;lt;init-param&amp;gt;&lt;br /&gt;          &amp;lt;param-name&amp;gt;portlet-guid&amp;lt;/param-name&amp;gt;&lt;br /&gt;          &amp;lt;param-value&amp;gt;sakai-gradebook-uportal-app.gradebook&amp;lt;/param-value&amp;gt;&lt;br /&gt;        &amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;and the mapping to the servlet&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;gradebook&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;url-pattern&amp;gt;/gradebook/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Issue 1&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Once the application is built, the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;index.jsp &lt;/font&gt;should respond. However, the Filters that are defined in the web.xml no longer work when the application is converted to a portlet. &lt;font face=&quot;courier new,courier,monospace&quot;&gt;AuthnFilter &lt;/font&gt;and &lt;font face=&quot;courier new,courier,monospace&quot;&gt;AuthzFilter &lt;/font&gt;will not be called from the normal execution of the portlet. These filters are defined in the following classes:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.tool.gradebook.ui.standalone.AuthnFilter&lt;br /&gt;org.sakaiproject.tool.gradebook.ui.RoleFilter&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;The workaround&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I defined two &lt;font face=&quot;courier new,courier,monospace&quot;&gt;PhaseListener &lt;/font&gt;classes which provided similar functionality to the two filters: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.tool.gradebook.jsf.AuthnPhaseListener&lt;/font&gt; and &lt;strike&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.tool.gradebook.jsf.RolePhaseListener&lt;/font&gt;&lt;/strike&gt;. I placed the code in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;beforePhase()&lt;/font&gt; method for each of the classes. These classes provide authorization and authentication information. The &lt;font face=&quot;courier new,courier,monospace&quot;&gt;RolePhaseListener &lt;/font&gt;determines if a users has the ability to do something with the gradebook. I'm going to assume that you are either a student or instructor and will at least have the ability to modify or see your grades. Thus I omitted the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;RolePhaseListener &lt;/font&gt;and am only utilized the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;AuthnPhaseListener &lt;/font&gt;at the moment. &lt;/p&gt;&lt;p&gt;To support the new AuthnPhaseListener and to provide user information from uportal instead of Sakai, I have added the following classes to the gradebook service app:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.tool.gradebook.facades.uportal2impl.AuthnUportal2Imp&lt;br /&gt;org.sakaiproject.tool.gradebook.facades.uportal2impl.ContextManagementUportal2Impl&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p&gt;Then the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;uportal-app/src/webapp/WEB-INF/spring-facade.xml&lt;/font&gt; file was modified to utilitze these new classes as:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;!-- External Authz Service --&amp;gt;&lt;br /&gt;    &amp;lt;bean id=&amp;quot;org_sakaiproject_tool_gradebook_facades_Authz&amp;quot;&lt;br /&gt;        class=&amp;quot;org.sakaiproject.tool.gradebook.facades.sections.AuthzSectionsImpl&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;sectionAwareness&amp;quot;&amp;gt;&amp;lt;ref bean=&amp;quot;org.sakaiproject.api.section.SectionAwareness&amp;quot;/&amp;gt;&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;authn&amp;quot;&amp;gt;&amp;lt;ref bean=&amp;quot;org_sakaiproject_tool_gradebook_facades_Authn&amp;quot;/&amp;gt;&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- External ContextManagement Service --&amp;gt;&lt;br /&gt;    &amp;lt;bean id=&amp;quot;org_sakaiproject_tool_gradebook_facades_ContextManagement&amp;quot;&lt;br /&gt;        class=&amp;quot;org.sakaiproject.tool.gradebook.facades.uportal2impl.ContextManagementUportal2Impl&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;This replaces the standalone implementations and can now provide uportal specific information about the users. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Issue 2&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If you now build and deploy the application you will receive a NoClassDefinitionFound in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.jsf.app.SakaiVariableResolver&lt;/font&gt; at line 137. The class that isn't found is &lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.component.cover.ComponentManager&lt;/font&gt;. The VariableResolver attempts to retrieve the WebApplicationContext from the ServletContext and then load a Bean the &lt;a href=&quot;http://springframework.org&quot;&gt;Spring Framework&lt;/a&gt;. If a reference to the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;WebApplicationContext &lt;/font&gt;can't be obtained, the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;VariableResolver &lt;/font&gt;attempts to load the Object from the Sakai Component Manager. This is all fine and well, however, since this a portlet in uportal the Component Manager doesn't exist nor can the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;WebApplicationContext &lt;/font&gt;be obtained from the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;ServletContext&lt;/font&gt;. &lt;/p&gt;&lt;p&gt;&lt;b&gt;The workaround&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I defined a new class, &lt;font face=&quot;courier new,courier,monospace&quot;&gt;org.sakaiproject.jsf.app.UportalVariableResolver&lt;/font&gt;, that obtains the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;WebApplicationContext &lt;/font&gt;from the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;FacesContext &lt;/font&gt;and then attempts to load the Bean from the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;WebApplicationContext&lt;/font&gt;.&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;wac = FacesContextUtils.getRequiredWebApplicationContext(context);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;instead of&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;wac     = WebApplicationContextUtils.getWebApplicationContext((ServletContext) context.getExternalContext().getContext());&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Now this code is not in the gradebook application, but is in the JSF app in Sakai. Once I added my new &lt;font face=&quot;courier new,courier,monospace&quot;&gt;UportalVariableResolver&lt;/font&gt;, I have to configure it from the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;faces-config.xml&lt;/font&gt; located in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;jsf/app/META-INF&lt;/font&gt; directory. Here I replace the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;SakaiVariableResolver &lt;/font&gt;with the new &lt;font face=&quot;courier new,courier,monospace&quot;&gt;UportalVariableResolver &lt;/font&gt;and then bld the jar and install it into my Maven repository. Once that is complete I can rebuild my Gradebook application and it will place this new &lt;font face=&quot;courier new,courier,monospace&quot;&gt;sakai-jsf.x.x.x.jar&lt;/font&gt; into my &lt;font face=&quot;courier new,courier,monospace&quot;&gt;WEB-INF/lib&lt;/font&gt; directory and all is well again (Well not quite).&lt;/p&gt;    </content:encoded>
    <pubDate>Tue, 07 Nov 2006 16:33:18 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/15-guid.html</guid>
    </item>
<item>
    <title>Sakai Gradebook App</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/14-Sakai-Gradebook-App.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/14-Sakai-Gradebook-App.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=14</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=14</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;Today I'm starting with a uportal-app directory which is a copy of the standalone-app directory. This way I can make changes and mistakes to the uportal-app without messing with the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;standalone-app&lt;/font&gt;. To speed up compile time I moved the standalone-app out of the gradebook directory altogether and will move it back once I'm done messing with the&lt;font face=&quot;courier new,courier,monospace&quot;&gt; uportal-app&lt;/font&gt;. &lt;/p&gt;&lt;p&gt;I modified the maven.xml in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;uportal-app&lt;/font&gt; directory to point to the appropriate directories in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;uportal-app &lt;/font&gt;instead of &lt;font face=&quot;courier new,courier,monospace&quot;&gt;standalone-app&lt;/font&gt;. I.E.&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;goal name=&amp;quot;load-uportal&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;j:set var=&amp;quot;goal&amp;quot; value=&amp;quot;load-full&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;j:set var=&amp;quot;maven.multiproject.includes&amp;quot; value=&amp;quot;app/&lt;b&gt;uportal-app&lt;/b&gt;/project.xml&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;attainGoal name=&amp;quot;multiproject:goal&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/goal&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;So now each goal in the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;uportal-app/maven.xml&lt;/font&gt; file points to the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;project.xml&lt;/font&gt; in that directory. Now to build the application I need to use:&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven -Duportal_standalone=true &lt;/font&gt;&lt;code&gt;-Dmaven.test.skip=true&lt;/code&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt; cln bld&lt;/font&gt;&lt;/p&gt;&lt;p&gt;In addition to the changes in the maven.xml file I also added a portlet.xml file to the uportal-app/WEB-INF/ directory. This is my attempt to portletize the (my new word) the web application.&lt;/p&gt;&lt;p&gt;A little needed info:&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;table width=&quot;335&quot; height=&quot;24&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; border=&quot;1&quot; align=&quot;center&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 100%;&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;a href=&quot;http://maven.apache.org/general.html#skip-test&quot;&gt;http://maven.apache.org/general.html#skip-test&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Here's a little info on the technologies this application uses:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://sakaiproject.org&quot;&gt;Sakai&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://hibernate.org&quot;&gt;Hibernate&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://java.sun.com/javaee/javaserverfaces/&quot;&gt;JSF&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://maven.apache.org&quot;&gt;Maven&lt;/a&gt;&lt;a href=&quot;http://www.springframework.org&quot;&gt;Spring&lt;/a&gt;&lt;/p&gt;&lt;p&gt;as if that wasn't enough. So I'm trying to wrap my head around this stuff here. &lt;/p&gt;&lt;p&gt;The goal of the day is to get the application to run as a portlet. So we'll see how far I get.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;    </content:encoded>
    <pubDate>Tue, 17 Oct 2006 15:54:15 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/14-guid.html</guid>
    </item>
<item>
    <title>Sakai</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/13-Sakai.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/13-Sakai.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=13</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=13</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;br /&gt;
&lt;p&gt;&lt;b&gt;Building Sakai&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;u&gt;_  _&lt;/u&gt;&lt;br /&gt;|  \/  |  &lt;u&gt;_ _Apache_&lt;/u&gt; &lt;u&gt;_&lt;/u&gt;&lt;br /&gt;| |\/| / &lt;u&gt;` \ V / -&lt;/u&gt;) ' \  ~ intelligent projects ~&lt;br /&gt;|&lt;u&gt;|  |&lt;/u&gt;_&lt;u&gt;,&lt;/u&gt;|_/_&lt;u&gt;_|&lt;/u&gt;||_|  v. 1.0.2&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Create build.properties in the %USERPROFILE% directory and place the following in the file:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven.repo.remote = http://www.ibiblio.org/maven/,http://cvs.sakaiproject.org/maven/&lt;br /&gt;maven.tomcat.home = d:/tomcat/&lt;/font&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;If the remote repository is not set to use http://cvs.sakaiproject.org/maven/ and http://www.ibiblio.org/maven the build will fail with an attempt to downloald the sakai-2.2.jar file, mail-1.3.1.jar, and other jar files. Once the build.properties is saved, before you can build sakai, you need to install the &lt;a target=&quot;_blank&quot; href=&quot;https://source.sakaiproject.org/svn/reference/tags/sakai_2-2-0/docs/architecture/sakai_maven.doc&quot;&gt;sakai plugin&lt;/a&gt;:&lt;/p&gt;&lt;pre class=&quot;code-java&quot;&gt;maven plugin:download -DgroupId=sakaiproject -DartifactId=sakai -Dversion=sakai.2.2&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;For more on using Maven to build Sakai, see the &lt;a target=&quot;_blank&quot; href=&quot;http://bugs.sakaiproject.org/confluence/display/ENC/Using+Maven&quot;&gt;Using Maven&lt;/a&gt; page on the &lt;a target=&quot;_blank&quot; href=&quot;http://bugs.sakaiproject.org/confluence/display/&quot;&gt;Sakai Wiki&lt;/a&gt;. I was almost overwhelmed by all the content on the Sakai Wiki. Cool stuff...&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;&lt;br /&gt;If you are using SQL Server, you must modify the hibernate mapping files, &lt;font face=&quot;courier new,courier,monospace&quot;&gt;GradeMapping.hbm.xml&lt;/font&gt; and &lt;font face=&quot;courier new,courier,monospace&quot;&gt;GradeScale.hbm.xml&lt;/font&gt;.&lt;/p&gt;&lt;p&gt;GradeMapping.hbm.xml modify line 25:&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;element column=&amp;quot;[PERCENT]&amp;quot; type=&amp;quot;double&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;GradeScale.hbm.xml modify line 32:&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;element column=&amp;quot;[PERCENT]&amp;quot; type=&amp;quot;double&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Again, Percent is a keyword and the column names must be escaped.&lt;/p&gt;&lt;p&gt;Now from the sakai source root directory execute: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven sakai&lt;/font&gt;&lt;br /&gt;This builds all the projects in the sakai source. If you only want to use the gradebook application, &lt;font face=&quot;courier new,courier,monospace&quot;&gt;cd &lt;/font&gt;to the sections directory, modify the gradebook hibernate properties and execute:&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven -Dmode=standalone  -Dhibernate.properties.dir=d:/projects/sakai-src/gradebook/app/standalone-app/src/hibernate cln bld&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;then execute:&lt;/p&gt;&lt;p&gt;# Regular standalone build and deploy to my test Tomcat server.&lt;br /&gt;  &lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven -Dstandalone=true cln bld&lt;/font&gt;&lt;br /&gt;&lt;br /&gt; # Initialize my local database with the Gradebook tables.&lt;br /&gt; # this creates a gradebook.sql in the standalone-app/target directory&lt;br /&gt; # for ms sql server this gradebook.sql creates fields titled &amp;quot;PERCENT&amp;quot;&lt;br /&gt; # this must be escaped with the brackets [PERCENT] since it is a keyword&lt;br /&gt;  &lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven schema-standalone&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Here are is the sql statements I used to create the tables:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;create table GB_GRADABLE_OBJECT_T (ID numeric(19,0) identity not null, OBJECT_TYPE_ID int not null, VERSION int not null, GRADEBOOK_ID numeric(19,0) not null, NAME varchar(255) not null, REMOVED tinyint null, POINTS_POSSIBLE double precision null, DUE_DATE datetime null, NOT_COUNTED tinyint null, EXTERNALLY_MAINTAINED tinyint null, EXTERNAL_STUDENT_LINK varchar(255) null, EXTERNAL_INSTRUCTOR_LINK varchar(255) null, EXTERNAL_ID varchar(255) null, EXTERNAL_APP_NAME varchar(255) null, primary key (ID));&lt;br /&gt;create table GB_GRADEBOOK_T (ID numeric(19,0) identity not null, VERSION int not null, GRADEBOOK_UID varchar(255) not null unique, NAME varchar(255) not null, SELECTED_GRADE_MAPPING_ID numeric(19,0) null, ASSIGNMENTS_DISPLAYED tinyint not null, COURSE_GRADE_DISPLAYED tinyint not null, ALL_ASSIGNMENTS_ENTERED tinyint not null, LOCKED tinyint not null, primary key (ID));&lt;br /&gt;create table GB_GRADE_MAP_T (ID numeric(19,0) identity not null, OBJECT_TYPE_ID int not null, VERSION int not null, GRADEBOOK_ID numeric(19,0) not null, GB_GRADING_SCALE_T numeric(19,0) null, primary key (ID));&lt;br /&gt;create table GB_GRADE_RECORD_T (ID numeric(19,0) identity not null, OBJECT_TYPE_ID int not null, VERSION int not null, GRADABLE_OBJECT_ID numeric(19,0) not null, STUDENT_ID varchar(255) not null, GRADER_ID varchar(255) not null, DATE_RECORDED datetime not null, POINTS_EARNED double precision null, ENTERED_GRADE varchar(255) null, SORT_GRADE double precision null, primary key (ID), unique (GRADABLE_OBJECT_ID, STUDENT_ID));&lt;br /&gt;create table GB_GRADE_TO_PERCENT_MAPPING_T (GRADE_MAP_ID numeric(19,0) not null, [PERCENT] double precision null, LETTER_GRADE varchar(255) not null, primary key (GRADE_MAP_ID, LETTER_GRADE));&lt;br /&gt;create table GB_GRADING_EVENT_T (ID numeric(19,0) identity not null, GRADABLE_OBJECT_ID numeric(19,0) not null, GRADER_ID varchar(255) not null, STUDENT_ID varchar(255) not null, DATE_GRADED datetime not null, GRADE varchar(255) null, primary key (ID));&lt;br /&gt;create table GB_GRADING_SCALE_GRADES_T (GRADING_SCALE_ID numeric(19,0) not null, LETTER_GRADE varchar(255) null, GRADE_IDX int not null, primary key (GRADING_SCALE_ID, GRADE_IDX));&lt;br /&gt;create table GB_GRADING_SCALE_PERCENTS_T (GRADING_SCALE_ID numeric(19,0) not null, [PERCENT] double precision null, LETTER_GRADE varchar(255) not null, primary key (GRADING_SCALE_ID, LETTER_GRADE));&lt;br /&gt;create table GB_GRADING_SCALE_T (ID numeric(19,0) identity not null, OBJECT_TYPE_ID int not null, VERSION int not null, SCALE_UID varchar(255) not null unique, NAME varchar(255) not null, UNAVAILABLE tinyint null, primary key (ID));&lt;br /&gt;create table GB_PROPERTY_T (ID numeric(19,0) identity not null, VERSION int not null, NAME varchar(255) not null unique, VALUE varchar(255) null, primary key (ID));&lt;br /&gt;alter table GB_GRADABLE_OBJECT_T add constraint FK759996A7325D7986 foreign key (GRADEBOOK_ID) references GB_GRADEBOOK_T;&lt;br /&gt;alter table GB_GRADEBOOK_T add constraint FK7C870191552B7E63 foreign key (SELECTED_GRADE_MAPPING_ID) references GB_GRADE_MAP_T;&lt;br /&gt;alter table GB_GRADE_MAP_T add constraint FKADE11225325D7986 foreign key (GRADEBOOK_ID) references GB_GRADEBOOK_T;&lt;br /&gt;alter table GB_GRADE_MAP_T add constraint FKADE11225181E947A foreign key (GB_GRADING_SCALE_T) references GB_GRADING_SCALE_T;&lt;br /&gt;create index GB_GRADE_RECORD_STUDENT_ID_IDX on GB_GRADE_RECORD_T (STUDENT_ID);&lt;br /&gt;alter table GB_GRADE_RECORD_T add constraint FK46ACF7526F98CFF foreign key (GRADABLE_OBJECT_ID) references GB_GRADABLE_OBJECT_T;&lt;br /&gt;alter table GB_GRADE_TO_PERCENT_MAPPING_T add constraint FKCDEA021162B659F1 foreign key (GRADE_MAP_ID) references GB_GRADE_MAP_T;&lt;br /&gt;alter table GB_GRADING_EVENT_T add constraint FK4C9D99E06F98CFF foreign key (GRADABLE_OBJECT_ID) references GB_GRADABLE_OBJECT_T;&lt;br /&gt;alter table GB_GRADING_SCALE_GRADES_T add constraint FK5D3F0C95605CD0C5 foreign key (GRADING_SCALE_ID) references GB_GRADING_SCALE_T;&lt;br /&gt;alter table GB_GRADING_SCALE_PERCENTS_T add constraint FKC98BE467605CD0C5 foreign key (GRADING_SCALE_ID) references GB_GRADING_SCALE_T;&lt;br /&gt;create index GB_GRADABLE_OBJ_ASN_IDX on GB_GRADABLE_OBJECT_T (OBJECT_TYPE_ID, GRADEBOOK_ID, NAME, REMOVED);&lt;br /&gt;create index GB_GRADE_RECORD_O_T_IDX on GB_GRADE_RECORD_T (OBJECT_TYPE_ID);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;If you want, you can load your local database with test data. If you do&lt;br /&gt;this, you can skip the &amp;quot;schema-standalone&amp;quot; step above, since the data&lt;br /&gt;load will automatically create all needed tables.&lt;br /&gt;&lt;br /&gt;  &lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven load-full-standalone&lt;/font&gt;&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;    </content:encoded>
    <pubDate>Thu, 05 Oct 2006 01:08:00 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/13-guid.html</guid>
    </item>
<item>
    <title>Blogging, IronPython, Linux</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/12-Blogging,-IronPython,-Linux.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/12-Blogging,-IronPython,-Linux.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=12</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p&gt;Wow... I can't believe a wait so long to post to this blog. Since I had issues with Blogger.com, I kind of got side tracked and wasn't too interested in my blog anymore. Not to mention the fact that I finished the Livestrong ride months ago and haven't been putting in hard hard efforts on the bicycle either. &lt;/p&gt;&lt;p&gt;So what's new with me. The usual work and play. I've still been riding about five days a week and have been looking for another event to participate in. &lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;b&gt;Linux Environment Variables - Quick Random Notes&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Environment Variables on fedora 5 are set in the /etc/profile.d/ directory. Example &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;maven.sh&lt;/font&gt;&amp;quot;:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;export MAVEN_HOME=/usr/share/maven-1.0.2&lt;br /&gt;export PATH=$MAVEN_HOME/bin:$PATH&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://fedora.redhat.com/&quot; target=&quot;_blank&quot;&gt;Fedora 5&lt;/a&gt; is using Common Internet File System instead of Samba. Thus to mount a share use the following:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot; size=&quot;2&quot;&gt;mount -t cifs //server/share /mnt/mountdir -o username=domain\\username&lt;/font&gt;&lt;/p&gt;&lt;p&gt;As you can see I've been been trying to use Linux more and more...&lt;/p&gt;&lt;h4&gt;IronPython&lt;/h4&gt;&lt;p&gt;Now this language is rather interesting. It allows you to create and modify Windows Forms and Presentation Foundation applications on the fly. In order to get this working I had to download and install the &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=19E21845-F5E3-4387-95FF-66788825C1AF&amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;Pre-Release Windows Vista .NET 3.0 Framework&lt;/a&gt; and Runtime and the &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;Windows SDK for Windows Vista&lt;/a&gt;. In additon to the &lt;a href=&quot;http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython&quot; target=&quot;_blank&quot;&gt;IronPython 1.0 release&lt;/a&gt; and the &lt;a href=&quot;http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython&quot; target=&quot;_blank&quot;&gt;IronPython Samples&lt;/a&gt;. &lt;/p&gt;&lt;p /&gt;&lt;p /&gt;    </content:encoded>
    <pubDate>Wed, 27 Sep 2006 10:07:19 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/12-guid.html</guid>
    </item>
<item>
    <title>Java and .NET playing nicely</title>
    <link>http://bradrippe.com/serendipity/index.php?/archives/11-Java-and-.NET-playing-nicely.html</link>
    <comments>http://bradrippe.com/serendipity/index.php?/archives/11-Java-and-.NET-playing-nicely.html#comments</comments>
    <wfw:comment>http://bradrippe.com/serendipity/wfwcomment.php?cid=11</wfw:comment>
    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://bradrippe.com/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    <author>brippe@rocketmail.com (Brad Rippe)</author>
    <content:encoded>
&lt;p class=&quot;post-title&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/JuicyNewsNetworkSmall.jpg&quot;&gt;&lt;/a&gt;Recently I needed and instance of &lt;a href=&quot;http://www.uportal.org/&quot;&gt;&lt;font color=&quot;#666699&quot;&gt;uPortal &lt;/font&gt;&lt;/a&gt;to communicate with our Windows machines to have them do &lt;img hspace=&quot;3&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/JuicyNewsNetworkSmall.jpg&quot; align=&quot;right&quot; vspace=&quot;3&quot; border=&quot;0&quot; /&gt;some work on behalf of the user that signed into &lt;a href=&quot;http://www.uportal.org/&quot;&gt;&lt;font color=&quot;#666699&quot;&gt;uPortal&lt;/font&gt;&lt;/a&gt;. At first I tried to do this all in Java and quickly found out that this wasn't going to be very elegant, given that the Windows 2003 servers already have &lt;a href=&quot;http://www.microsoft.com/WindowsServer2003/iis/default.mspx&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;IIS&lt;/font&gt;&lt;/a&gt; and &lt;a href=&quot;http://msdn.microsoft.com/asp.net/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;ASP .NET&lt;/font&gt;&lt;/a&gt; running on them. Thus I was faced with what I'm sure other have faced. I didn't want to start another web server just to respond to requests from the portal. Especially if it required starting another &lt;a href=&quot;http://java.sun.com/docs/books/vmspec/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;JVM&lt;/font&gt;&lt;/a&gt;. So, what to do, what to do. Well I just wrote a little .NET Web Service in C# (not difficult) to handle the requests and do the work. This was coming from never writing a web service in Visual Studio before.&lt;br /&gt;&lt;br /&gt;Microsoft has done a good job at letting you create web services relatively straight forward in VS 2005.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;C# Web Service&lt;/span&gt;To create the web service in VS 2005, from the top menu create a new web site.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/vs1.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/vs1.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Create a New Web Site from the ASP .NET Web Service Template. From this dialog you can select the language of choice, C#, J#, or VB and the location of your files (Pretty self-explanatory).&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/vs2.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/vs2.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;VS create a bare bones, Hello World Web Service. At this point you have a web service that returns a simple string &amp;quot;Hello World&amp;quot; that we are all so familar with. You can build this solution and test it by setting a breakpoint and pressing &amp;quot;F5&amp;quot;. While debugging on the local machine you're able to invoke methods from a web page which also provides a link to the service's &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;WSDL&lt;/font&gt;&lt;/a&gt;. This makes it easy to create and debug the service before you have to write any code to consume the service.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/vs4.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/vs4.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;If the HelloWorld method is invoked, the service returns a nice bit of xml code:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;&lt;string /&gt;&lt;message /&gt;Hello World&lt;/message /&gt;&lt;/string /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/vs3.jpg&quot;&gt;&lt;img style=&quot;FLOAT: left; MARGIN: 0pt 10px 10px 0pt; CURSOR: pointer&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/vs3.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;In a few clicks, visual studio has created the application class file, Service.cs; the Web Service entry point, Service.asmx; and the web service configuration file, Web.config. For more information on the generated file, see the documentation on &lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconASPNETWebServiceProjectsInVisualStudio.asp&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;MSDN&lt;/font&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now that the basic structure of the web service is in place. We can write code that actual does something instead of just respond with &amp;quot;Hello World&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;Modify the Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The whole .NET/Java relationship came into light because I needed to generate webs in IIS from a Java Application Server which resides on a different from the IIS server. So the Java App needed the ability to function as an administrator on the IIS.&lt;br /&gt;&lt;br /&gt;In the Web Service application code, I first changed the Namespace to something meaningful, &amp;quot;http://www.iisserver.com/webgenerator&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;WebService(Namespace = &amp;quot;&lt;/span&gt;&lt;span style=&quot;FONT-WEIGHT: bold; FONT-FAMILY: courier new&quot;&gt;http://www.iisserver.com/webgenerator/&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;&amp;quot;)]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;public class Service : System.Web.Services.WebService&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next I changed the HelloWorld method definition to:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;public string generate(string account)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and add some database access to the body of the method. Basically the &lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;generate &lt;/span&gt;method looks in a database table for commands that need to be executed to create webs on the IIS server and executes those commands on the server. So here's the bulk of the method which is straight forward:&lt;/p&gt;&lt;div class=&quot;post-body&quot;&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;[WebMethod]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;public string generate(string account) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;    &lt;strong&gt; conStr is the static connection string&lt;br /&gt;    &lt;/strong&gt;/&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        SqlConnection conn = new SqlConnection(conStr);&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        SqlConnection conn2 = new SqlConnection(conStr);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;SqlDataReader accountReader = null;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        SqlCommand sql;&lt;br /&gt;/** &lt;/span&gt;returns the exact path to the command shell executable. **/&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        string command = Environment.ExpandEnvironmentVariables(&amp;quot;%comspec%&amp;quot;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        string returnInfo = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        string fpID = &amp;quot;0&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    /&lt;strong&gt; I've simplified this example so you don't have to look at all the code&lt;br /&gt;    &lt;/strong&gt;/&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        try &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        {            &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            sql = new SqlCommand(&amp;quot;SELECT &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;FrontPageID, &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;Command &amp;quot;+&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                      &amp;quot; FROM WebFrontPageRequest &amp;quot; +&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                      &amp;quot;WHERE Account = '&amp;quot;+account+&lt;br /&gt;               &amp;quot;' AND Completed = 0&amp;quot;,&lt;br /&gt;               conn);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;conn.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            accountReader = sql.ExecuteReader();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            do&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                while(accountReader.Read()) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    fpID = accountReader[&amp;quot;FrontPageID&amp;quot;].ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    conn2.Open();&lt;br /&gt;&lt;br /&gt;                /** Update the command **/&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    sql = new SqlCommand(&amp;quot;UPDATE &amp;quot;+&lt;br /&gt;               &amp;quot;WebFrontPageRequest SET &amp;quot;+&lt;br /&gt;               &amp;quot;Completed = 1 WHERE FrontPageID = &amp;quot;+&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                            fpID, conn2);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    sql.ExecuteNonQuery();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    conn2.Close();&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                  &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;              &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    string readerCmd = accountReader[&amp;quot;Command&amp;quot;].ToString();                  &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                   &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    ProcessStartInfo startInfo = new ProcessStartInfo(command,args);                    &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    startInfo.UseShellExecute = false;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    startInfo.RedirectStandardOutput = true;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    startInfo.RedirectStandardError = true;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    startInfo.WindowStyle = ProcessWindowStyle.Normal;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    startInfo.CreateNoWindow = false;                                        &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    Process proc = Process.Start(startInfo);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    proc.WaitForExit();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                                        &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    if (proc.ExitCode != 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    {                        &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                        // TODO: clean up your mess&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                        returnInfo = returnInfo+&lt;br /&gt;                      &amp;quot;unsuccessful &amp;quot;+&lt;br /&gt;                      command+args+                                             &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                   proc.StandardOutput.ReadToEnd()&lt;br /&gt;                      +&amp;quot;\n&amp;quot; +&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                          proc.StandardError.ReadToEnd()&lt;br /&gt;                      +&amp;quot;\n&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                        returnInfo = returnInfo+&lt;br /&gt;                      &amp;quot;successful &amp;quot;+&lt;br /&gt;                      proc.StandardOutput.ReadToEnd();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    }&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            } while(accountReader.NextResult());            &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        catch(Exception e) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            conn2.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            sql = new SqlCommand(&amp;quot;UPDATE WebFrontPageRequest &amp;quot;+&lt;br /&gt;                   &amp;quot;SET &lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;Completed = 0 &amp;quot;+&lt;br /&gt;                   &amp;quot;WHERE FrontPageID = &amp;quot;+&lt;br /&gt;                   fpID, conn2);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            sql.ExecuteNonQuery();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            conn2.Close();            &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            return e.Message;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        finally&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            if(accountReader != null)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;                accountReader.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            conn.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;            conn2.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;        return returnInfo;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;(For more on C# and database access, see&lt;span style=&quot;FONT-SIZE: 100%&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: normal; FONT-FAMILY: georgia&quot;&gt; &lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Accessing Data with ADO.NET&lt;/font&gt;&lt;/a&gt; or&lt;span style=&quot;TEXT-DECORATION: underline&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;FONT-SIZE: 100%&quot;&gt;&lt;a style=&quot;FONT-WEIGHT: normal&quot; href=&quot;http://www.c-sharpcorner.com/Database.asp&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;http://www.c-sharpcorner.com/Database.asp&lt;/font&gt;&lt;/a&gt;&lt;span style=&quot;FONT-WEIGHT: normal&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Now that there is a method to do some work, the web service can be built and published to a production server. There is an option to publish the service under the build menu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/vs5.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/vs5.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Once the service is on production server is when the real fun begins which brings us to the Application Pool but before I get to the Application pool here's a little brief on the new issue. Up to this point, there is a web service that is attempting to create webs on an IIS server. Well when the service is called I can see the service start and then die. IIS runs under the ASPNET account which doesn't have administrative rights to execute commands like owadmin.exe, or cacls.exe, etc. Since the server is providing services for multiple users I didn't want to grant ASPNET the rights to satisfy the requests of the service because others could then write code that utilizes these rights. Thus, I had to create a new local account and grant it administrative rights. If you use my approach, you will also have to grant the account rights to log on as a service. For more information on &amp;quot;IIS 6 &amp;amp; Service Unavailable Errors&amp;quot; see &lt;a href=&quot;http://briandesmond.com/blog/archive/2003/09/20/203.aspx&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Brian Desmond's Blog&lt;/font&gt;&lt;/a&gt;. You'll have to modify the security settings for your new account before the Web Service will execute without error. You need to make sure that the new account has setting to log on as a service. You can get a good idea of what is needed by looking at the ASPNET account security settings.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;Application Pool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Application Pools allow .NET applications to run in isolation of each other. Each pool has it's own worker process, thus, if one pool chokes, it won't affect the other applications running on the system. For my purposes, I have multiple application running on the server, most of which are out of my control and don't need special priviledges to do their work. However, the web service that was created does need rights. So, I configured a new application pool to run as another user for the web service and only the web service.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;TEXT-ALIGN: left&quot;&gt;To create a new Application Pool, from the IIS manager, there is a folder called &amp;quot;Application Pools&amp;quot;, right click on the folder and select &amp;quot;New&amp;quot; -&amp;gt; &amp;quot;Application Pool&amp;quot;.&lt;br /&gt;&lt;/div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/app_pool.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/app_pool.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;div style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/new_app.0.jpg&quot;&gt;&lt;img style=&quot;CURSOR: pointer&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/new_app.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;From the next dialog, name your Application Pool. I also selected to use the default app pool as a template. This allowed me to take advantage of configurations that already exist in the default pool.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/new_app2.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/new_app2.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Once the new app pool is created, you need to modify the pool's identity. Initially the pool uses the Network Service account. I changed this to use the new user administrative account created above. This will allow the worker process to execute the commands needed to generate a web.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/new_app3.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/new_app3.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;For more on application pools, see the article on &lt;a href=&quot;http://www.developer.com/net/asp/article.php/2245511&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;http://www.developer.com/net/asp/article.php/2245511&lt;/font&gt;&lt;/a&gt;. Now that the application pool is configured, the web site that hosts the application must be configured to use the new pool. To configure the pool, go to &amp;quot;Web Sites&amp;quot; in IIS and right click on the web that is hosting the web service. Select &amp;quot;Properties&amp;quot;. From the properties dialog you can set the application pool that this web will use from the lower drop-down list.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/1775/616/1600/app_pool2.0.jpg&quot;&gt;&lt;img style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center&quot; hspace=&quot;0&quot; src=&quot;http://staffwww.fullcoll.edu/brippe/images/app_pool2.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Once the pool is set, restart the web. Now the web service is running under an account that has proper rights to execute the tools needed to create webs on the server.&lt;br /&gt;&lt;br /&gt;On a side note, I've seen posts where users are trying to impersonate an administrative account to execute tools like owsadm.exe. This will not work because the web application is running under the ASPNET account and doesn't have proper rights to execute those tools. Often I see users using the &lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ProcessStartInfo &lt;/span&gt;object to impersonate the administrator like:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ProcessStartInfo.Username&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ProcessStartInfo.Password&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ProcessStartInfoDomain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This doesn't work and the process will hang or if you set a timeout, it will be killed without ever doing the work because the CreateProcess API is called, and the Platform SDK states: &amp;quot;&lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;If the calling process is impersonating another user, the new process uses the token for the calling process, not the impersonation token&lt;/font&gt;&lt;/a&gt;&amp;quot;. Since the underlining process is ASPNET, the process doesn't work. My work around, was to create a new pool running under a less restrictive process solely to execute tools and whalla!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;Apache Axis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Back to Java! The &lt;a href=&quot;http://apache.org/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Apache Group&lt;/font&gt;&lt;/a&gt; has come out with some really helpful tools to get me through my day; &lt;a href=&quot;http://ant.apache.org/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Ant&lt;/font&gt;&lt;/a&gt;, &lt;a href=&quot;http://jakarta.apache.org/commons/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Commons&lt;/font&gt;&lt;/a&gt;, &lt;a href=&quot;http://maven.apache.org/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Maven2&lt;/font&gt;&lt;/a&gt;, &lt;a href=&quot;http://tomcat.apache.org/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Tomcat&lt;/font&gt;&lt;/a&gt;, to name a few. For consuming web services, I don't think they could make it much easier with &lt;a href=&quot;http://ws.apache.org/axis/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Axis&lt;/font&gt;&lt;/a&gt;. The when you download &lt;a href=&quot;http://ws.apache.org/axis/&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;Axis &lt;/font&gt;&lt;/a&gt;it comes with a tool to convert a WSDL to client bindings, &lt;a href=&quot;http://ws.apache.org/axis/java/user-guide.html#WSDL2JavaBuildingStubsSkeletonsAndDataTypesFromWSDL&quot;&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;WSDL2Java&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;, which allows you to consume a web service in a few lines of code, but before we look at the client code, here's how I generated the bindings:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;java org.apache.axis.wsdl.WSDL2Java http://mywebservice.url/Service.asmx?WSDL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Executing the WSDL2Java tool created, five Java classes:&lt;br /&gt;&lt;br /&gt;Service.java&lt;br /&gt;ServiceLocator.java&lt;br /&gt;ServiceSoap.java&lt;br /&gt;ServiceSoap12.java&lt;br /&gt;ServiceSoapStub.java&lt;br /&gt;&lt;br /&gt;The generated classes are described in the table below (&lt;a href=&quot;http://ws.apache.org/axis/java/user-guide.html#WSDL2JavaBuildingStubsSkeletonsAndDataTypesFromWSDL&quot;&gt;&lt;font color=&quot;#6699cc&quot;&gt;from the Axis site&lt;/font&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;table class=&quot;ForrestTable&quot; cellspacing=&quot;1&quot; cellpadding=&quot;4&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;b&quot;&gt;&lt;th style=&quot;COLOR: rgb(153,0,0)&quot;&gt;WSDL clause&lt;/th&gt;&lt;th style=&quot;COLOR: rgb(153,0,0)&quot;&gt;Java class(es) generated&lt;/th&gt;&lt;/tr&gt;&lt;tr class=&quot;a&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;For each entry in the type section&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A java class&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;b&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A holder if this type is used as an inout/out parameter&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;a&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;For each portType&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A java interface&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;b&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;For each binding&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A stub class&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;a&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;For each service&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A service interface&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;b&quot;&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;/td&gt;&lt;td style=&quot;TEXT-ALIGN: center&quot;&gt;A service implementation (the locator)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Once the Axis classes have been compiled I can use them to invoke the web service as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;import edu.fullcoll.axis.stubs.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;public class TestClient {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;public static void main(String [] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ServiceLocator loc = new ServiceLocator();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;ServiceSoap port = loc.getServiceSoap();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;System.out.println(port.generate(&amp;quot;webaccount&amp;quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;} catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;System.err.println(e.toString());&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: courier new&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;FONT-FAMILY: georgia&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot;&gt;This main should output something like &amp;quot;successful&amp;quot;, if all goes well. At which point I am satisfied that I can incorporate this snippet of code into a portlet or any other Java application to access a .NET service.&lt;br /&gt;&lt;br /&gt;The coding of the application wasn't difficult, just getting all the pieces to function properly since I wasn't that familiar with .NET and impersonation or .NET application pools. Additions to the code, I added some security to the web service to ensure that only authorized users have access to the service. You can get information on securing your ASP application at &lt;/font&gt;&lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp&quot;&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot; color=&quot;#6699cc&quot;&gt;MSDN&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana,arial,helvetica,sans-serif&quot;&gt;. Hopefully this helps if you're trying to get these two worlds to function in harmony. With the help of Apache and Microsoft, this whole process was a lot easier than I had planned. Enjoy!&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;    </content:encoded>
    <pubDate>Wed, 20 Sep 2006 12:12:34 -0700</pubDate>
    <guid isPermaLink="false">http://bradrippe.com/serendipity/index.php?/archives/11-guid.html</guid>
    </item>
</channel>
</rss>
