<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7765398</id><updated>2011-12-15T02:55:25.027Z</updated><title type='text'>Days of Software Architect</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7765398.post-113999414911926682</id><published>2006-02-15T09:02:00.000Z</published><updated>2006-02-15T09:02:29.163Z</updated><title type='text'>Blog moved to www.yellowbluebus.com/blog</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Starting from February 15th, 2006 this blog is no longer updated. It was moved to &lt;a href="http://www.yellowbluebus.com/blog/"&gt;www.yellowbluebus.com/blog&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113999414911926682?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113999414911926682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113999414911926682' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113999414911926682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113999414911926682'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/blog-moved-to-wwwyellowbluebuscomblog.html' title='Blog moved to www.yellowbluebus.com/blog'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113993780420591802</id><published>2006-02-14T17:23:00.000Z</published><updated>2006-02-14T17:23:24.216Z</updated><title type='text'>Firefox memory tweak</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Make sure that &lt;a href="http://www.solo-technology.com/blog/2005/12/23/quick-firefox-tweak-free-mem/trackback/"&gt;Firefox frees memory when minimized&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/firefox" rel="tag"&gt;firefox&lt;/a&gt;, &lt;a href="http://technorati.com/tag/tweak" rel="tag"&gt;tweak&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113993780420591802?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113993780420591802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113993780420591802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113993780420591802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113993780420591802'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/firefox-memory-tweak.html' title='Firefox memory tweak'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113992095396495410</id><published>2006-02-14T12:42:00.000Z</published><updated>2006-02-14T16:02:30.066Z</updated><title type='text'>Filenet does exception handling - 2</title><content type='html'>Week ago I wrote about &lt;a href="http://softarch.blogspot.com/2006/02/this-is-how-exceptions-are-handled.html"&gt;unusual way of handling exceptions in Filenet Workplace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Today I found another "gem":&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;           try&lt;br /&gt;           {&lt;br /&gt;               invokeNamedEvent(eventName, uiModule, request, new WcmEventResponse(response, this, okToRedirect));&lt;br /&gt;&lt;br /&gt;               // If a non-null return value was returned from the invoke, check for true/false.  If the&lt;br /&gt;               // result matches "false", set the redirect flag to true indicating to cancel processing&lt;br /&gt;               // of the page.&lt;br /&gt;               Object result = request.getAttribute(INVOKE_RETURN_VALUE);&lt;br /&gt;               if ( result != null  result.toString().equals(String.valueOf(false)) )&lt;br /&gt;                   sendRedirectCalled = true;&lt;br /&gt;           }&lt;br /&gt;           catch (Exception e)&lt;br /&gt;           {&lt;br /&gt;               throw e;&lt;br /&gt;           }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Why to catch an exception here? And why string comparison is used when Boolean has a constructor with the String parameter?&lt;br /&gt;&lt;br /&gt;It seems that Filenet doesn't use any of code review procedures internally. Developers just hack the code all day, make no comments and only two of them really understand the whole Filenet Workplace system. Or it was written long time ago by developer, which left the company, and nobody has time and/or will to do a proper system.&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/filenet" rel="tag"&gt;filenet&lt;/a&gt;, &lt;a href="http://technorati.com/tag/source" rel="tag"&gt;source&lt;/a&gt;, &lt;a href="http://technorati.com/tag/exceptions" rel="tag"&gt;exceptions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113992095396495410?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113992095396495410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113992095396495410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113992095396495410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113992095396495410'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/filenet-does-exception-handling-2.html' title='Filenet does exception handling - 2'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113983547697824196</id><published>2006-02-13T12:57:00.000Z</published><updated>2006-02-14T16:03:39.766Z</updated><title type='text'>dotcoms and Web 2.0: history repeating</title><content type='html'>I was thinking about Web 2.0 and found some similarities between them and dotcoms:&lt;br/&gt;&lt;table border="0" cellpadding="5" colspacing="5"&gt;&lt;br/&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;dotcoms&lt;/td&gt;&lt;td&gt;Web 2.0&lt;/td&gt;&lt;/tr&gt;&lt;br/&gt;&lt;tr&gt;&lt;td&gt;Generated a lot of ideas revolving around web enabling of normall stuff&lt;/td&gt;&lt;td&gt;Generate a lot of ideas revolving around web enabling of normall stuff&lt;/td&gt;&lt;/tr&gt;&lt;br/&gt;&lt;tr&gt;&lt;td&gt;Generated some ideas and generated a lot of copies of the same ideas&lt;/td&gt;&lt;td&gt;Generate some ideas and generated a lot of copies of the same ideas&lt;/td&gt;&lt;/tr&gt;&lt;br/&gt;&lt;tr&gt;&lt;td&gt;Nobody thought of generating revenue from ideas&lt;/td&gt;&lt;td&gt;Nobody thinks about revenue&lt;/td&gt;&lt;/tr&gt;&lt;br/&gt;&lt;tr&gt;&lt;td&gt;Most of the sites were maid to be sold to venture capitalits&lt;/td&gt;&lt;td&gt;Most of the sites are maid to be sold to survived dotcoms&lt;/td&gt;&lt;/tr&gt;&lt;br/&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;History repeating, huh?&lt;br/&gt;&lt;br/&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/web%202.0" rel="tag"&gt;web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/dotcoms" rel="tag"&gt;dotcoms&lt;/a&gt;, &lt;a href="http://technorati.com/tag/internet" rel="tag"&gt;internet&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113983547697824196?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113983547697824196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113983547697824196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113983547697824196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113983547697824196'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/dotcoms-and-web-20-history-repeating.html' title='dotcoms and Web 2.0: history repeating'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113977298775345295</id><published>2006-02-12T19:24:00.000Z</published><updated>2006-02-12T19:36:30.156Z</updated><title type='text'>There is no need for 3Bubbles</title><content type='html'>&lt;a href="http://www.techcrunch.com/"&gt;Techcrunch&lt;/a&gt; &lt;a href="http://www.techcrunch.com/2006/02/10/preview-of-3bubbles/"&gt;announced the service&lt;/a&gt; from &lt;a href="http://www.3bubbles.com"&gt;3Bubbles&lt;/a&gt;, which allows to place the chat into the blogs. Blogosphere reacted with enthusiasm at first sight, like it happens with everything posted in Techcrunch.&lt;br /&gt;&lt;br /&gt;I don't think that online chat within a blog is such a good idea. First of all: blog is more like an article in the newspaper. If you have your thoughts - you will comment that article and may get a response, when the author will have time. With the chat the author should always be present near his blog. How will it be handled?&lt;br /&gt;&lt;br /&gt;And what about comment spam? Does somebody wants to be spammed in real time?&lt;br /&gt;&lt;br /&gt;And there are more skeptics like me: &lt;a href="http://mashable.com/2006/02/12/3bubbles-why-im-skeptical-about-live-chat-on-blogs/"&gt;Mashable*&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Technorati tags:&lt;a href="http://technorati.com/tag/blogs" rel="tag"&gt;blogs&lt;/a&gt;, &lt;a href="http://technorati.com/tag/technology" rel="tag"&gt;technology&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Web 2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/skeptical" rel="tag"&gt;skeptical&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113977298775345295?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113977298775345295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113977298775345295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113977298775345295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113977298775345295'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/there-is-no-need-for-3bubbles.html' title='There is no need for 3Bubbles'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113941132237916939</id><published>2006-02-08T15:08:00.000Z</published><updated>2006-02-08T15:08:54.103Z</updated><title type='text'>Dozer - object to object mapping tool</title><content type='html'>&lt;br/&gt;&lt;a href="http://dozer.sourceforge.net/documentation/about.html"&gt;Dozer - about&lt;/a&gt; &lt;br/&gt; &lt;blockquote&gt;This one looks like very promising solution when I will need to convert normal Java beans to Filenet's property bags.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/filenet" rel="tag"&gt;filenet&lt;/a&gt;, &lt;a href="http://technorati.com/tag/object mapping" rel="tag"&gt;object mapping&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/library" rel="tag"&gt;library&lt;/a&gt;, &lt;a href="http://technorati.com/tag/open source" rel="tag"&gt;open source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113941132237916939?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113941132237916939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113941132237916939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113941132237916939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113941132237916939'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/dozer-object-to-object-mapping-tool.html' title='Dozer - object to object mapping tool'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113932573379679950</id><published>2006-02-07T15:22:00.000Z</published><updated>2006-02-07T15:31:20.236Z</updated><title type='text'>This is how exceptions are handled</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;This is how WcmController.java, the "Controller" part of FileNet Workplace's implementation of MVC pattern, handles exceptions:&lt;br /&gt;&lt;br /&gt;First, declare this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  private Exception            configureWindowIdException = null;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then, in ConfigurePage function, do this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  public void configurePage(ServletContext applicationValue, HttpServletRequest request, long windowIdMode)&lt;br /&gt;      throws Exception&lt;br /&gt;{&lt;br /&gt;          ... skipped ...&lt;br /&gt;      configureWindowId(request);&lt;br /&gt;&lt;br /&gt;      //  If configureWindowId constructed an exception, throw it.&lt;br /&gt;      if ( configureWindowIdException != null  )&lt;br /&gt;      {&lt;br /&gt;           if ( !sp.isSignedIn() )&lt;br /&gt;           {&lt;br /&gt;               // We attempted to propogate a window Id when not signed in&lt;br /&gt;               // probably the result of signing out of an info page.&lt;br /&gt;               // Don't throw.  Fix the windowId to mainWindow instead.&lt;br /&gt;               //&lt;br /&gt;               WindowID assignedId = new WindowID(null);&lt;br /&gt;               WindowID currentId  = new WindowID(null);&lt;br /&gt;&lt;br /&gt;               assignWindowId(assignedId, currentId, false);&lt;br /&gt;               configureWindowState();&lt;br /&gt;               postProcessWindowId(assignedId, currentId, currentId,&lt;br /&gt;                                   false, false, false, false, false);&lt;br /&gt;           }&lt;br /&gt;           else&lt;br /&gt;               throw configureWindowIdException;&lt;br /&gt;      }&lt;br /&gt;          ... skipped ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;What about good old try-catch?&lt;br /&gt;&lt;br /&gt;There is no proper exception handling in Workplace. Should I send this piece to &lt;a href="http://thedailywtf.com/"&gt;The Daily WTF&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/Filenet" rel="tag"&gt;Filenet&lt;/a&gt;, &lt;a href="http://technorati.com/tag/code" rel="tag"&gt;code&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113932573379679950?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113932573379679950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113932573379679950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113932573379679950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113932573379679950'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/this-is-how-exceptions-are-handled.html' title='This is how exceptions are handled'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113931966354691531</id><published>2006-02-07T13:32:00.000Z</published><updated>2006-02-07T13:41:34.816Z</updated><title type='text'>Filenet Workplace inheritance</title><content type='html'>While discovering internals of Filenet Workplace I decided to create a class diagram.&lt;br /&gt;&lt;br /&gt;Here is the starting diagram:&lt;br/&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2658/494/1600/classdiagram.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2658/494/320/classdiagram.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Apparently there is something wrong with the inheritance and everything use everything else and share the data. This is not OOP, it's good old VB style of programming done by somebody, who was converted to a java programmer by management decision.&lt;br /&gt;&lt;br /&gt;More to go...&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/filenet" rel="tag"&gt;filenet&lt;/a&gt;, &lt;a href="http://technorati.com/tag/architecture" rel="tag"&gt;architecture&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software+design" rel="tag"&gt;software design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/uml" rel="tag"&gt;uml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113931966354691531?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113931966354691531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113931966354691531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113931966354691531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113931966354691531'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/filenet-workplace-inheritance.html' title='Filenet Workplace inheritance'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113878852014119697</id><published>2006-02-01T10:08:00.000Z</published><updated>2006-02-01T10:08:40.156Z</updated><title type='text'>Filenet Workplace oddities</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Now starting to investigate how Filenet Workplace works and how to integrate and extend it with Java Server Faces (JSF).&lt;br /&gt;&lt;br /&gt;Created a new web project project in Rational Software Architect and imported Workplace into it. Right after the start discovered that it fails to run on localhost. "Huh? This is strange". Looked up the source code and found that marvelous piece of code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Validates HostName&lt;br /&gt;     *&lt;br /&gt;     * @param hostName The host nema to validate&lt;br /&gt;     * @return true, if valid.&lt;br /&gt;     */&lt;br /&gt;    public static boolean validateHostName( String hostName )&lt;br /&gt;    {&lt;br /&gt;        return !hostName.equalsIgnoreCase("localhost")  !validateIP(hostName);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What?! It just checks for localhost and validates IP of a host name. Ok, let's look into validateIP function:&lt;br /&gt;&lt;br /&gt; &lt;pre&gt;&lt;br /&gt;    /**&lt;br /&gt;     *  Validates a String as a valid IP address.  Checks for four parts, and that&lt;br /&gt;     *  each part represents a numeric value between 0 and 255.&lt;br /&gt;     *&lt;br /&gt;     *  @param ipAddress&lt;br /&gt;     *  @return&lt;br /&gt;     */&lt;br /&gt;    public static boolean validateIP( String ipAddress )&lt;br /&gt;    {&lt;br /&gt;        boolean isValid = false;&lt;br /&gt;&lt;br /&gt;        StringTokenizer st = new StringTokenizer(ipAddress, ".");&lt;br /&gt;        if ( st.countTokens() == 4 )&lt;br /&gt;        {&lt;br /&gt;            isValid = true;&lt;br /&gt;            while ( isValid  st.hasMoreTokens() )&lt;br /&gt;                isValid = validateUnsignedByte(st.nextToken());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return isValid;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Apparently there is no validation of correct IP address and Workplace should work normally if it would be started using &lt;pre&gt;127.0.0.1&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So I commented out first part of the code and Workspace now works on my localhost with no problems.&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/filenet" rel="tag"&gt;filenet&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/code" rel="tag"&gt;code&lt;/a&gt;, &lt;a href="http://technorati.com/tag/tip" rel="tag"&gt;tip&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113878852014119697?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113878852014119697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113878852014119697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113878852014119697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113878852014119697'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/filenet-workplace-oddities.html' title='Filenet Workplace oddities'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113878727495422138</id><published>2006-02-01T09:47:00.000Z</published><updated>2006-02-01T09:47:54.963Z</updated><title type='text'>Testing, one, two, three...</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;This is a test post from my FireFox using &lt;a href="http://performancing.com/firefox/"&gt;Performancing&lt;/a&gt; v1.1 blog editor.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/blogging" rel="tag"&gt;blogging&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software" rel="tag"&gt;software&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mozilla" rel="tag"&gt;mozilla&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/blogging" rel="tag"&gt;blogging&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software" rel="tag"&gt;software&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mozilla" rel="tag"&gt;mozilla&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113878727495422138?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113878727495422138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113878727495422138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113878727495422138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113878727495422138'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/02/testing-one-two-three.html' title='Testing, one, two, three...'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113820425097202408</id><published>2006-01-25T15:34:00.000Z</published><updated>2006-01-25T15:50:51.016Z</updated><title type='text'>Rational Software Architect: simple guide</title><content type='html'>Everybody, who worked with Rational tools could think that there is nothing rational in them. And frustration mounts when you'll try to read the supplied documentation. The documentation is structured, but some pages are very shallow and others do not explain topics in undestandable language.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-128.ibm.com/developerworks/rational/library/05/0816_Louis/?ca=drs-"&gt;This article&lt;/a&gt; is very helpful. It actually shows how to structure design files, so the design will be understandable by anyone in the project.&lt;br /&gt;&lt;br /&gt;At the end of page is a little gem: Software Architecture Document for the project, described in the article. Very very helpful!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/architecture" rel="tag"&gt;architecture&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rational" rel="tag"&gt;rational&lt;/a&gt;, &lt;a href="http://technorati.com/tag/uml" rel="tag"&gt;UML&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rup" rel="tag"&gt;RUP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113820425097202408?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113820425097202408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113820425097202408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113820425097202408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113820425097202408'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/01/rational-software-architect-simple.html' title='Rational Software Architect: simple guide'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-113771562802115738</id><published>2006-01-20T00:01:00.000Z</published><updated>2006-01-20T00:26:15.596Z</updated><title type='text'>Creating WebSphere 6 application MBeans</title><content type='html'>This is a little step by step guide on how to create and register custom service with JMX interface on WebSphere:&lt;br /&gt;&lt;br /&gt;1. Create class, which implements two interfaces:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;com.ibm.websphere.runtime.CustomService&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;com.ibm.websphere.management.JMXManageable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Implement "&lt;span style="font-family:courier new;"&gt;initialize&lt;/span&gt;" method (inherited from &lt;span style="font-family:courier new;"&gt;CustomService&lt;/span&gt;)&lt;br /&gt;This method has a parameter, &lt;span style="font-family:courier new;"&gt;Properties&lt;/span&gt;, which will contain properties defined via WS Administration console. We are interested in one property: &lt;span style="font-family:courier new;"&gt;externalConfigURLKey&lt;/span&gt;. This property contains path to external configuration file (if any is needed).&lt;br /&gt;&lt;br /&gt;This is how to get the path:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;&lt;br /&gt;public void initialize(Properties configProperties) throws Exception {&lt;br /&gt; readConfig(configProperties.getProperty(externalConfigURLKey));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;3. &lt;span style="font-family:courier new;"&gt;shutdown()&lt;/span&gt; method may be left blank.&lt;br /&gt;&lt;br /&gt;4. implement &lt;span style="font-family:courier new;"&gt;getType()&lt;/span&gt; method (inherited from &lt;span style="font-family:courier new;"&gt;JMXManageable&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;&lt;br /&gt;public String getType() {&lt;br /&gt; return "MyMBean";&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;Remember the name you returned here!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. implement &lt;span style="font-family:courier new;"&gt;getMBeanProperties&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;&lt;br /&gt;public Properties getMBeanProperties() {&lt;br /&gt; Properties props = new Properties();&lt;br /&gt; props.put("SpecialProperty", "value");&lt;br /&gt; return props;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I think this will return a list of properties, not declared in MBean descriptor. Read only, of course, since there is &lt;span style="font-weight: bold;"&gt;no &lt;span style="font-family:courier new;"&gt;setMBeanProperties()&lt;/span&gt;&lt;/span&gt; method.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6. implement getters and setters for properties you want to expose:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;&lt;br /&gt;public String getUserName() {&lt;br /&gt; return this.userName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setUserName(String param) {&lt;br /&gt; this.userName = param;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;7. Create MBean descriptor file, for example &lt;span style="font-style: italic;"&gt;myTest.xml&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE MBean SYSTEM "MBeanDescriptor.dtd"&amp;gt;&lt;br /&gt;&amp;lt;MBean type="MyMBean"&amp;gt;&lt;br /&gt;    &amp;lt;attribute name="UserName" type="java.lang.String" getMethod="getUserName" setMethod="setUserName" /&amp;gt;&lt;br /&gt;&amp;lt;/MBean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IMPORTANT:&lt;/span&gt; Make sure that type matches the value you remembered on the step 4!&lt;br /&gt;&lt;br /&gt;8. Compile and package. Create .jar, having descriptor in the root. Place .jar somewhere accesible for WebSphere.&lt;br /&gt;&lt;br /&gt;9. Start WebSphere and open Administration console.&lt;br /&gt;&lt;br /&gt;10. Go to Servers - Application Servers - yourserver - Server Infrastructure - Administration - Administration Services&lt;br /&gt;&lt;br /&gt;11. Click on "Extension MBean providers"&lt;br /&gt;&lt;br /&gt;12. Click on "New"&lt;br /&gt;&lt;br /&gt;13. In the "Classpath" entry type the full path and name of your jar (created on step 8)&lt;br /&gt;&lt;br /&gt;14. Type something memorable in two other fields and click Apply.&lt;br /&gt;&lt;br /&gt;15. Click on "Extension MBeans" (on the left)&lt;br /&gt;&lt;br /&gt;16. Click on "New"&lt;br /&gt;&lt;br /&gt;17. Enter the name of MBean descriptor file (see step 7.)&lt;br /&gt;&lt;br /&gt;for example:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;myTest.xml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;18. Enter the type name of your MBean. &lt;span style="font-weight: bold;"&gt;IMPORTANT:&lt;/span&gt; must be the same name as it was on steps 4 and 7.&lt;br /&gt;&lt;br /&gt;19. Click Apply.&lt;br /&gt;&lt;br /&gt;20. Go to Servers - Application Servers - yourserver - Server Infrastructure - Administration - Custom Services&lt;br /&gt;&lt;br /&gt;21. Click New&lt;br /&gt;&lt;br /&gt;22. Place check on "Enable service at server startup".&lt;br /&gt;&lt;br /&gt;23. Enter full class name (with package) of your MBean class (the one we created on step 1) into "Classname" field.&lt;br /&gt;&lt;br /&gt;24. Enter something memorable in "Display Name"&lt;br /&gt;&lt;br /&gt;25. Enter fill path and file name of the jar file (step 8) into "Classpath".&lt;br /&gt;&lt;br /&gt;26. If your service requires configuration file (step 2) enter full path to it into " External Configuration URL"&lt;br /&gt;&lt;br /&gt;27. Click on Apply.&lt;br /&gt;&lt;br /&gt;28. Click on Save (on top)&lt;br /&gt;&lt;br /&gt;29. Click Save.&lt;br /&gt;&lt;br /&gt;30. Restart the server.&lt;br /&gt;&lt;br /&gt;Here are the commands, used to verify MBean from admin console:&lt;br /&gt;&lt;br /&gt;To run console:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;wsadmin.bat -conntype SOAP -port 8881&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To make sure that MBean started:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$AdminControl queryNames *:*,type=&lt;the&gt;&lt;mbeanname from="" step="" 4=""&gt;&lt;span style="font-family:courier new;"&gt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Store MBean in Tcl variable:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set mybean [$AdminControl queryNames *:*,type=MBeanName]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See MBean description:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$Help all $mybean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See MBean attributes and values:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$AdminControl getAttributes $mybean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Set specific attribute:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$AdminControl setAttribute $mybean UserName mike&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/websphere" rel="tag"&gt;WebSphere&lt;/a&gt;, &lt;a href="http://technorati.com/tag/jmx" rel="tag"&gt;JMX&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mbeans" rel="tag"&gt;mbeans&lt;/a&gt;, &lt;a href="http://technorati.com/tag/howto" rel="tag"&gt;howto&lt;/a&gt;, &lt;a href="http://technorati.com/tag/tutorial" rel="tag"&gt;tutorial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-113771562802115738?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/113771562802115738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=113771562802115738' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113771562802115738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/113771562802115738'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2006/01/creating-websphere-6-application.html' title='Creating WebSphere 6 application MBeans'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109265103592620989</id><published>2004-08-16T11:10:00.000+01:00</published><updated>2004-08-16T11:10:35.926+01:00</updated><title type='text'>Tool converts .Net code to Java</title><content type='html'>That one I like! It gives people real freedom and flexibility. Price is right too. I think I'll download 30 day evaluation when time permits.&lt;br /&gt;&lt;br /&gt;Now back to thinking about making a right choice between Hibernate and BMP EJBs...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109265103592620989?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.infoworld.com/article/04/08/11/Hnstryon_1.html' title='Tool converts .Net code to Java'/><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109265103592620989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109265103592620989' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109265103592620989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109265103592620989'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/08/tool-converts-net-code-to-java.html' title='Tool converts .Net code to Java'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109230380654578173</id><published>2004-08-12T10:43:00.000+01:00</published><updated>2004-08-12T10:43:26.546+01:00</updated><title type='text'>Optimizing CMP Entity Beans</title><content type='html'>Good and very thorough &lt;a href="http://www.theserverside.com/blogs/showblog.tss?id=OptimizingCMP"&gt;article&lt;/a&gt; about CMP Beans optimizations.&lt;br /&gt;&lt;br /&gt;One question still makes me nervous: If its so hard to do that dance - why bother with CMP?&lt;br /&gt;&lt;br /&gt;Moreover most of the "optimizations" are good for any database operations, not only for CMP beans. For example:&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;&lt;br /&gt;Make sure your finder methods use indexes &lt;br /&gt;&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;Huh? &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109230380654578173?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.theserverside.com/blogs/showblog.tss?id=OptimizingCMP' title='Optimizing CMP Entity Beans'/><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109230380654578173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109230380654578173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109230380654578173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109230380654578173'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/08/optimizing-cmp-entity-beans.html' title='Optimizing CMP Entity Beans'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109215687295021936</id><published>2004-08-10T17:54:00.000+01:00</published><updated>2004-08-10T18:03:53.316+01:00</updated><title type='text'></title><content type='html'>Listened to a &lt;a href="https://jboss.webex.com/jboss/onstage/tool/record/viewrecording1.php?EventID=316130887" target="_blank"&gt;Webinar at Jboss.org&lt;/a&gt; about EJB3. What a nice piece of technology! Basically everything will be defined in attributes: @Session is for session beans, @Entity is for entity beans. It's like having metadata injected into actual classes - nice, very nice idea! &lt;br /&gt;&lt;br /&gt;Though I must say that it's picked from .Net, but who cares?&lt;br /&gt;&lt;br /&gt;Tomorrow I will look closer to Hibernate and entity EJB inmplementation in JBoss Application Server. I need to have a knowledge which way is best: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;performance, &lt;br /&gt;&lt;li&gt;programmability, &lt;br /&gt;&lt;li&gt;availability of developers who are familiar with technologies&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Also need to spend some time analysing &lt;a href="http://struts.sourceforge.net/struts-cocoon/index.html" target="_blank"&gt;Cocoon2/Struts 1.1 integration&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109215687295021936?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109215687295021936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109215687295021936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109215687295021936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109215687295021936'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/08/listened-to-webinar-at-jboss.html' title=''/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109205807342203925</id><published>2004-08-09T14:27:00.000+01:00</published><updated>2004-08-09T14:27:53.423+01:00</updated><title type='text'>ASP.NET Development Center Home: ASP.NET 2.0 Internals</title><content type='html'>&lt;a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/html/Internals.asp"&gt;ASP.NET Development Center Home: ASP.NET 2.0 Internals&lt;/a&gt; - ASP.Net getting more useful. New quirks announced.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109205807342203925?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/html/Internals.asp' title='ASP.NET Development Center Home: ASP.NET 2.0 Internals'/><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109205807342203925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109205807342203925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109205807342203925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109205807342203925'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/08/aspnet-development-center-home-aspnet.html' title='ASP.NET Development Center Home: ASP.NET 2.0 Internals'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109205325600252650</id><published>2004-08-09T13:07:00.000+01:00</published><updated>2004-08-09T13:56:30.146+01:00</updated><title type='text'></title><content type='html'>After third example based on non-functioning code I dropped reading "Software Architecture in Practice".  I can provide more practice that authors of that book provided. There is no point continue reading that book if I have other software architecture books to read.&lt;br /&gt;&lt;br /&gt;Tomorrow would be a big day for work project - management does big software architecture presentation.&lt;br /&gt;&lt;br /&gt;We finally selected J2EE as platform choice. This is because all the infrastructure needed for out flexible project is available on Java side. We need to use xslt templates so our html pages would be really flexible - Cocoon2 is for that. We need a flexible way to manage our business logic - Struts is for that. And we need to scale our code up in future with no rewriting - J2EE for that. &lt;br /&gt;&lt;br /&gt;I always inclined for MS solutions, but here is the perfect example why have chosen J2EE over .Net. Flexibility of solution and less license costs are the major players here.&lt;br /&gt;&lt;br /&gt;Now I need to put more J2EE specific methods into my model. I wonder how Enterprise Architect would be able to switch my classes to Java and database to MySQL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109205325600252650?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109205325600252650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109205325600252650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109205325600252650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109205325600252650'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/08/after-third-example-based-on-non.html' title=''/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109110854400069929</id><published>2004-07-29T14:42:00.000+01:00</published><updated>2004-07-29T14:42:24.000+01:00</updated><title type='text'></title><content type='html'>Well, one more day reading book, I think I have to go straight to third "real life" architecture sample because second one was about another unreleased project. Now it's about Air Traffic Control project, which was funded by FAA, but never was implemented "because of budgeting issues". In real world that means "project was well over budget even before implementation started". Which, in turn, speaks against architecture, because architecture supposed to help projects to be on budget...&lt;br /&gt;&lt;br /&gt;Yesterday I subscribed on Channel9 Forums RSS and somebody wrote there that Visual Studio 2005 designer does not support UML. "Huh?", - I thought and went looking for more information. Read three or four articles and found that MS decided not to extend UML 2.0 with their extension, but to create whole new diagram language. Nice turn for Microsoft, wrong for developers. As far as I can see, MS research recognised that most developers use only class diagrams and never use any of the other UML artifacts and developers seldom use Visio, which Microsoft recognizes as full blown UML editor. That's fine, but what about architects? Should they use only class diagrams, which is by definition static views, to describe systems? There is no answer.&lt;br /&gt;&lt;br /&gt;I use &lt;a href="http://www.sparxsystems.com.au/" target="_blank"&gt;Enterprise Architect&lt;/a&gt; for my work. It is way better than Visio, much better than Rational XDE and would continue to stay better, than rudimentary Visual Studio 2005 tools. And it supports UML 2.0 and extensions. And there is a add-on for Visual Studio, though I haven't tried it. &lt;br /&gt;&lt;br /&gt;Back to work...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109110854400069929?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109110854400069929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109110854400069929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109110854400069929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109110854400069929'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/07/well-one-more-day-reading-book-i-think.html' title=''/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109100620577799606</id><published>2004-07-28T10:16:00.000+01:00</published><updated>2004-07-28T10:16:45.776+01:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.jetbrains.com/resharper/index.html" target="_blank"&gt;ReSharper&lt;/a&gt;, really useful C# Visual Studio Add-on, is released. &lt;br /&gt;&lt;br /&gt;One of our developers already asked me about buying it, but I can not justify that because company goes to outsourcing path and we will be doing only architectures, but no development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109100620577799606?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109100620577799606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109100620577799606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109100620577799606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109100620577799606'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/07/resharper-really-useful-c-visual.html' title=''/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109100579688026827</id><published>2004-07-28T10:09:00.000+01:00</published><updated>2004-07-28T10:09:56.880+01:00</updated><title type='text'></title><content type='html'>Continued reading "Software Architecture in Practice, Second Edition". Read first "hand on" example of applied architecture is about software system for fighter jet, A-7E. Described system is really good for non object oriented assembly language it suppose to run. Decomposition is good, paradigms are working. Fine system! &lt;br /&gt;&lt;br /&gt;But it just never worked! Authors claims that it was a primarily research goal for a system , not something for real production because the system was produced by US Naval Research Laboratory. As if US Navy has US Naval Software Production Laboratory of any kind. And if US Navy doesn't have any other software production facility and if project was never applied to a real fighter jet it is failure. We live in real world, we need real world working examples of architecture in place.&lt;br /&gt;&lt;br /&gt;Anyway, will continue reading though really wanted to stop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109100579688026827?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109100579688026827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109100579688026827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109100579688026827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109100579688026827'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/07/continued-reading-software.html' title=''/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7765398.post-109093416804730747</id><published>2004-07-27T13:52:00.000+01:00</published><updated>2004-07-27T14:30:38.960+01:00</updated><title type='text'>Day</title><content type='html'>&lt;p&gt;Started reading "&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0321154959/qid=1090932838/sr=1-1/ref=sr_1_1/002-2352615-7460810?v=glance&amp;amp;s=books"&gt;Software Architecture in Practice, Second Edition&lt;/a&gt;". It looks like a good boor, though first 20 pages have too much of "we mention it here, but for details refer to Chapter X". Which breaks logic a bit. &lt;br /&gt;&lt;br /&gt;At work got through two meetings so far: &lt;ol&gt;&lt;li&gt;mini one, about job spec for Program Manager. &lt;br /&gt;&lt;blockquote&gt;Removed all "&lt;em&gt;new media&lt;/em&gt;"(wtf is that, anyway?) and added knowledge of RUP and UML as mandatory attributes. Is it a part of the job of Technical Architect to create a job specs for managers?&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;about status of the Product we are building. &lt;br /&gt;&lt;blockquote&gt;We are &lt;em&gt;oficially&lt;/em&gt; late now. &lt;br /&gt;Not because of our bad work, but because of a low priority our requirements gathering work has in the eyes of our client. And we lost BA down the road. Account manager wants to know why we don't need a full blown Content Management System in this project. Well, that's the question: why do we need it if everything visible will be generated from database? &lt;br /&gt;&lt;br /&gt;Now I have date of my first deliverable: I need to deliver first version of Software Architecture documentation next Wednesday. I pretty confident that I will be able to finish most of that document, so no worries here.&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;Changed database schema a bit. Now Promotions are handled the same way as any additional information related to Product Catalog Items. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7765398-109093416804730747?l=softarch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softarch.blogspot.com/feeds/109093416804730747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7765398&amp;postID=109093416804730747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109093416804730747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7765398/posts/default/109093416804730747'/><link rel='alternate' type='text/html' href='http://softarch.blogspot.com/2004/07/day.html' title='Day'/><author><name>TA</name><uri>http://www.blogger.com/profile/10869327976301628570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
