<?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-17138913</id><updated>2012-01-25T08:28:15.968+01:00</updated><category term='DBOracle'/><category term='DBSqlServer'/><category term='SQL'/><category term='.NETSilverlight'/><category term='Links'/><category term='Hibernate'/><category term='JavaJDEV'/><category term='JavaWeb'/><category term='Windows'/><category term='Java'/><category term='.NETAspNET'/><category term='.NETWinForms'/><category term='DBDB2'/><category term='.NET'/><category term='JavaWebJSF'/><category term='EnterpriseArchitect'/><title type='text'>Rainer Feest Blog</title><subtitle type='html'>Tips,Tricks,Links rund um Java, .NET, Datenbanken</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default?start-index=101&amp;max-results=100'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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>139</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17138913.post-5959015441578301663</id><published>2011-09-30T14:39:00.000+02:00</published><updated>2011-09-30T14:39:08.070+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Sysprep einer virtuellen Maschine</title><content type='html'>Auf dieser &lt;a href="https://blogs.technet.com/b/megand/archive/2005/01/20/357570.aspx"&gt;Seite&lt;/a&gt; ist beschrieben, was beim Klonen von virtuellen Maschinen zu beachten ist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5959015441578301663?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5959015441578301663/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5959015441578301663' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5959015441578301663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5959015441578301663'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/09/sysprep-einer-virtuellen-maschine.html' title='Sysprep einer virtuellen Maschine'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7491223398270462520</id><published>2011-09-27T14:04:00.000+02:00</published><updated>2011-09-27T14:04:08.365+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Hersteller des Geräts über MAC-Adresse heraus</title><content type='html'>&lt;a href="http://www.macvendorlookup.com/"&gt;http://www.macvendorlookup.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7491223398270462520?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7491223398270462520/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7491223398270462520' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7491223398270462520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7491223398270462520'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/09/hersteller-des-gerats-uber-mac-adresse.html' title='Hersteller des Geräts über MAC-Adresse heraus'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5681829578971050396</id><published>2011-09-01T12:03:00.001+02:00</published><updated>2011-09-01T14:37:34.186+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Delete/Update statements mit joins</title><content type='html'>Anstatt beim DELETE einen &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DELETE FROM TableA WHERE FKID IN (....)&lt;/pre&gt;&lt;br /&gt;zu machen kann man das ganze auch wie folgt formulieren:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DELETE a FROM TableA a&lt;br /&gt;INNER JOIN TableB b on b.id = a.fkid&lt;br /&gt;and ...&lt;/pre&gt;&lt;br /&gt;Beim Update kann man es ganz ähnlich machen:&lt;br /&gt;&lt;pre&gt;UPDATE&lt;br /&gt;    TableA&lt;br /&gt;SET&lt;br /&gt;    TableA.Name=TableB.Name&lt;br /&gt;FROM&lt;br /&gt;    TableA&lt;br /&gt;INNER JOIN TableB&lt;br /&gt;ON&lt;br /&gt;    TableA.OBJECTID=TABLEB.OBJECTID&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5681829578971050396?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5681829578971050396/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5681829578971050396' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5681829578971050396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5681829578971050396'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/09/deleteupdate-statements-mit-joins.html' title='Delete/Update statements mit joins'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6353210401741089704</id><published>2011-07-12T10:22:00.000+02:00</published><updated>2011-07-12T10:22:35.223+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>IIS: Welche PID gehört zu welchem App Pool?</title><content type='html'>Um herauszufinden, welche ProzessID (PID) zu welchem App Pool des IIS gehört kann man den SysInternals ProcessExplorer verwenden. Dort muss die Spalte "Command Line" hinzugefügt werden. Dort steht der Name des App Pools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6353210401741089704?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6353210401741089704/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6353210401741089704' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6353210401741089704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6353210401741089704'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/07/iis-welche-pid-gehort-zu-welchem-app.html' title='IIS: Welche PID gehört zu welchem App Pool?'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4281082082691203273</id><published>2011-02-18T09:41:00.003+01:00</published><updated>2011-07-21T12:13:18.762+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Reihenfolge, in der Assemblies geladen werden unter .NET</title><content type='html'>Möchte man eine Assembly, die einen "Strong Name" hat und im GAC ist explizit aus einem lokalen Verzeichnis laden (z.B. zu Debug-Zwecken), muss die Assembly ohne Public Key referenziert werden. Dass erreicht man z.B. in Visual Studio in dem man das Projektfile editiert und unter&lt;br /&gt;&lt;pre&gt;…&lt;br /&gt;&lt;br /&gt;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Include="RFeest.SomeAssembly, Version=1.0.0.3421, Culture=neutral, &lt;b&gt;PublicKeyToken=2a234234234fasd&lt;/b&gt;, processorArchitecture=MSIL"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SpecificVersion&amp;gt;False&amp;lt;/SpecificVersion&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HintPath&amp;gt;..\..\..\projects\bin\RFeest.SomeAssembly.dll&amp;lt;/HintPath&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt;&lt;br /&gt;&lt;br /&gt;…&lt;/pre&gt;&lt;br /&gt;den PublicKey entfernt:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;…&lt;br /&gt;&lt;br /&gt;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Reference Include="RFeest.SomeAssembly, processorArchitecture=MSIL"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SpecificVersion&amp;gt;False&amp;lt;/SpecificVersion&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HintPath&amp;gt;..\..\..\projects\bin\RFeest.SomeAssembly.dll&amp;lt;/HintPath&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Reference&amp;gt;&lt;br /&gt;&lt;br /&gt;…&lt;/pre&gt;&lt;br /&gt;Das hängt damit zusammen, dass immer zuerst im GAC gesucht wird.&lt;br /&gt;&lt;br /&gt;Siehe auch &lt;a href="http://msdn.microsoft.com/en-us/library/aa720133.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa720133.aspx&lt;/a&gt; und &lt;a href="http://www.informit.com/articles/article.aspx?p=30601&amp;amp;seqNum=6"&gt;http://www.informit.com/articles/article.aspx?p=30601&amp;amp;seqNum=6&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4281082082691203273?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4281082082691203273/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4281082082691203273' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4281082082691203273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4281082082691203273'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/02/reihenfolge-in-der-assemblies-geladen.html' title='Reihenfolge, in der Assemblies geladen werden unter .NET'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3078030591094854990</id><published>2011-02-09T14:36:00.002+01:00</published><updated>2011-02-18T09:45:25.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Defekte TCP/IP-Konfiguration unter Windows zurücksetzen</title><content type='html'>Um eine defekte TCP/IP-Konfigurations zurückzusetzen (z.B. wenn die gesetzte IP-Adresse nach einem Reboot wieder verschwindet) muss folgender Befehl auf der Kommandozeile ausgeführt werden:&lt;pre&gt;netsh int ip reset&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3078030591094854990?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3078030591094854990/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3078030591094854990' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3078030591094854990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3078030591094854990'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/02/defekte-tcpip-konfiguration-unter.html' title='Defekte TCP/IP-Konfiguration unter Windows zurücksetzen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7076226612876631750</id><published>2011-02-02T17:37:00.003+01:00</published><updated>2011-02-18T09:45:05.999+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>sqlcmd, SQLServer ohne ManagementStudio</title><content type='html'>Der SQLServer kann auch ohne ManagementStudio abgefragt werden. Praktisch, wenn man nur z.B. kurz einen Connect testen möchte.&lt;br /&gt;&lt;br /&gt;Starten des Kommandozeilentools mit Connect &lt;pre&gt;sqlcmd -S localhost\RFSQL2008R2&lt;/pre&gt;&lt;br /&gt;DB auswählen &lt;br /&gt;&lt;pre&gt;select MY_DB&lt;/pre&gt;&lt;br /&gt;Einen Select ausführen &lt;br /&gt;&lt;pre&gt;select * from mytable;&lt;br /&gt;GO&lt;/pre&gt;&lt;br /&gt;Siehe auch&lt;p&gt;&lt;a title="http://msdn.microsoft.com/de-de/library/ms162773.aspx" href="http://msdn.microsoft.com/de-de/library/ms162773.aspx"&gt;http://msdn.microsoft.com/de-de/library/ms162773.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7076226612876631750?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7076226612876631750/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7076226612876631750' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7076226612876631750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7076226612876631750'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2011/02/sqlcmd-sqlserver-ohne-managementstudio.html' title='sqlcmd, SQLServer ohne ManagementStudio'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6519520069436050481</id><published>2010-11-09T16:59:00.000+01:00</published><updated>2010-11-09T17:00:49.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>Dynamic Management Views im SqlServer</title><content type='html'>&lt;a href="http://weblogs.sqlteam.com/mladenp/archive/2006/09/21/12378.aspx"&gt;http://weblogs.sqlteam.com/mladenp/archive/2006/09/21/12378.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6519520069436050481?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6519520069436050481/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6519520069436050481' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6519520069436050481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6519520069436050481'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/11/dynamic-management-views-im-sqlserver.html' title='Dynamic Management Views im SqlServer'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3771121326756436439</id><published>2010-09-17T14:46:00.004+02:00</published><updated>2010-09-17T14:53:35.243+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>Deadlocks im SqlServer analysieren</title><content type='html'>Um Details zu einem DeadLock im SQL-Server zu analysieren müssen folgende beiden Statements zunächst auf dem SQLServer ausgeführt werden:&lt;pre&gt;DBCC TRACEON(1204,-1)&lt;/pre&gt;und&lt;pre&gt;DBCC TRACEON(1222,-1)&lt;/pre&gt;Im Falle eines DeadLocks erhält man dann im SQLSever-Errorlog (Achtung: NICHT IM WINDOWS EVENT-LOG, sondern in Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG ) folgenden Eintrag:&lt;br /&gt;&lt;pre&gt;4:33:24.60 spid5s      Deadlock encountered .... Printing deadlock information&lt;br /&gt;2010-09-17 14:33:24.60 spid5s      Wait-for graph&lt;br /&gt;2010-09-17 14:33:24.62 spid5s  &lt;br /&gt;2010-09-17 14:33:24.62 spid5s      Node:1&lt;br /&gt;&lt;br /&gt;2010-09-17 14:33:24.62 spid5s      KEY: 8:72057594042384384 (4600ba76d76e) CleanCnt:3 Mode:X Flags: 0x0&lt;br /&gt;2010-09-17 14:33:24.62 spid5s       Grant List 2:&lt;br /&gt;2010-09-17 14:33:24.62 spid5s         Owner:0x178A6BE0 Mode: X        Flg:0x0 Ref:0 Life:02000000 SPID:57 ECID:0 XactLockInfo: 0x1CF52C7C&lt;br /&gt;2010-09-17 14:33:24.62 spid5s         SPID: 57 ECID: 0 Statement Type: SELECT Line #: 1&lt;br /&gt;2010-09-17 14:33:24.62 spid5s         Input Buf: Language Event: SELECT * FROM TAB_CATALOG&lt;br /&gt;2010-09-17 14:33:24.62 spid5s       Requested By:&lt;br /&gt;2010-09-17 14:33:24.62 spid5s         ResType:LockOwner Stype:'OR'Xdes:0x2B9038F8 Mode: S SPID:61 BatchID:0 ECID:0 TaskProxy:(0x26102378) Value:0x26effe40 Cost:(0/2356)&lt;br /&gt;2010-09-17 14:33:24.62 spid5s  &lt;br /&gt;2010-09-17 14:33:24.62 spid5s      Node:2&lt;br /&gt;&lt;br /&gt;2010-09-17 14:33:24.62 spid5s      KEY: 8:72057594040352768 (3c004236556a) CleanCnt:2 Mode:X Flags: 0x0&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3771121326756436439?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3771121326756436439/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3771121326756436439' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3771121326756436439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3771121326756436439'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/09/deadlocks-im-sqlserver-analysieren.html' title='Deadlocks im SqlServer analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6863193457333973183</id><published>2010-09-14T14:27:00.003+02:00</published><updated>2010-09-14T14:36:51.511+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>T4 Templates debuggen mit VisualStudio</title><content type='html'>Um T4-Templates aus VisualStudio heraus zu debuggen muss das Template um die Debug Property erweitert werden:&lt;pre&gt;&amp;lt;#@ template langauge="C#v3.5" &lt;b&gt;debug="True"&lt;/b&gt;#&amp;gt;&lt;/pre&gt;Dadurch werden das notwendig PDB-File und die Source-Datei unter c:\Documents and Settings\USERNAME\Local Settings\Temp\ abgelegt. Danach kann im Script&lt;pre&gt;System.Diagnostics.Debugger.Launch();&lt;/pre&gt;eingefügt werden um den Debugger zu starten.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Siehe auch &lt;a href="http://www.olegsych.com/2008/09/t4-tutorial-debugging-code-generation-files"&gt;http://www.olegsych.com/2008/09/t4-tutorial-debugging-code-generation-files&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6863193457333973183?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6863193457333973183/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6863193457333973183' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6863193457333973183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6863193457333973183'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/09/t4-templates-debuggen-mit-visualstudio.html' title='T4 Templates debuggen mit VisualStudio'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6621377580924076071</id><published>2010-09-08T09:07:00.003+02:00</published><updated>2010-09-08T09:10:58.212+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Firefox &amp; NTLM</title><content type='html'>Um im Firefox NTLM Authentification zu verwenden muss über&lt;pre&gt;about:config&lt;/pre&gt;die Site eingetragen werden, zu der NTLM Authentification erlaubt werden soll. Dies wird unter&lt;pre&gt;network.automatic-ntlm-auth.trusted-uris&lt;/pre&gt;gemacht. Mehrere Sites werden durch Komma getrennt:&lt;pre&gt;http://intranet,http://server1&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6621377580924076071?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6621377580924076071/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6621377580924076071' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6621377580924076071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6621377580924076071'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/09/firefox-ntlm.html' title='Firefox &amp; NTLM'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7951254546611476260</id><published>2010-08-06T08:44:00.005+02:00</published><updated>2010-08-06T08:50:47.938+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>PerfMon-Logs in DB importieren</title><content type='html'>Schritt 1: ODBC-Datenquelle anlegen: "MyODBCSource"&lt;br /&gt;Schritt 2: Über relog in DB importieren:&lt;pre&gt;relog myperlog.blg -f SQL -o SQL:MyODBCSource!myperlog.blg&lt;/pre&gt;Schritt 3: In der ODBC-Datenquelle wurden 3 Tabellen angelegt:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DisplayTOID: Informationen über alle importieren Logs&lt;/li&gt;&lt;li&gt;CounterDetails: Informationen über alle gesammelten Counter&lt;/li&gt;&lt;li&gt;CounterData: Daten zu den Countern (GUID FK zu DisplayTOID und CounterID FK zu CounterDetails)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7951254546611476260?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7951254546611476260/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7951254546611476260' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7951254546611476260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7951254546611476260'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/08/perfmon-logs-in-db-importieren.html' title='PerfMon-Logs in DB importieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8634361899337530906</id><published>2010-07-23T13:26:00.003+02:00</published><updated>2010-07-27T09:01:29.734+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>UNC Alias für einen DomainController unter Windows 2003 Server</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Man hat im DNS-Server ein Alias für den Domain-Controller erzeugt. Dieses kann aber nicht über einen UNC-Pfad aufgelöst werden.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Diese zwei Registry-Keys eintragen, dann funktioniert es:&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]&lt;br /&gt;"DisableStrictNameChecking"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]&lt;br /&gt;"DisableLoopbackCheck"=dword:00000001&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8634361899337530906?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8634361899337530906/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8634361899337530906' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8634361899337530906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8634361899337530906'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/07/unc-alias-fur-einen-domaincontroller.html' title='UNC Alias für einen DomainController unter Windows 2003 Server'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3515929253242897053</id><published>2010-05-06T16:24:00.000+02:00</published><updated>2011-02-16T11:45:27.721+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Binding Probleme von Assemblies analysieren</title><content type='html'>Um Binding-Probleme wie diese   &lt;pre&gt;System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;unter .NET zu finden, gibt es das &lt;a href="http://msdn.microsoft.com/de-de/library/e74a18c4%28VS.80%29.aspx"&gt;Assembly Binding Log Viewer-Tool (Fuslogvw.exe)&lt;/a&gt;, das Teil des Microsoft SDKs für Windows ist.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3515929253242897053?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3515929253242897053/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3515929253242897053' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3515929253242897053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3515929253242897053'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/05/binding-probleme-von-assemblies.html' title='Binding Probleme von Assemblies analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5518336045164940941</id><published>2010-05-03T08:32:00.002+02:00</published><updated>2010-05-03T08:33:22.640+02:00</updated><title type='text'>Perforce Client (Workspace) ändern für Explorer Plugin</title><content type='html'>&lt;pre&gt;p4 set p4client=[clientname]&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5518336045164940941?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5518336045164940941/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5518336045164940941' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5518336045164940941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5518336045164940941'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/05/perforce-client-workspace-andern-fur.html' title='Perforce Client (Workspace) ändern für Explorer Plugin'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2982065940696941838</id><published>2010-04-27T10:41:00.008+02:00</published><updated>2010-04-27T11:04:05.763+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>LOG4NET Config wird nicht geladen</title><content type='html'>Problem: Die Konfiguration von LOG4NET in der App.Config wird nicht geladen.&lt;br /&gt;&lt;br /&gt;Lösung:&lt;br /&gt;&lt;br /&gt;1. Prüfen, ob in AssemblyInfo.cs folgendes Attribut gesetzt ist:&lt;pre&gt;[assembly: log4net.Config.XmlConfigurator(Watch = true)]&lt;/pre&gt;&lt;br /&gt;2. Prüfen, ob die App.config folgende Einträge enthält:&lt;br /&gt;&lt;pre&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;configSections&amp;gt;&lt;br /&gt;   &amp;lt;section name="log4net" type="System.Configuration.IgnoreSectionHandler" /&amp;gt;&lt;br /&gt; &amp;lt;/configSections&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;log4net&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"&amp;gt;&lt;br /&gt;   &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br /&gt;     &amp;lt;header value="[Header]" /&amp;gt;&lt;br /&gt;     &amp;lt;footer value="[Footer]" /&amp;gt;&lt;br /&gt;     &amp;lt;conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /&amp;gt;&lt;br /&gt;   &amp;lt;/layout&amp;gt;&lt;br /&gt; &amp;lt;/appender&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;root&amp;gt;&lt;br /&gt;   &amp;lt;level value="ERROR" /&amp;gt;&lt;br /&gt;   &amp;lt;appender-ref ref="ConsoleAppender" /&amp;gt;&lt;br /&gt; &amp;lt;/root&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/log4net&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. Ist die Assembly (mit der LOG4NET-Konfiguration in der app.config) eine DLL, die z.B. über NUnit ausgeführt wird und andere DLLs referenziert, die LOG4NET verwenden, muss die DLL explizit eine LOG4NET-Klasse laden, auch wenn sie selbst kein Logging verwenden möchte. Sonst wird die Konfiguration nicht geladen!&lt;br /&gt;&lt;pre&gt;private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);&lt;/pre&gt;&lt;br /&gt;Um möglichen Problemen auf den Grund zu gehen, kann das LOG4NET-interne Logging eingeschaltet werden in der app.config:&lt;pre&gt;&amp;lt;appsettings&amp;gt;&lt;br /&gt;&amp;lt;add key="log4net.Internal.Debug" value="true"&amp;gt;&amp;lt;/add&amp;gt;&lt;br /&gt;&amp;lt;/appsettings&amp;gt;&lt;/pre&gt;&lt;br /&gt;Wird die Konfiguration erfolgreich geladen, so muss folgender Log-Output generiert werden:&lt;pre&gt;...&lt;br /&gt;log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [C:\projects\Testing\ReportingTestProject\bin\Debug\ReportingTestProject.dll.config]&lt;br /&gt;...&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2982065940696941838?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2982065940696941838/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2982065940696941838' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2982065940696941838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2982065940696941838'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/04/log4net-config-wird-nicht-geladen.html' title='LOG4NET Config wird nicht geladen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1412816431628061955</id><published>2010-04-09T14:04:00.015+02:00</published><updated>2010-10-29T08:28:21.374+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>PowerShell 2.0 Notizen</title><content type='html'>&lt;ul&gt;&lt;li&gt;PowerShell 2.0 wird mit Windows 7 ausgeliefert, für andere Betriebssyteme kann man das &lt;a href="http://support.microsoft.com/kb/968929"&gt;Windows Management Framework&lt;/a&gt; installieren, das PowerShell 2.0 enthält.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Ab 2.0 gibt´s eine IDE: Windows PowerShell ISE&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_d-7MtdqcILI/S78kxMmgoJI/AAAAAAAAABY/kJ1Fjj0cgDo/s1600/ScreenShot046.bmp"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 320px;" src="http://2.bp.blogspot.com/_d-7MtdqcILI/S78kxMmgoJI/AAAAAAAAABY/kJ1Fjj0cgDo/s400/ScreenShot046.bmp" alt="" id="BLOGGER_PHOTO_ID_5458121701011267730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wichtige Befehle:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get-Help (help): Hilfe zu einem CommandLet, z.B. &lt;pre&gt;help dir&lt;/pre&gt; Hilfe zu einem Befehl oder &lt;pre&gt;help *&lt;/pre&gt;Hilfeübersicht über eine Menge von Befehlen (definiert über einen Filter)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get-Children (dir): Erweitertes "Dir"&lt;/li&gt;&lt;li&gt;Format-List (fl): Formattiert Ausgabe als Liste (alle Items untereinander als Key/Value-Paare), z.B. &lt;pre&gt;dir | fl&lt;/pre&gt; für die Default Attribute&lt;br /&gt;&lt;br /&gt;oder &lt;pre&gt;dir | fl *&lt;/pre&gt;für alle verfügbaren Attributen (der Stern * eignet sich auch zur Ermittlung welche Attribute ein CommandLet hat)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Format-Table (ft): Formattiert Ausgabe als Tabelle (z.B: &lt;pre&gt;dir | ft Name,Length&lt;/pre&gt; mit zwei bestimmten Attributen&lt;/li&gt;&lt;li&gt;Sort-Object (sort): Sortiert Objekte, z.B. &lt;pre&gt; dir | sort LastWriteTime&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Signieren&lt;/span&gt;: Infos, wie PowerShell-Scripts signiert werden können gibt es &lt;a href="http://www.hanselman.com/blog/SigningPowerShellScripts.aspx"&gt;hier&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sollte beim Signieren ein "UnknownError" kommen liegt das daran, dass das .PS1-File mit der Powershell ISE erzeugt wurde. Diese speichert per default als "Unicode big endian". Einfach die Datei in UTF-8 speichern, dann funktioniert das Signieren mit Set-AuthenticodeSignature.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1412816431628061955?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1412816431628061955/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1412816431628061955' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1412816431628061955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1412816431628061955'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/04/powershell-20-notizen.html' title='PowerShell 2.0 Notizen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d-7MtdqcILI/S78kxMmgoJI/AAAAAAAAABY/kJ1Fjj0cgDo/s72-c/ScreenShot046.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-536350816386397895</id><published>2010-03-24T16:05:00.001+01:00</published><updated>2010-03-24T16:08:03.348+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NETAspNET'/><title type='text'>Prozess-IDs der IIS AppPools</title><content type='html'>&lt;pre&gt;%systemroot%\system32\IISApp.vbs&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_d-7MtdqcILI/S6oqcDxcSLI/AAAAAAAAABQ/jWZdpaJyMAc/s1600/ScreenShot044.bmp"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 73px;" src="http://1.bp.blogspot.com/_d-7MtdqcILI/S6oqcDxcSLI/AAAAAAAAABQ/jWZdpaJyMAc/s400/ScreenShot044.bmp" alt="" id="BLOGGER_PHOTO_ID_5452216960422791346" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-536350816386397895?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/536350816386397895/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=536350816386397895' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/536350816386397895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/536350816386397895'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/03/prozess-ids-der-iis-apppools.html' title='Prozess-IDs der IIS AppPools'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_d-7MtdqcILI/S6oqcDxcSLI/AAAAAAAAABQ/jWZdpaJyMAc/s72-c/ScreenShot044.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-3447342955416200230</id><published>2010-03-15T11:47:00.002+01:00</published><updated>2010-03-15T11:54:44.998+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>ActivityMonitor im SqlServer Management Studio starten</title><content type='html'>Um zu analysieren, welche Prozesse aktuell mit dem SqlServer verbunden sind, kann man den ActivityMonitor starten.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_d-7MtdqcILI/S54QquHFY6I/AAAAAAAAABA/bPIa0VwNZzI/s1600-h/ScreenShot036.bmp"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 227px; height: 400px;" src="http://4.bp.blogspot.com/_d-7MtdqcILI/S54QquHFY6I/AAAAAAAAABA/bPIa0VwNZzI/s400/ScreenShot036.bmp" alt="" id="BLOGGER_PHOTO_ID_5448810925283173282" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3447342955416200230?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3447342955416200230/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3447342955416200230' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3447342955416200230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3447342955416200230'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/03/activitymonitor-im-sqlserver-management.html' title='ActivityMonitor im SqlServer Management Studio starten'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_d-7MtdqcILI/S54QquHFY6I/AAAAAAAAABA/bPIa0VwNZzI/s72-c/ScreenShot036.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-5521133324411298142</id><published>2010-03-12T14:27:00.001+01:00</published><updated>2010-03-12T14:29:19.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>SQLServer Backups überprüfen</title><content type='html'>&lt;pre&gt;RESTORE VERIFYONLY FROM DISK = N'd:\files\DBs\mybackup.bak'&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5521133324411298142?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5521133324411298142/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5521133324411298142' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5521133324411298142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5521133324411298142'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/03/sqlserver-backups-uberprufen.html' title='SQLServer Backups überprüfen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5183895845890230035</id><published>2010-02-04T15:59:00.004+01:00</published><updated>2010-02-19T15:50:23.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>Verwaiste Login&lt;-&gt;DBUser-Zuordnung nach Restore beim SqlServer</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Nach dem Einspielen eines Backups auf dem SqlServer sind die Login&lt;-&gt;DB User Zuordnungen verschwunden.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Wiederherstellung der Zuordnunung über dieses Script:&lt;br /&gt;&lt;pre&gt;exec sp_change_users_login 'Auto_Fix', 'MyUser'&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5183895845890230035?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5183895845890230035/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5183895845890230035' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5183895845890230035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5183895845890230035'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/02/verweiste-login-dbuser-zuordnung-nach.html' title='Verwaiste Login&lt;-&gt;DBUser-Zuordnung nach Restore beim SqlServer'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4779492885165308824</id><published>2010-01-20T12:11:00.002+01:00</published><updated>2010-01-20T12:15:38.002+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>SID zu einem User ermitteln</title><content type='html'>Über das Sysinternal-Tool psgetsid kann man SIDs ermitteln&lt;br /&gt;&lt;br /&gt;SID zu einem User&lt;br /&gt;&lt;pre&gt;psgetsid.exe "User Name"&lt;/pre&gt;&lt;br /&gt;User zu einer SID&lt;br /&gt;&lt;pre&gt;psgetsid.exe S-1-5-21-3915356022-177584461-1412300212-1116&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4779492885165308824?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4779492885165308824/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4779492885165308824' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4779492885165308824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4779492885165308824'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/01/sid-zu-einem-user-ermitteln.html' title='SID zu einem User ermitteln'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8659335587455727893</id><published>2010-01-13T13:45:00.002+01:00</published><updated>2010-01-13T16:00:18.810+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>InstallUtil Debuggen</title><content type='html'>Um Code zu debuggen, der über das InstallUtil installiert werden soll, kann wie folgt vorgegangen werden:&lt;br /&gt;&lt;pre&gt;public class MyInstaller: Installer&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;     protected override void OnBeforeInstall(IDictionary savedState)&lt;br /&gt;     {&lt;br /&gt;       base.OnBeforeInstall(savedState);&lt;br /&gt;       &lt;span style="font-weight:bold;"&gt;System.Diagnostics.Debugger.Launch();&lt;/span&gt;&lt;br /&gt;     }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Dadurch wird der Debugger gestartert, bevor es los geht.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8659335587455727893?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8659335587455727893/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8659335587455727893' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8659335587455727893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8659335587455727893'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2010/01/installutil-debuggen.html' title='InstallUtil Debuggen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5091650421573354270</id><published>2009-11-27T11:12:00.003+01:00</published><updated>2011-07-15T15:21:58.332+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>SQL Statements um einen SQLServer-Trace aus einer Tabelle zu analysieren</title><content type='html'>Generellen Analysen:&lt;br /&gt;&lt;pre&gt;SELECT&lt;br /&gt;   Duration as DurationInMicroSeconds,  &lt;br /&gt;   DATALENGTH(TextData) as len,&lt;br /&gt;   CPU,&lt;br /&gt;   Reads,&lt;br /&gt;   Writes,&lt;br /&gt;   TextData  &lt;br /&gt;FROM&lt;br /&gt;   trc_table01&lt;br /&gt;WHERE&lt;br /&gt;   TextData IS NOT NULL&lt;br /&gt;order by duration desc;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT&lt;br /&gt;   AVG(Duration) as AVGDuration,&lt;br /&gt;   AVG(READS) AS AVGReads,&lt;br /&gt;   AVG(CPU) AS AVGCPU,&lt;br /&gt;   COUNT(*) AS TotalStatements&lt;br /&gt;   &lt;br /&gt;FROM&lt;br /&gt;   trc_table01   &lt;br /&gt;WHERE&lt;br /&gt;   TextData IS NOT NULL;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT COUNT(*) AS NO_SQLSTATEMENTS_CPU_MORE_THAN_ZERO, AVG(CPU) AS AVG_CPU&lt;br /&gt;FROM&lt;br /&gt;   trc_table01&lt;br /&gt;WHERE CPU&gt;0&lt;br /&gt;AND TextData IS NOT NULL;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Nach einem speziellen Teil suchen&lt;br /&gt;&lt;pre&gt;SELECT&lt;br /&gt;COUNT(CAST(TextData AS nvarchar(MAX))),&lt;br /&gt;CAST(TextData AS nvarchar(MAX)) AS x&lt;br /&gt;FROM&lt;br /&gt;TRACETABLE&lt;br /&gt;WHERE&lt;br /&gt;TextData LIKE '%SUCHBEGRIFF%'&lt;br /&gt;GROUP BY&lt;br /&gt;CAST(TextData AS nvarchar(MAX))&lt;br /&gt;ORDER BY&lt;br /&gt;1 DESC&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5091650421573354270?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5091650421573354270/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5091650421573354270' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5091650421573354270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5091650421573354270'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/sql-statement-um-einen-sqlserver-trace.html' title='SQL Statements um einen SQLServer-Trace aus einer Tabelle zu analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6887584562196540407</id><published>2009-11-25T09:04:00.008+01:00</published><updated>2010-03-10T11:42:51.568+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Track Project Item ein-/ausschalten in VisualStudio</title><content type='html'>1.) Über die Options in VisualStudio kann man dauerhaft die Einstellung machen:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_d-7MtdqcILI/S5d3SxCuBAI/AAAAAAAAAA4/MwtNv2SGxLo/s1600-h/ScreenShot033.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 119px;" src="http://3.bp.blogspot.com/_d-7MtdqcILI/S5d3SxCuBAI/AAAAAAAAAA4/MwtNv2SGxLo/s400/ScreenShot033.bmp" alt="" id="BLOGGER_PHOTO_ID_5446953438613996546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.)Über ein Macro kann man in VisualStudio das aktuell gewählte Sourcefile im SolutionExplorer automatisch auswählen lassen. Dazu einfach einfach folgenden Code in ein Macro kopieren&lt;pre&gt;DTE.ExecuteCommand("View.TrackActivityInSolutionExplorer")&lt;/pre&gt; und damit einen Button definieren. Darüber lässt sich das Feature dann auch wieder ausschalten.&lt;br /&gt;&lt;br /&gt;3.)Mit dem Resharper geht es nocht bequemer: Einfach&lt;pre&gt;SHIFT+ALT+L&lt;/pre&gt; drücken, dann navigiert der SolutionExlorer zum aktuell ausgewählten Codefile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6887584562196540407?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6887584562196540407/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6887584562196540407' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6887584562196540407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6887584562196540407'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/track-project-item-ein-ausschalten-in.html' title='Track Project Item ein-/ausschalten in VisualStudio'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_d-7MtdqcILI/S5d3SxCuBAI/AAAAAAAAAA4/MwtNv2SGxLo/s72-c/ScreenShot033.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-3850473305677731999</id><published>2009-11-16T16:10:00.009+01:00</published><updated>2010-12-01T07:59:22.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>VisualStudio RemoteDebugging zwischen zwei Domains</title><content type='html'>Will man mit VisualStudio RemoteDebugging zwischen zwei Rechnern betreiben, die in unterschiedlichen Domains sitzen, muss folgendes beachtet werden:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Auf dem Remote-Rechner (z.B. mit DNS-Name remoterechner.remotedomain) einen Domain-User anlegen (z.B: REMOTEDOMAIN\MYUSER01)&lt;/li&gt;&lt;li&gt;Auf dem Rechner mit VisualStudion einen lokalen(!)  User anlegen (z.B: VS01\MYUSER01) mit gleichem Namen/Passwort&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Mit dem Domain-User den MSVSMON starten (liegt im VisualStudio-Verzeichnis unter Common7\IDE\Remote Debugger\x86\msvsmon.exe, dieser kann z.B. per Share zugänglich gemacht werden) auf dem Remote-Rechner mit dem zu debuggenden Prozess starten.&lt;/li&gt;&lt;li&gt;VisualStudio auf dem anderen Rechner mit dem lokalen Benutzer VS01\MYUSER01 starten&lt;/li&gt;&lt;li&gt;Im Debuggin-Menüt "Attach to process" wählen. (Transport: Default, Qualifier: REMOTEDOMAIN\myuser01@remoterechner.remotedomain)&lt;/li&gt;&lt;/ul&gt;Alternative: 2 lokale Benutzer mit gleicher Userid/Passwort-Kombination (wenn beide keine DomainController sind)&lt;br /&gt;&lt;br /&gt;Die PDBs des zu debuggenden Moduls müssen auf dem Zielrechner im GAC liegen. Das Modul sollte mit "DEBUG" in VisualStudio gebuildet werden, sonst kann es sein, dass nicht alle Variablenwerte im Debugger sichtbar sind (OPTIMIZED).&lt;br /&gt;&lt;br /&gt;Hinweis: Wenn man mit z.B. VS 2008 debuggen möchte, muss man auch den RemoteDebugger aus dem VS 2008 Verzeichnis nehmen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3850473305677731999?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3850473305677731999/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3850473305677731999' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3850473305677731999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3850473305677731999'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/visualstudio-remotedebugging-zwischen.html' title='VisualStudio RemoteDebugging zwischen zwei Domains'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8907072084112569342</id><published>2009-11-13T13:36:00.004+01:00</published><updated>2009-11-13T14:02:36.146+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>LOG4NET erzeugt doppelte Einträge</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Log4NET erzeugt doppelte Einträge&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ursache&lt;/span&gt;: Log4NET verhält sich anders als LOG4J. Wird ein Appender zweimal referenziert werden&lt;br /&gt;die Einträge verdoppelt.&lt;br /&gt;&lt;pre&gt;&amp;lt;root&amp;gt;&lt;br /&gt;  &amp;lt;level value="ERROR" /&amp;gt;&lt;br /&gt;  &amp;lt;appender-ref ref="MyFileAppender" /&amp;gt;  &lt;br /&gt;&amp;lt;/root&amp;gt;&lt;br /&gt;&amp;lt;logger name="Some.Logger" additivity="false"&amp;gt;&lt;br /&gt;  &amp;lt;level value="INFO" /&amp;gt;&lt;br /&gt;  &amp;lt;appender-ref ref="MyFileAppender" /&amp;gt;  &lt;br /&gt;&amp;lt;/logger&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Ein Appender darf nur einmal definiert werden. Some.Logger erbt in diesem Fall von Root und schreibt dadurch in MyFileAppender&lt;br /&gt;&lt;pre&gt;&amp;lt;root&amp;gt;&lt;br /&gt;  &amp;lt;level value="ERROR" /&amp;gt;&lt;br /&gt;  &amp;lt;appender-ref ref="MyFileAppender" /&amp;gt;  &lt;br /&gt;&amp;lt;/root&amp;gt;&lt;br /&gt;&amp;lt;logger name="Some.Logger" additivity="false"&amp;gt;&lt;br /&gt;  &amp;lt;level value="INFO" /&amp;gt;&lt;br /&gt;&amp;lt;/logger&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8907072084112569342?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8907072084112569342/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8907072084112569342' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8907072084112569342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8907072084112569342'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/log4net-erzeugt-doppelte-eintrage.html' title='LOG4NET erzeugt doppelte Einträge'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3241334795637057852</id><published>2009-11-13T09:19:00.001+01:00</published><updated>2009-11-13T09:21:25.732+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Stacktrace in .NET ausgeben</title><content type='html'>&lt;pre&gt;Console.Write(Environment.StackTrace);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3241334795637057852?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3241334795637057852/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3241334795637057852' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3241334795637057852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3241334795637057852'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/stacktrace-in-net-ausgeben.html' title='Stacktrace in .NET ausgeben'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8742043884740419537</id><published>2009-11-11T10:12:00.006+01:00</published><updated>2011-02-03T17:20:10.700+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Framework Versionen</title><content type='html'>Die genauen Versionen der installierten .NET Frameworks kann man am besten aus der Registry auslesen. Unter dem Key&lt;br /&gt;&lt;pre&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP&lt;/pre&gt;finden sich die verschiedenen Frameworks als Unterordner (v1.1.x,v2.0.x,v3.0,v3.5).&lt;br /&gt;Der relevante Schlüssel ist "Version".&lt;br /&gt;&lt;br /&gt;Siehe auch &lt;a href="http://msdn.microsoft.com/en-us/library/cc160716.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc160716.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_d-7MtdqcILI/SvqA7X7ADeI/AAAAAAAAAAw/7CguoyF0Czk/s1600-h/ScreenShot014.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5402772460506451426" src="http://2.bp.blogspot.com/_d-7MtdqcILI/SvqA7X7ADeI/AAAAAAAAAAw/7CguoyF0Czk/s400/ScreenShot014.bmp" style="cursor: pointer; float: left; height: 94px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8742043884740419537?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8742043884740419537/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8742043884740419537' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8742043884740419537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8742043884740419537'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/11/net-framework-versionen.html' title='.NET Framework Versionen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d-7MtdqcILI/SvqA7X7ADeI/AAAAAAAAAAw/7CguoyF0Czk/s72-c/ScreenShot014.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-8480234844126570605</id><published>2009-10-09T11:53:00.003+02:00</published><updated>2009-10-09T12:16:03.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>NCover verwenden</title><content type='html'>NCover ist ein CodeCoverage-Analyse-Tool für Micrsoft.NET. Es ist unter &lt;a href="http://www.ncover.com/download/current"&gt;http://www.ncover.com/download/current&lt;/a&gt; verfügbar. Dort kann man sich z.B. die CommunityEdition herunterladen und das MSI installieren.&lt;br /&gt;&lt;br /&gt;NCover muss keinen Sourcecode verändern, es verwendet die Profiling-API des .NET Frameworks. Es kann also einfach auf eine Managed Exe angewendet werden. Folgender Aufruf ruft z.B. die nant.exe auf und läßt darüber UNIT-Tests laufen.&lt;br /&gt;&lt;pre&gt;"c:\program files\ncover\NCover.Console.exe" ..\nant\bin\nant.exe -buildfile:Tests.build MeineUnitTests //x apitestoutput.xml //a MeineAssembly1;MeineAssembly2&lt;/pre&gt;&lt;br /&gt;//a gibt an für welche Assemblies die CodeCoverage analysiert werden soll.&lt;br /&gt;//x ist das XML-Outputfile, das geschrieben wird.&lt;br /&gt;&lt;br /&gt;Das erzeugte XML-Outputfile kann dann z.B. mit dem NCoverExplorer (Teil von TestDriven) visualisiert werden.&lt;br /&gt;&lt;br /&gt;Sollte folgende Fehlermeldung kommen,&lt;br /&gt;&lt;pre&gt;Profiled process terminated. Profiler connection not established&lt;/pre&gt;dann ist die NCover COM-Dll (CoverLib.dll) nicht registriert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8480234844126570605?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8480234844126570605/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8480234844126570605' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8480234844126570605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8480234844126570605'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/10/ncover-verwenden.html' title='NCover verwenden'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4827601477778412222</id><published>2009-09-16T07:59:00.000+02:00</published><updated>2009-09-16T08:00:29.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Bind Failure Logging</title><content type='html'>[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4827601477778412222?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4827601477778412222/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4827601477778412222' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4827601477778412222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4827601477778412222'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/09/bind-failure-logging.html' title='Bind Failure Logging'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1081712988924758590</id><published>2009-09-15T16:37:00.004+02:00</published><updated>2010-03-24T17:10:32.844+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>PDB-Files bei ManagedCode</title><content type='html'>Eine PDB-Datei (program database file) enthält Debug- und Projektstatusinformationen.&lt;br /&gt;&lt;br /&gt;Die Datei wird über den Switch /debug erzeugt.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/debug:full erzeugt Code, der debuggt werden kann.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;/debug:pdbonly erzeugt PDBs, aber kein DebuggableAttribute (darüber erkennt der JIT compiler, dass Debug Infos enthalten sind)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In VisualStudio kann diese Einstellung in den Projekt-Settings/Build mit dem Button "Advanced" gemacht werden. (Drop-Down-Box DebugInfo)&lt;br /&gt;&lt;br /&gt;PDB-Files können auch in den GAC kopiert werden (z.B. zum Debuggen). Dazu einfach in den Ordner c:\WINDOWS\assembly\GAC_MSIL\ wechseln, dort das Verzeichnis der Assembly in der gewünschten Version auswählen z.B. Feest.Common\6.3.0.3472__2aa8ae3ddce4beba\) und dort das .PDB-File der Assembly kopieren.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1081712988924758590?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1081712988924758590/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1081712988924758590' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1081712988924758590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1081712988924758590'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/09/pdb-files-bei-managedcode.html' title='PDB-Files bei ManagedCode'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7617759820860457436</id><published>2009-09-11T14:22:00.000+02:00</published><updated>2009-09-11T14:23:14.454+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Framework Sourcen debuggen mit VisualStudio</title><content type='html'>&lt;a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx"&gt;Hier&lt;/a&gt; gibt es eine Anleitung, wie man den MS SourceCode-Server einrichtet, um .NET Framework Klassen unter VisualStudio zu debuggen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7617759820860457436?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7617759820860457436/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7617759820860457436' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7617759820860457436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7617759820860457436'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/09/net-framework-sourcen-debuggen-mit.html' title='.NET Framework Sourcen debuggen mit VisualStudio'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6495233725668577602</id><published>2009-09-02T20:59:00.003+02:00</published><updated>2009-09-02T21:04:19.003+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Set in C#</title><content type='html'>Bis .Net 2.0 gibt es keine Set-Klasse (analog zum Java-Set, eine Collection-Klasse, die doppelte Einträge ausschließt). Alternativ kann man hier auf die &lt;a href="http://www.wintellect.com/PowerCollections.aspx"&gt;PowerCollection&lt;/a&gt; zurückgreifen.&lt;br /&gt;&lt;br /&gt;Ab .NET 3.5 gibt es z.B. die &lt;a href="http://msdn.microsoft.com/en-us/library/bb495294.aspx"&gt;HashSet-Klasse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6495233725668577602?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6495233725668577602/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6495233725668577602' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6495233725668577602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6495233725668577602'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/09/set-in-c.html' title='Set in C#'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4910230117192212892</id><published>2009-08-03T12:14:00.005+02:00</published><updated>2010-03-24T12:21:42.388+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='.NETSilverlight'/><title type='text'>Wie kann man mit dem Silverlight Datagrid Daten aus einem Java-Web-Service anzeigen und editieren</title><content type='html'>In meinem &lt;a href="http://www.microsoft.com/germany/msdn/solve/codeclips/library.aspx?id=msdn_de_34251"&gt;MSDN Solve Code Clip&lt;/a&gt; wird ein RESTful JavaWebService mit dem AXIS2 Framework unter Eclipse erstellt. Dieser ermöglicht den DB-Zugriff per JPA auf eine SQL-Server Tabelle. Im zweiten Teil wird ein Silverlight Control erstellt, das die Daten des Java WebServices in einem DataGrid anzeigen und ändern kann.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_d-7MtdqcILI/S6n00f0yQuI/AAAAAAAAABI/TnfSs34bGVg/s1600/ScreenShot043.bmp"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 358px;" src="http://3.bp.blogspot.com/_d-7MtdqcILI/S6n00f0yQuI/AAAAAAAAABI/TnfSs34bGVg/s400/ScreenShot043.bmp" alt="" id="BLOGGER_PHOTO_ID_5452158006641967842" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4910230117192212892?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4910230117192212892/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4910230117192212892' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4910230117192212892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4910230117192212892'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/08/wie-kann-man-mit-dem-silverlight.html' title='Wie kann man mit dem Silverlight Datagrid Daten aus einem Java-Web-Service anzeigen und editieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_d-7MtdqcILI/S6n00f0yQuI/AAAAAAAAABI/TnfSs34bGVg/s72-c/ScreenShot043.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-8228098050011943354</id><published>2009-07-16T15:14:00.004+02:00</published><updated>2009-07-16T15:30:17.663+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWebJSF'/><title type='text'>Page Scope mit JSF</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Wie kann man in JSF Listen, die z.B. von Tabellen-Controls visualisiert werden in den Page Scope legen (sprich länger als der Request Scope, aber kürzer als den Session Scope, so dass Post Backs funktionieren, ohne die Datenbinding zu verlieren) ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;:&lt;br /&gt;Vor JSF 2.0 gibt es mit Apache Tomahawk die Möglichkeit den Zustand einer Request-Scope Bean&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;managed-bean&amp;gt;&lt;br /&gt;    &amp;lt;managed-bean-name&amp;gt;model_application&amp;lt;/managed-bean-name&amp;gt;&lt;br /&gt;    &amp;lt;managed-bean-class&amp;gt;&lt;br /&gt;        de.rfeest.demo.web.backing.ApplicationModel&amp;lt;/managed-bean-class&amp;gt;&lt;br /&gt;    &amp;lt;managed-bean-scope&amp;gt;request&amp;lt;/managed-bean-scope&amp;gt;&lt;br /&gt;&amp;lt;/managed-bean&amp;gt;&lt;/pre&gt;&lt;br /&gt;in den Viewstate einer Page zu setzen&lt;br /&gt;&lt;pre&gt;&amp;lt;t:saveState value="#{model_application}" id="ss1"/&amp;gt;&lt;/pre&gt;&lt;br /&gt;und im Tabellen-Control verwenden:&lt;br /&gt;&lt;pre&gt;&amp;lt;af:table emptyText="No items were found" value="#{model_application.appStatusList}" ...&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Mit JSF 2.0 wird der &lt;a href="http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature6"&gt;View Scope&lt;/a&gt; eingeführt, der das ganze in JSF nativ integriert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8228098050011943354?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8228098050011943354/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8228098050011943354' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8228098050011943354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8228098050011943354'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/07/page-scope-mit-jsf.html' title='Page Scope mit JSF'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4824806364882398165</id><published>2009-06-23T09:30:00.004+02:00</published><updated>2009-06-23T09:40:19.239+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NETWinForms'/><title type='text'>Auf Fehler im DataBinding reagieren</title><content type='html'>Zunächst muss mann sich auf das BindingComplete-Event des DataBindings registrieren, das die Fehler werfen kann.&lt;br /&gt;&lt;pre&gt;wertTextBox.DataBindings[0].BindingComplete += new BindingCompleteEventHandler(wertTextBox_BindingComplete);&lt;/pre&gt;&lt;br /&gt;Der Event-Handler kann dann folgendemaßen aussehen:&lt;br /&gt;&lt;pre&gt;private void wertTextBox_BindingComplete(object sender, BindingCompleteEventArgs e)&lt;br /&gt;{          &lt;br /&gt;&lt;br /&gt;   if (e.BindingCompleteState != BindingCompleteState.Success)&lt;br /&gt;   {&lt;br /&gt;       errorProvider1.SetError(wertTextBox, e.ErrorText);&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;       errorProvider1.SetError(wertTextBox, null);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4824806364882398165?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4824806364882398165/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4824806364882398165' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4824806364882398165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4824806364882398165'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/06/auf-fehler-im-databinding-reagieren.html' title='Auf Fehler im DataBinding reagieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-145456354281583612</id><published>2009-06-19T15:35:00.002+02:00</published><updated>2009-06-19T15:52:26.981+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Vista: Unbekannter Fehler bei der Systemwiederherstellung</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Es tritt bei der Einspielen eines Wiederherstellungspunkts mit Windows Vista folgender Fehler auf: "Unbekannter Fehler bei der Systemwiederherstellung" und nichts wurde verändert.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Den Wiederherstellungspunkt beim Starten über F8 wiederherstellen, dann tut´s.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-145456354281583612?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/145456354281583612/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=145456354281583612' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/145456354281583612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/145456354281583612'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/06/vista-unbekannter-fehler-bei-der.html' title='Vista: Unbekannter Fehler bei der Systemwiederherstellung'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3092457890491123970</id><published>2009-06-19T09:49:00.002+02:00</published><updated>2009-06-19T09:58:31.145+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>Eclipse WTP: Hotdeploy mit Tomcat ohne Restart</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Eine geänderte JSP wird beim gestarteten Tomcat in Eclipse WTP nicht aktualisiert.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ursache&lt;/span&gt;: in der context.xml ist folgender Eintrag&lt;br /&gt;&lt;br /&gt;&amp;lt;Context antiResourceLocking="true"....&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;antiResourceLocking muss raus, damit er JSPs nicht in den Temp-Ordner schreibt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3092457890491123970?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3092457890491123970/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3092457890491123970' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3092457890491123970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3092457890491123970'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/06/eclipse-wtp-hotdeploy-mit-tomcat-ohne.html' title='Eclipse WTP: Hotdeploy mit Tomcat ohne Restart'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-990438409361370185</id><published>2009-05-21T14:58:00.003+02:00</published><updated>2009-05-21T15:02:14.935+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Einen WindowsService installieren oder deinstallieren</title><content type='html'>&lt;span style="font-weight: bold;"&gt;installieren&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;installutil /name=myservicename myservice.exe&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;deinstallieren&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;installutil /u /name=myservicename  myservice.exe&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-990438409361370185?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/990438409361370185/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=990438409361370185' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/990438409361370185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/990438409361370185'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/05/einen-windowsservice-installieren-oder.html' title='Einen WindowsService installieren oder deinstallieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-541498853158428594</id><published>2009-05-21T01:24:00.003+02:00</published><updated>2009-05-21T01:30:15.867+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NETWinForms'/><title type='text'>NullableDateTimePicker</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Der DateTimePicker bietet keine einfache Lösung einen Null-Wert an ein DataBinding zu übermitteln.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Erweiterung der DateTimePicker-Klasse um eine NullableValue-Property. Diese muss anstatt der Value-Property für das DataBinding verwendet werden.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  /// &lt;summary&gt;&lt;br /&gt;/// Erweitert den DateTimePicker um eine Nullable Property.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public class NullableDateTimePicker: DateTimePicker&lt;br /&gt;{&lt;br /&gt;    /// &lt;summary&gt;&lt;br /&gt;    /// Diese Property muss beim DataBinding anstatt der Property&lt;br /&gt;    /// Value verwendet werden.&lt;br /&gt;    /// &lt;/summary&gt;&lt;br /&gt;    public object NullableValue&lt;br /&gt;    {&lt;br /&gt;        // Nur wenn die Checkbox angehakt ist, den Wert des&lt;br /&gt;        // DateTimePicker zurückgeben, ansonsten null&lt;br /&gt;        get&lt;br /&gt;        {&lt;br /&gt;            if (Checked)&lt;br /&gt;            {&lt;br /&gt;                return Value;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                return null;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Der Wert des DateTime-Pickers darf nur gesetzt werden,&lt;br /&gt;        // wenn der übergebene Wert (value) nicht null ist.&lt;br /&gt;        // Ansonsten wird das aktuelle Datum gesetzt und&lt;br /&gt;        // die Checkbox auf nicht angehakt gesetzt.&lt;br /&gt;        set&lt;br /&gt;        {&lt;br /&gt;            if (value is DateTime)&lt;br /&gt;            {&lt;br /&gt;                Value = (DateTime) value;&lt;br /&gt;                Checked = true;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                Value = DateTime.Now;&lt;br /&gt;                Checked = false;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }    &lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-541498853158428594?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/541498853158428594/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=541498853158428594' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/541498853158428594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/541498853158428594'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/05/nullabledatetimepicker.html' title='NullableDateTimePicker'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4092012128226978556</id><published>2009-05-13T11:09:00.003+02:00</published><updated>2009-05-13T11:14:44.548+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>MaxIdle im Tomcat-Connection Pool</title><content type='html'>Einstellung für unlimited Connections im Pool unterscheiden sich in den Tomcat-Versionen:&lt;br /&gt;&lt;pre&gt;maxIdle=0 bei Tomcat 4&lt;/pre&gt;&lt;pre&gt;maxIdle=-1 ab Tomcat 5&lt;/pre&gt;&lt;br /&gt;Anmerkung: maxIdle=0 würde ab Tomcat 5 das ConnectionPooling abschalten!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4092012128226978556?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4092012128226978556/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4092012128226978556' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4092012128226978556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4092012128226978556'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/05/maxidle-im-tomcat-connection-pool.html' title='MaxIdle im Tomcat-Connection Pool'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5099127995806816996</id><published>2009-05-13T06:45:00.004+02:00</published><updated>2009-05-13T09:27:42.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Changelists .NET Framework Service Packs</title><content type='html'>&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B951847&amp;amp;x=7&amp;amp;y=9"&gt;.NET Framework 3.5 Service Pack 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B945826&amp;x=17&amp;y=11"&gt;.NET Framework 3.0 Service Pack 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B945757&amp;x=13&amp;y=15"&gt;.NET Framework 2.0 Service Pack 1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5099127995806816996?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5099127995806816996/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5099127995806816996' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5099127995806816996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5099127995806816996'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/05/changelists-net-framework-service-packs.html' title='Changelists .NET Framework Service Packs'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2853412004680940977</id><published>2009-05-12T20:33:00.005+02:00</published><updated>2009-05-13T11:36:18.246+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NETWinForms'/><title type='text'>Toolbar/Menü-Button-Event und BindingSource - Problem</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: In einem Form werden Daten  nicht persistiert, die über an eine BindingSource gebundenes Control editiert wurden, wenn über einen Toolbar- oder Menu-Button das Speichern ausgelöst wird.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Toolbars oder Menüs wechseln den Focus nicht. Das ValidateEvent im Control wird deswegen nicht ausgelöst und kann seine Änderungen nicht an die BindingSource schicken. Der EndEdit-Aufruf auf der BindingSource ist dann wirkungslos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Bevor das Speichern über ein Event aus einem Toolbar- oder Menüpunkt ausgelöst wird, muss dort explizit der Fokus geholt werden über die Focus()-Methode. Danach sorgt ein Aufruf der EndEdit-Methode auf der BindingSource auch dafür, dass die eingebenen Daten in die Quelle (DataSource/DataTable) gelangen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2853412004680940977?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2853412004680940977/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2853412004680940977' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2853412004680940977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2853412004680940977'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/05/toolbarmenu-button-event-und.html' title='Toolbar/Menü-Button-Event und BindingSource - Problem'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1762650363916018144</id><published>2009-03-19T13:37:00.001+01:00</published><updated>2009-03-19T13:43:41.363+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate Statistic MBean mit Spring registrieren</title><content type='html'>Folgender Eintrag muss in die beans.xml:&lt;br /&gt;&lt;pre&gt;&amp;lt;bean name="HibernateMBean"&lt;br /&gt; class="com.myorg.mbean.HibernateStatistic"&lt;br /&gt; init-method="init"&amp;gt;&lt;br /&gt;&amp;lt;property name="entityManagerFactoryForJMX"&lt;br /&gt; ref="entityManagerFactory" /&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;bean class="org.springframework.jmx.export.MBeanExporter"&amp;gt;&lt;br /&gt;&amp;lt;property name="beans"&amp;gt;&lt;br /&gt; &amp;lt;map&amp;gt;&lt;br /&gt;  &amp;lt;entry&lt;br /&gt;   key="com.myorg.myapp:Name=HibernateMBean"&lt;br /&gt;   value-ref="HibernateMBean"&amp;gt;&lt;br /&gt;  &amp;lt;/entry&amp;gt;&lt;br /&gt; &amp;lt;/map&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Die Klasse HibernateStatistic sieht so aus&lt;br /&gt;&lt;pre&gt;/**&lt;br /&gt;* Dient der Erzeugung einer HibernateStatistik MBean aus einer JPA EntityManagerFactory. Der Klasse muss eine&lt;br /&gt;* EntityManagerFactory übergeben. Die Klasse selbst kann dann als MBean registriert werden. Sie bietet alle&lt;br /&gt;* Getter/Setter von StatisticsService an. Dann muss die&lt;br /&gt;*&lt;br /&gt;* @author feestra&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public class HibernateStatistic extends StatisticsService {&lt;br /&gt;&lt;br /&gt; /**********************************************************************************************************&lt;br /&gt;  * Logger for this class&lt;br /&gt;  */&lt;br /&gt; private static Logger logger = Logger.getLogger(HibernateStatistic.class);&lt;br /&gt; /**********************************************************************************************************&lt;br /&gt;  * Wird benötigt für JMX-Hibernate-Statistik.&lt;br /&gt;  */&lt;br /&gt; private EntityManagerFactory entityManagerFactoryForJMX;&lt;br /&gt;&lt;br /&gt; private StatisticsService statisticsService;&lt;br /&gt;&lt;br /&gt; /**********************************************************************************************************&lt;br /&gt;  * Leere Kontruktor. EntityManagerFactory muss über Setter gesetzt werden, dann die init()-Methode&lt;br /&gt;  * aufgerufen werden.&lt;br /&gt;  */&lt;br /&gt; public HibernateStatistic() {&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * EntityManagerFactory über Konstruktor uebergeben, fuehrt dann gleich die init()-Methode auf, um die&lt;br /&gt;  * StatisticsService-Instanz zu initialisieren.&lt;br /&gt;  *&lt;br /&gt;  * @param emf&lt;br /&gt;  */&lt;br /&gt; public HibernateStatistic(EntityManagerFactory emf) {&lt;br /&gt;  this.entityManagerFactoryForJMX = emf;&lt;br /&gt;  init();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void init() {&lt;br /&gt;  EntityManager em = null;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   em = getEntityManagerFactoryForJMX().createEntityManager();&lt;br /&gt;&lt;br /&gt;   StatisticsService statsMBean = new StatisticsService();&lt;br /&gt;   Session session = (Session) em.getDelegate();&lt;br /&gt;   statsMBean.setSessionFactory(session.getSessionFactory());&lt;br /&gt;   statsMBean.setStatisticsEnabled(false);&lt;br /&gt;   logger.debug("createHibernateMBeanForJPA was fine.");&lt;br /&gt;   statisticsService = statsMBean;&lt;br /&gt;&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   logger.error("createHibernateMBeanForJPA failed", e);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;   if (em != null) {&lt;br /&gt;    em.close();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1762650363916018144?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1762650363916018144/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1762650363916018144' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1762650363916018144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1762650363916018144'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/03/hibernate-statistic-mbean-mit-spring.html' title='Hibernate Statistic MBean mit Spring registrieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7283559200780890819</id><published>2009-03-04T13:37:00.002+01:00</published><updated>2009-03-04T13:41:25.940+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='DBOracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>JPA: Sequences mit Oracle</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Wenn man mit JPA und einer Oracle-Datenbank  @GeneratedValue(strategy=GenerationType.SEQUENCE,...) verwendet, werden merkwürdige PKs erzeugt, die nichts mit dem Wert aus der Oracle-Sequence zu tun haben.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: strategy=GenerationType.SEQUENCE weglassen, da dies intern ein HILO-Verfahren verwendet und nicht jedes Mal die Sequence befragt:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;@Id&lt;br /&gt;@GeneratedValue(generator="myseq")&lt;br /&gt;@SequenceGenerator(name="myseq",sequenceName="MY_SEQ") &lt;br /&gt;@Column(name = "PK_MY_TABLE", unique = true, nullable = false, precision = 11, scale = 0)&lt;br /&gt;public long getPkMyTable() {&lt;br /&gt; return this.pkReprData;&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7283559200780890819?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7283559200780890819/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7283559200780890819' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7283559200780890819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7283559200780890819'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/03/jpa-sequences-mit-oracle.html' title='JPA: Sequences mit Oracle'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4998038314695085302</id><published>2009-03-03T16:35:00.002+01:00</published><updated>2009-03-03T16:41:58.995+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>JPA/Hibernate sortierte Collections</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Collections einer Entität werden nicht sortiert, obwohl in der Query ein "order by" steht.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: In der POJO-Klasse ist die Collection als Set definiert.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Anstatt des Set einfach eine List verwenden. Die Hibernate Tools generieren leider per Default ein Set.&lt;br /&gt;&lt;br /&gt;Dies kann im Build-File z.B. durch folgende zwei Tasks geändert werden:&lt;br /&gt;&lt;pre&gt;&amp;lt;replace summary="true" dir="src-orm/com/myorg/dataaccess/orm" token="HashSet" value="ArrayList" /&amp;gt;&lt;br /&gt;&amp;lt;replace summary="true" dir="src-orm/com/myorg/dataaccess/orm" token="Set" value="List" /&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4998038314695085302?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4998038314695085302/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4998038314695085302' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4998038314695085302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4998038314695085302'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/03/jpahibernate-sortierte-collections.html' title='JPA/Hibernate sortierte Collections'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8724245566293844619</id><published>2009-02-17T14:32:00.003+01:00</published><updated>2009-02-17T14:34:44.012+01:00</updated><title type='text'>Batchfile läßt sich als Schedulded Task unter Windows 2003 nicht ausführen</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Ein Batchfile läßt sich als Schedulded Task unter Windows 2003 nicht ausführen, wenn der ausführende Benutzer nicht Mitglied der Gruppe Administratoren ist.&lt;br /&gt;&lt;br /&gt;Im Error-Log der ScheduledTask-Anwendung steht 0x80070005: Access is denied.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Dem User müssen Ausführungsrechte auf die cmd.exe gegeben werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8724245566293844619?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8724245566293844619/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8724245566293844619' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8724245566293844619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8724245566293844619'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/02/batchfile-lat-sich-als-schedulded-task.html' title='Batchfile läßt sich als Schedulded Task unter Windows 2003 nicht ausführen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-547909475215628120</id><published>2009-02-04T15:32:00.004+01:00</published><updated>2009-02-04T15:39:52.390+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBOracle'/><title type='text'>Tabellen mit Oracle 10g endgültig löschen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: &lt;pre&gt;drop table&lt;/pre&gt; löscht ab Oracle 10g die Tabellen nicht mehr, sondern verschiebt sie in den Papierkorb. Tabellen heißen dann BIN$&amp;lt;irgendeinstring&amp;gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: &lt;br /&gt;Tabellen müssen mit &lt;pre&gt;PURGE TABLE&lt;/pre&gt; gelöscht werden. Den kompletten Papierkorb eines Benutzers löscht man mit &lt;pre&gt;PURGE RECYCLEBIN&lt;/pre&gt;. Alle Papierkörbe können mit &lt;pre&gt;PURGE dba_recyclebin&lt;/pre&gt; gelöscht werden.&lt;/irgendeinstring&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-547909475215628120?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/547909475215628120/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=547909475215628120' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/547909475215628120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/547909475215628120'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/02/tabellen-mit-oracle-10g-endgultig.html' title='Tabellen mit Oracle 10g endgültig löschen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-937393431072170880</id><published>2009-01-18T14:57:00.025+01:00</published><updated>2011-03-17T15:43:51.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>.NET Dumps mit WinDbg analysieren</title><content type='html'>Mit WinDbg (Teil der Windows Debugging Tools) kann man auch .NET Dumps analysieren. Dazu muss es am besten mit der "Visual Studio Eingabeaufforderung" gestartet werden (so sind alle notwendigen Pfade automatisch gesetzt.&lt;br /&gt;&lt;br /&gt;Dort kann einen zuvor mit adplus erstellten Dump laden.&lt;br /&gt;&lt;br /&gt;Zunächst muss die &lt;span style="font-weight: bold;"&gt;Managed-Unterstützung geladen&lt;/span&gt; werden über die WinDbg-Kommadozeile&lt;br /&gt;&lt;pre&gt;.loadby sos mscorwks&lt;/pre&gt;Eventuell fehlen hier Symbole. Sollte das der Fall sein, dann einfach im Menü File-&amp;gt;Symbol Path auswählen und dort zusätzlich &lt;br /&gt;&lt;pre&gt;http://msdl.microsoft.com/download/symbols&lt;/pre&gt;eintragen, dann werden die benötigten Symbole einfach von Microsoft heruntergeladen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_d-7MtdqcILI/TFvEN49wGKI/AAAAAAAAABg/dnx6_Txw20s/s1600/ScreenShot084.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5502207112671926434" src="http://1.bp.blogspot.com/_d-7MtdqcILI/TFvEN49wGKI/AAAAAAAAABg/dnx6_Txw20s/s400/ScreenShot084.bmp" style="cursor: pointer; height: 139px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Sollte das System, auf dem der Dump gemacht wurde und das System, auf dem der Dump analysiert werden soll sich in der .NET Framework Version (auch nur minimal) unterscheiden, so muss die Datei mscordacwks.dll des gedumpten Systems in den Symbol-Pfad mit dem Namen &lt;br /&gt;&lt;pre&gt;mscordacwks_&amp;lt;arch&amp;gt;_&amp;lt;arch&amp;gt;_&amp;lt;version&amp;gt;.dll&lt;/pre&gt;aufgenommen werden. (Siehe auch &lt;a href="http://blogs.msdn.com/b/tom/archive/2008/04/09/asp-net-tips-getting-sos-to-work-when-commands-fail.aspx"&gt;http://blogs.msdn.com/b/tom/archive/2008/04/09/asp-net-tips-getting-sos-to-work-when-commands-fail.aspx&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Heap analysieren&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;!DumpHeap&lt;/pre&gt;liefert z.B.: folgende Ausgabe: &lt;br /&gt;&lt;pre&gt;MT    Count    TotalSize Class Name&lt;br /&gt;6ef5fba8       73         4088 System.Reflection.RuntimeMethodInfo&lt;br /&gt;68634fb4       28         4144 System.Data.DataColumn&lt;br /&gt;68df1488       61         4392 System.Windows.Forms.PropertyStore+ObjectEntry[]&lt;br /&gt;6ef60508      392         4704 System.Object&lt;br /&gt;6ef62f40       92         5152 System.Collections.Hashtable&lt;br /&gt;68635d88        5         5180 System.Data.RBTree`1+Node[[System.Data.DataRow, System.Data]][]&lt;br /&gt;6b5f8c4c       95         5320 System.Configuration.FactoryRecord&lt;br /&gt;6ef62a88       89         5576 System.Int32[]&lt;br /&gt;6ef4c47c      230         6440 System.Security.SecurityElement&lt;br /&gt;6ef61a6c      369         7380 System.RuntimeType&lt;br /&gt;6ef6151c       81         9880 System.Char[]&lt;br /&gt;68636e00       10        10360 System.Data.RBTree`1+Node[[System.Int32, mscorlib]][]&lt;br /&gt;6ef6335c       79        17652 System.Byte[]&lt;br /&gt;6ef6303c       93        21240 System.Collections.Hashtable+bucket[]&lt;br /&gt;6ef62b38     4643        55716 System.Int32&lt;br /&gt;68636f00     2311        64708 System.Data.RBTree`1+RBTreeEnumerator[[System.Data.DataRow, System.Data]]&lt;br /&gt;6ef340bc      627        75216 System.Object[]&lt;br /&gt;6ef5a930     2328        83808 System.Collections.Hashtable+HashtableEnumerator&lt;br /&gt;68df5158     9246       110952 System.Windows.Forms.Control+MultithreadSafeCallScope&lt;br /&gt;6ef6291c     5017       120408 System.Collections.ArrayList&lt;br /&gt;6ef62c14     4622       129416 System.Collections.ArrayList+ArrayListEnumeratorSimple&lt;br /&gt;6ef60a28    11593       231860 System.Text.StringBuilder&lt;br /&gt;6ef608ec    18367      1163300 System.String&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Dump aller Objekte im LargeObjectHeap&lt;br /&gt;&lt;pre&gt;!dumpheap -min 85000&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Threadstack analysieren&lt;/span&gt;&lt;br /&gt;Liste der CLR Threads&lt;br /&gt;&lt;pre&gt;!threads&lt;/pre&gt;anzegen:&lt;br /&gt;&lt;pre&gt;PreEmptive   GC Alloc           Lock&lt;br /&gt;ID OSID ThreadOBJ    State     GC       Context       Domain   Count APT Exception&lt;br /&gt;0    1 10c4 0026a4f0      6020 Enabled  0211b030:0211ca74 00266280     0 STA&lt;br /&gt;2    2 1124 002779c0      b220 Enabled  00000000:00000000 00266280     0 MTA (Finalizer)&lt;br /&gt;3    3 1360 002f4078   880b220 Enabled  00000000:00000000 00266280     0 MTA (Threadpool Completion Port)&lt;br /&gt;4    4 1368 002f6d58    80a220 Enabled  00000000:00000000 00266280     0 MTA (Threadpool Completion Port)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Dort wählt man sich den gewünschten Thread aus über &lt;br /&gt;&lt;pre&gt;~&amp;lt;ID&amp;gt;s&lt;/pre&gt;, also um den Thread mit der ID 0 anzuschauen gibt man &lt;br /&gt;&lt;pre&gt;~0s&lt;/pre&gt;ein. Dann kann man sich mit &lt;br /&gt;&lt;pre&gt;!CLRStack&lt;/pre&gt;nur Managed Stack ausgeben lassen, was z.B. zu folgender Ausgaben führt:&lt;br /&gt;&lt;pre&gt;SharpShutdown+0x1632e (012f632e)&lt;br /&gt;Priority: 0  Priority class: 32  Affinity: 3&lt;br /&gt;0:000&amp;gt; !clrstack -p&lt;br /&gt;OS Thread Id: 0x10c4 (0)&lt;br /&gt;ESP       EIP&lt;br /&gt;0016f240 775a9a94 [InlinedCallFrame: 0016f240] System.Windows.Forms.UnsafeNativeMethods.WaitMessage()&lt;br /&gt;0016f23c 68da8e48 System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32, Int32, Int32)&lt;br /&gt;PARAMETERS:&lt;br /&gt;this = 0x01f68694&lt;br /&gt;dwComponentID = &lt;no data=""&gt;&lt;br /&gt;reason = 0xffffffff&lt;br /&gt;pvLoopData = 0x00000000&lt;br /&gt;&lt;br /&gt;0016f2d8 68da8937 System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)&lt;br /&gt;PARAMETERS:&lt;br /&gt;this = 0x01f3ef78&lt;br /&gt;reason = 0xffffffff&lt;br /&gt;context = 0x01f634b8&lt;br /&gt;&lt;br /&gt;0016f32c 68da8781 System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)&lt;br /&gt;PARAMETERS:&lt;br /&gt;this = &lt;no data=""&gt;&lt;br /&gt;reason = &lt;no data=""&gt;&lt;br /&gt;context = &lt;no data=""&gt;&lt;br /&gt;&lt;br /&gt;0016f35c 68d65911 System.Windows.Forms.Application.Run(System.Windows.Forms.Form)&lt;br /&gt;PARAMETERS:&lt;br /&gt;mainForm = &lt;no data=""&gt;&lt;br /&gt;&lt;br /&gt;0016f370 00eac769 DE.RFeest.Tools.SharpShutdown.Program.Main()&lt;br /&gt;&lt;/no&gt;&lt;/no&gt;&lt;/no&gt;&lt;/no&gt;&lt;/no&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CPU-Zeit der einzelnen Threads&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;!runaway&lt;pre&gt;&lt;pre&gt;User Mode Time&lt;br /&gt;Thread       Time&lt;br /&gt;12:1818      0 days 0:02:46.359&lt;br /&gt;25:1164      0 days 0:02:42.859&lt;br /&gt;31:1d54      0 days 0:01:05.421&lt;br /&gt;33:140c      0 days 0:01:03.031&lt;br /&gt;34:794       0 days 0:00:55.562&lt;br /&gt;30:120c      0 days 0:00:53.031&lt;br /&gt;32:1980      0 days 0:00:49.937&lt;br /&gt;37:1900      0 days 0:00:42.640&lt;br /&gt;38:1dc8      0 days 0:00:41.984&lt;br /&gt;17:1da0      0 days 0:00:35.156&lt;br /&gt;14:1bb0      0 days 0:00:34.937&lt;br /&gt;15:1848      0 days 0:00:34.546&lt;br /&gt;16:8fc       0 days 0:00:34.109&lt;br /&gt;39:1398      0 days 0:00:29.140&lt;br /&gt;35:7f4       0 days 0:00:27.015&lt;br /&gt;40:1270      0 days 0:00:26.625&lt;br /&gt;36:1908      0 days 0:00:17.781&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Details zu einer Managed-Exeception&lt;/span&gt;&lt;pre&gt;29   18 1458 2039df38   180b220 Enabled  0e15d56c:0e15d57c 00109f58     3 MTA (Threadpool Worker) System.OutOfMemoryException (05c6c578)&lt;/pre&gt;kann man sich über &lt;pre&gt;!pe&lt;/pre&gt;anzeigen lassen:&lt;pre&gt;Exception object: 126449bc&lt;br /&gt;Exception type: System.OutOfMemoryException&lt;br /&gt;Message: &lt;none&gt;&lt;br /&gt;InnerException: &lt;none&gt;&lt;br /&gt;StackTrace (generated):&lt;br /&gt;SP       IP       Function&lt;br /&gt;7C7EE5A4 792F110C mscorlib_ni!System.Reflection.Assembly.nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.Assembly, System.Threading.StackCrawlMark ByRef, Boolean, Boolean)+0x2c&lt;br /&gt;7C7EE5CC 792D5B58 mscorlib_ni!System.Reflection.Assembly.InternalGetSatelliteAssembly(System.Globalization.CultureInfo, System.Version, Boolean)+0xd8&lt;br /&gt;7C7EE5F0 792D4000 mscorlib_ni!System.Resources.ResourceManager.GetSatelliteAssembly(System.Globalization.CultureInfo)+0x50&lt;br /&gt;7C7EE61C 792821AC mscorlib_ni!System.Resources.ResourceManager.InternalGetResourceSet(System.Globalization.CultureInfo, Boolean, Boolean)+0x12c&lt;br /&gt;7C7EE670 792822C8 mscorlib_ni!System.Resources.ResourceManager.InternalGetResourceSet(System.Globalization.CultureInfo, Boolean, Boolean)+0x248&lt;br /&gt;7C7EE6C4 7928190B mscorlib_ni!System.Resources.ResourceManager.GetString(System.String, System.Globalization.CultureInfo)+0x4b&lt;br /&gt;7C7EE6E4 6522C3ED System_Data_ni!System.Data.Res.GetString(System.String)+0x1d&lt;br /&gt;7C7EE6F0 654CD912 System_Data_ni!System.Data.Common.ADP.PooledOpenTimeout()+0x12&lt;br /&gt;7C7EE700 656C70B4 System_Data_ni!System.Data.ProviderBase.DbConnectionFactory.GetConnection(System.Data.Common.DbConnection)+0x4a36e4&lt;br /&gt;7C7EE720 65223846 System_Data_ni!System.Data.ProviderBase.DbConnectionClosed.OpenConnection(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory)+0x76&lt;br /&gt;7C7EE754 6521DF06 System_Data_ni!System.Data.SqlClient.SqlConnection.Open()+0xf6&lt;br /&gt;...&lt;br /&gt;StackTraceString: &lt;none&gt;&lt;br /&gt;HResult: 8007000e&lt;br /&gt;&lt;/none&gt;&lt;/none&gt;&lt;/none&gt;&lt;/pre&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Anaylse von aufgezeichneten Exceptions&lt;/span&gt;&lt;/span&gt;Wenn folgendes von windbg ausgegeben wird:&lt;pre&gt;This dump file has an exception of interest stored in it.&lt;br /&gt;The stored exception information can be accessed via .ecxr.&lt;/pre&gt;kann man eine Analyse dieser Exception ausführen:&lt;pre&gt;!analyze -v&lt;/pre&gt;Siehe auch:&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163528.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163528.aspx&lt;/a&gt;&lt;a href="http://www.informit.com/articles/article.aspx?p=1409801&amp;amp;seqNum=4"&gt;http://www.informit.com/articles/article.aspx?p=1409801&amp;amp;seqNum=4&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb190764.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb190764.aspx&lt;/a&gt;&lt;a href="http://blogs.msdn.com/b/alejacma/archive/2009/08/13/managed-debugging-with-windbg-managed-heap-part-1.aspx"&gt;http://blogs.msdn.com/b/alejacma/archive/2009/08/13/managed-debugging-with-windbg-managed-heap-part-1.aspx&lt;/a&gt;&lt;a href="http://www.zhaun.net/post/Debugging-NET-virtual-memory-fragmentation-with-WinDbg.aspx"&gt;http://www.zhaun.net/post/Debugging-NET-virtual-memory-fragmentation-with-WinDbg.aspx&lt;/a&gt;&lt;a href="http://www.codeproject.com/KB/dotnet/BestPractices5.aspx#WhatisthetypeofmemoryleakTotalMemoryManagedmemoryunmanagedmemory"&gt;http://www.codeproject.com/KB/dotnet/BestPractices5.aspx#WhatisthetypeofmemoryleakTotalMemoryManagedmemoryunmanagedmemory&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-937393431072170880?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/937393431072170880/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=937393431072170880' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/937393431072170880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/937393431072170880'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/net-dumps-mit-windbg-analysieren.html' title='.NET Dumps mit WinDbg analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_d-7MtdqcILI/TFvEN49wGKI/AAAAAAAAABg/dnx6_Txw20s/s72-c/ScreenShot084.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-3048949540044335240</id><published>2009-01-18T14:44:00.005+01:00</published><updated>2010-08-06T10:19:32.858+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Dumps mit dem .NET Framework erstellen</title><content type='html'>Mit ADPlus (Teil der &lt;a href="http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx"&gt;Windows Debug Tools&lt;/a&gt;) kann man Dumps (enthält u.a. HeapDump und ThreadDump) eines laufenden Prozesses machen:&lt;br /&gt;&lt;br /&gt;Dump eines Prozessed mit einer speziellen ID&lt;pre&gt;adplus -Hang -o . -p 3720&lt;/pre&gt;Dump aller Prozesse mit einem speziellen Namen (hier die IIS Prozesse)&lt;pre&gt;adplus -Hang -o . -pn w3wp.exe&lt;/pre&gt;Der Dump kann dann mit WinDbg (ebenfalls Teil der Windows Debug Tools) oder einem kommerziellen Tool wie &lt;a href="http://memprofiler.com/"&gt;MemProfiler&lt;/a&gt; analysiert werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3048949540044335240?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3048949540044335240/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3048949540044335240' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3048949540044335240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3048949540044335240'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/dumps-mit-dem-net-framework.html' title='Dumps mit dem .NET Framework erstellen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4848806092048585659</id><published>2009-01-16T16:01:00.007+01:00</published><updated>2009-01-17T07:47:58.798+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Mehr als 4GB mit 32Bit Windows</title><content type='html'>Unter Windows (z.B. mit Windows 2003 Enterprise Edition) kann mehr als 4GB adressiert werden. Auch mit der 32 Bit Variante. Das Stichwort lautet hier /pae (Physical Address Extension). Wichtig: PAE ermöglicht nur in Summe (der Prozesse) über die 4GB zu kommen, nicht pro Prozess - 1 Prozess mit 10GB, also z.B. 10 Prozesse mit 1 GB). Dazu ist aber keine Codeänderung notwendig.&lt;br /&gt;&lt;br /&gt;Unter diesen Links finden sich mehr Informationen zu PAE:&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/283037/en-us"&gt;PAE 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/whdc/system/platform/server/PAE/pae_os.mspx"/&gt;PAE 2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4848806092048585659?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4848806092048585659/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4848806092048585659' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4848806092048585659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4848806092048585659'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/mehr-als-4gb-mit-32bit-windows.html' title='Mehr als 4GB mit 32Bit Windows'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-9214759690036382938</id><published>2009-01-16T15:58:00.002+01:00</published><updated>2009-01-18T20:30:56.977+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Genaue Systeminfo unter Windows</title><content type='html'>Mit dem Befehl &lt;pre&gt;systeminfo&lt;/pre&gt; kann man sich genaue Infos über das Window-System geben lassen (z.B. Anzahl der Prozessoren, 32 oder 64bit Prozessor, Bios-Version, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-9214759690036382938?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/9214759690036382938/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=9214759690036382938' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9214759690036382938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9214759690036382938'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/genau-systeminfo-unter-windows.html' title='Genaue Systeminfo unter Windows'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-94077977198327169</id><published>2009-01-13T10:42:00.002+01:00</published><updated>2009-01-13T10:47:22.435+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBDB2'/><title type='text'>DDLs generieren mit DB2</title><content type='html'>Mit dem Tool db2look (z.B. bei Windows IBM\Sqllib\BIN\db2look.exe) können DDLs generiert werden. Am besten direkt auf dem DBServer ausführen.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;db2look -d [dbname] -i [dbuser] -w [password] -o myfile.ddl -e -z [schema]&lt;/pre&gt;&lt;br /&gt;Variablen:&lt;br /&gt;[dbname] : Datenbank, zu der man sich verbinden will&lt;br /&gt;[dbuser] : DB-Benutzer&lt;br /&gt;[password] : Password des DB-Benutzers&lt;br /&gt;[schema] : Schema, das exportiert werden soll&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-94077977198327169?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/94077977198327169/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=94077977198327169' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/94077977198327169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/94077977198327169'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/ddls-generieren-mit-db2.html' title='DDLs generieren mit DB2'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-299597941868911303</id><published>2009-01-05T15:00:00.004+01:00</published><updated>2009-01-05T15:05:12.036+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Kein MMC-Plugin für .NET Framework 3.0 / 3.5</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: Es gibt zwar die Ordner &lt;pre&gt;C:\Windows\Microsoft.NET\Framework\v3.5&lt;/pre&gt; und &lt;pre&gt;C:\Windows\Microsoft.NET\Framework\v3.0&lt;/pre&gt;Dort ist aber keine Konfigurationsdatei machine.config. Genauso fehlt das MMC-Plugin&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Weder .Net 3.0 noch 3.5 sind Stand-Alone-Versionen. Beide benötigen das .NET Framework 2.0. Konfiguartionen müssen also über die 2.0-Infrastruktur abgehandelt werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-299597941868911303?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/299597941868911303/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=299597941868911303' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/299597941868911303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/299597941868911303'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/kein-mmc-plugin-fr-net-framework-30-35.html' title='Kein MMC-Plugin für .NET Framework 3.0 / 3.5'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-276380555908014140</id><published>2009-01-04T14:32:00.003+01:00</published><updated>2009-01-04T14:38:48.598+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NETAspNET'/><title type='text'>ASP.NET Control führt in der VisualStudio-Entwurfsansicht zu Fehler</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: In einem ASP.NET Projekt wird versucht in der Designansicht ein Control auf ein WebForm zu ziehen. Das ist nicht möglich. Über die Quellansicht läßt sich das Control zwar hinzufügen, in der Design Ansicht erhält man jedoch folgende Fehlermeldung&lt;br /&gt;&lt;pre&gt;Fehler beim Erstellen des Steuerelements... Webprojektelement "... " kann nicht gefunden werden.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ursache&lt;/span&gt;: Der Designer scheint Probleme mit Sonderzeichen wie dem # (Sharp) zu haben. Kommt so ein Sonderzeichen im Pfad zur aspx.-Datei vor führt es zu dem oben beschriebenen Fehler.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: Die Sonderzeichen aus dem Pfad weglassen. Leider gibt´s wohl keine andere Möglichkeit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-276380555908014140?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/276380555908014140/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=276380555908014140' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/276380555908014140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/276380555908014140'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2009/01/aspnet-control-lt-fhrt-in-der.html' title='ASP.NET Control führt in der VisualStudio-Entwurfsansicht zu Fehler'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2324196982105607015</id><published>2008-12-21T21:29:00.008+01:00</published><updated>2008-12-26T16:45:46.865+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NETWinForms'/><title type='text'>Auf GlobaleEvents mit dem .NET Framework reagieren</title><content type='html'>Globale Events können mit dem .NET Framework über die Win32-Funktion SetWindowsHookEx behandelt werden. Allerdings lassen sich nur die beiden low-level Hooks WH_KEYBOARD_LL und WH_MOUSE_LL behandeln.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Win32-Funktionen:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    public class Win32Helper&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]&lt;br /&gt;      public static extern IntPtr SetWindowsHookEx(int idHook,&lt;br /&gt;          LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      public delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]&lt;br /&gt;      [return: MarshalAs(UnmanagedType.Bool)]&lt;br /&gt;      public static extern bool UnhookWindowsHookEx(IntPtr hhk);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]&lt;br /&gt;      public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,&lt;br /&gt;          IntPtr wParam, IntPtr lParam);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]&lt;br /&gt;      public static extern IntPtr GetModuleHandle(string lpModuleName);&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      [StructLayout(LayoutKind.Sequential)]&lt;br /&gt;      public class POINT&lt;br /&gt;      {&lt;br /&gt;          public int x;&lt;br /&gt;          public int y;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;      [StructLayout(LayoutKind.Sequential)]&lt;br /&gt;      public struct MSLLHOOKSTRUCT&lt;br /&gt;      {&lt;br /&gt;          public POINT pt;&lt;br /&gt;          public uint mouseData;&lt;br /&gt;          public uint flags;&lt;br /&gt;          public uint time;&lt;br /&gt;          public IntPtr dwExtraInfo;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public enum MouseMessages&lt;br /&gt;      {&lt;br /&gt;          WM_LBUTTONDOWN = 0x0201,&lt;br /&gt;          WM_LBUTTONUP = 0x0202,&lt;br /&gt;          WM_MOUSEMOVE = 0x0200,&lt;br /&gt;          WM_MOUSEWHEEL = 0x020A,&lt;br /&gt;          WM_RBUTTONDOWN = 0x0204,&lt;br /&gt;          WM_RBUTTONUP = 0x0205,&lt;br /&gt;      }      &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;      public enum WindowsHookCodes : int&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;          WH_KEYBOARD = 2,&lt;br /&gt;          WH_MOUSE = 7,&lt;br /&gt;          WH_KEYBOARD_LL = 13,&lt;br /&gt;          WH_MOUSE_LL = 14&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Die Klasse HookHelper kapselt den Zugriff auf die Win32-Funktionen und stellt ein Event bereit, auf das sich andere Klassen registrieren können.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  public class HookHelper&lt;br /&gt;  {&lt;br /&gt;      private static Win32Helper.LowLevelMouseProc _proc = LowLevelMouseHookProc;&lt;br /&gt;      private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);&lt;br /&gt;&lt;br /&gt;      public delegate void GlobalMouseListener(int code, IntPtr wParam, Win32Helper.MSLLHOOKSTRUCT hookStruct);&lt;br /&gt;&lt;br /&gt;      public static event GlobalMouseListener GlobalMouseListenerEvent;&lt;br /&gt;&lt;br /&gt;      private static IntPtr hGlobalMouseHook;&lt;br /&gt;&lt;br /&gt;      public static bool StartGlobalMouseHook()&lt;br /&gt;      {&lt;br /&gt;          using (Process currentProcess = Process.GetCurrentProcess())&lt;br /&gt;          {&lt;br /&gt;              using (ProcessModule currentModule = currentProcess.MainModule)&lt;br /&gt;              {&lt;br /&gt;                  hGlobalMouseHook = Win32Helper.SetWindowsHookEx((int)Win32Helper.WindowsHookCodes.WH_MOUSE_LL,&lt;br /&gt;                              _proc,&lt;br /&gt;                              Win32Helper.GetModuleHandle(currentModule.ModuleName),&lt;br /&gt;                               0);&lt;br /&gt;                  if (hGlobalMouseHook.ToInt32() == 0)&lt;br /&gt;                  {&lt;br /&gt;                      log.Error("SetWindowsHookEx Failed");&lt;br /&gt;                      return false;&lt;br /&gt;                  }&lt;br /&gt;                  log.Debug("SetWindowsHookEx called for " + hGlobalMouseHook + " with sucess");&lt;br /&gt;                  return true;&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      /// &amp;lt;summary&amp;gt;&lt;br /&gt;      /// Stoppt den globalen Maus-Hook.&lt;br /&gt;      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;      public static void StopGlobalMouseHook()&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;          bool b = Win32Helper.UnhookWindowsHookEx(hGlobalMouseHook);&lt;br /&gt;          if (b)&lt;br /&gt;          {&lt;br /&gt;              log.Debug("StopGlobalMouseHook called for " + hGlobalMouseHook + " with sucess");&lt;br /&gt;          }&lt;br /&gt;          else&lt;br /&gt;          {&lt;br /&gt;              log.Error("StopGlobalMouseHook called for " + hGlobalMouseHook + " failed");&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      /// &amp;lt;summary&amp;gt;&lt;br /&gt;      /// Diese Methode wird im Falle gerufen im Falle des MouseHooks.&lt;br /&gt;      /// Sorgt dafuer, dasd die EventListener von GlobalMouseListenerEvent gerufen werden.&lt;br /&gt;      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;      /// &amp;lt;param name="nCode"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;      /// &amp;lt;param name="wParam"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;      /// &amp;lt;param name="lParam"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;      /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;   &lt;br /&gt;      private static IntPtr LowLevelMouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;          Win32Helper.MSLLHOOKSTRUCT hookStruct = (Win32Helper.MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(Win32Helper.MSLLHOOKSTRUCT));&lt;br /&gt;&lt;br /&gt;          if (GlobalMouseListenerEvent.GetInvocationList().Length &amp;gt; 0)&lt;br /&gt;          {&lt;br /&gt;              GlobalMouseListenerEvent(nCode, wParam, hookStruct);&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;          return Win32Helper.CallNextHookEx(hGlobalMouseHook, nCode, wParam, lParam);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;In einem Form kann der HookHelper wie folgt verwendet werden:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  public MainForm()&lt;br /&gt;  {&lt;br /&gt;      InitializeComponent();&lt;br /&gt;&lt;br /&gt;      HookHelper.GlobalMouseListenerEvent += new HookHelper.GlobalMouseListener(MyGlobalMouseListener);&lt;br /&gt;      HookHelper.StartGlobalMouseHook();            &lt;br /&gt;       ...&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public void MyGlobalMouseListener(int code, IntPtr wParam, Win32Helper.MSLLHOOKSTRUCT hookStruct)&lt;br /&gt;  {&lt;br /&gt;      if (code &gt;= 0 &amp;amp;&amp;amp; Win32Helper.MouseMessages.WM_LBUTTONDOWN == (Win32Helper.MouseMessages)wParam)&lt;br /&gt;      {&lt;br /&gt;          System.Diagnostics.Trace.WriteLine(hookStruct.pt.x + ", " + hookStruct.pt.y);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2324196982105607015?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2324196982105607015/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2324196982105607015' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2324196982105607015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2324196982105607015'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/12/auf-globaleevents-mit-dem-net-framework.html' title='Auf GlobaleEvents mit dem .NET Framework reagieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-909257989325963814</id><published>2008-12-18T13:34:00.014+01:00</published><updated>2008-12-18T17:24:30.918+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Garbage Collector und Sun´s VM</title><content type='html'>Folgende GarbageCollectors gibt es bei der Sun VM (Hotspot):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. serial:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;-XX:+UseSerialGC&lt;/pre&gt;Besonders sinnvoll&lt;br /&gt;&lt;ul&gt;&lt;li&gt;bei einer CPU&lt;/li&gt;&lt;li&gt;nicht speicherlastigen Anwendungen&lt;/li&gt;&lt;/ul&gt;JMX: Copy (2 Gen) und MarkSweepCompact (6 Gen)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;2. throughput collector:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;-XX:+UseParallelGC&lt;/pre&gt;Verwendet mehrere Threads für die Minor GC. Schlechtere Performance bei 1 CPU, gleiche Performance bei 2 CPUs wie seriell, bessere Performance ab 3 CPUs zu erwarten. (Die Anzahl der Threads kann über &lt;span style="font-family:Courier New,monospace;"&gt;-XX:ParallelGCThreads=[&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;anzahl]&lt;/span&gt; gesteuert werden).&lt;br /&gt;&lt;br /&gt;Besonders sinnvoll&lt;br /&gt;&lt;ul&gt;&lt;li&gt;wenn es auf Leistung ankommt (CPU-lastige Anwendungen)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;JMX: PS Scavenge (2 Gen) und PS MarkSweep (4 Gen)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. concurrent low pause collector:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;-XX:+UseConcMarkSweepGC&lt;/pre&gt;Versucht große Teile der Major GC parallel mit den Applikations-Threads zu machen. Braucht dadurch etwas mehr CPU. Sinnvoll ab 2 CPUs.&lt;br /&gt;&lt;br /&gt;Besonders sinnvoll&lt;br /&gt;&lt;ul&gt;&lt;li&gt;wenn es auf kurze Stopzeiten durch den GC ankommt.&lt;/li&gt;&lt;li&gt;wenn viele Daten lang im Speicher gehalten werden (z.B. Katalogdaten, Caches, etc.)&lt;/li&gt;&lt;/ul&gt;JMX: ParNew (2 Gen) und ConcurrentMarkSweep (4 Gen)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anmerkung: Die Sun VM kann den GarbageCollector dynamisch ändern, wenn nichts explizit angegeben wird.&lt;br /&gt;&lt;br /&gt;Links mit Detailinfos:&lt;br /&gt;&lt;a href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp"&gt;Alle VM Options der Sun VM&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html#0.0.0.%20The%20Concurrent%20Low%20Pause%20Collector%7Coutline"&gt;GC Tuning Java SE 5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html"&gt;GC Tuning Java SE 6&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-909257989325963814?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/909257989325963814/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=909257989325963814' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/909257989325963814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/909257989325963814'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/12/garbage-collector-und-suns-vm.html' title='Garbage Collector und Sun´s VM'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8038580404393146905</id><published>2008-11-21T13:24:00.003+01:00</published><updated>2008-11-21T13:34:46.642+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBDB2'/><title type='text'>Anderen DB2Client ohne Setup-Installation verwenden</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1. SQLLIB-Verzeichnis kopieren von einem 6er-Client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Registry anpassen&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\GLOBAL_PROFILE]&lt;br /&gt;"DB2PATH"="c:\\DB2Clients\\SQLLIB\\"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\PROFILES\DB2]&lt;br /&gt;"DB2INSTPROF"="c:\\DB2Clients\\SQLLIB\\"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Umgebungsvariablen ändern&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SET PATH=c:\DB2Clients\SQLLIB\BIN;c:\DB2Clients\SQLLIB\FUNCTION;c:\Daten\Tools\Java\jdk1.3.1_02\jre\bin\&lt;br /&gt;SET DB2INSTANCE=DB2&lt;br /&gt;SET JAVA_HOME=c:\Daten\Tools\Java\jdk1.3.1_02\jre&lt;br /&gt;REM set db2node=0&lt;br /&gt;set db2node=0&lt;br /&gt;set LANG=De_DE&lt;br /&gt;SET DB2CLP=&lt;br /&gt;set DB2CODEPAGE=850&lt;br /&gt;set DB2PATH=C:\DB2Clients\SQLLIB&lt;br /&gt;SET DB2TEMPDIR=c:\DB2Clients\SQLLIB&lt;br /&gt;SET CLASSPATH=.;c:\DB2Clients\SQLLIB\java\db2java.zip;c:\DB2Clients\SQLLIB\java\runtime.zip&lt;br /&gt;SET INCLUDE=c:\DB2Clients\SQLLIB\INCLUDE;c:\DB2Clients\SQLLIB\LIB;c:\DB2Clients\SQLLIB\SQLLIB\TEMPLATES\INCLUDE&lt;br /&gt;SET LIB=c:\DB2Clients\SQLLIB\LIB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Das Katalogisieren ausführen als LokalerUser, der Adminstrator ist (keinen DomänenUser, der Admin ist)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;catalog tcpip node node_v6 REMOTE myserver.mydomain.com SERVER 50000&lt;br /&gt;&lt;br /&gt;catalog database mydb as myalias at node node_v6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8038580404393146905?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8038580404393146905/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8038580404393146905' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8038580404393146905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8038580404393146905'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/11/anderen-db2client-ohne-setup.html' title='Anderen DB2Client ohne Setup-Installation verwenden'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4162375804412437258</id><published>2008-11-13T10:20:00.006+01:00</published><updated>2008-11-13T15:09:55.192+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBOracle'/><title type='text'>Oracle Dump erzeugen/einspielen</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Erzeugen&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;exp userid=loginuser/passwd@instance tables=table1,table2,table3 file=C:\mydump.dmp&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Einspielen&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;imp loginuser/passwd@instance file=C:\mydump.dmp touser=user tables=table1,table2,table3&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Achtung für den Export/Import von BLOBs müssen die Versionen von Client und Server exakt übereinstimmen!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4162375804412437258?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4162375804412437258/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4162375804412437258' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4162375804412437258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4162375804412437258'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/11/oracle-dump-einspielen.html' title='Oracle Dump erzeugen/einspielen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-9068371349307411135</id><published>2008-11-13T09:34:00.003+01:00</published><updated>2008-11-13T09:45:47.992+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBOracle'/><title type='text'>Remote Database Link mit Oracle erstellen</title><content type='html'>Erstellen des Database-Links:&lt;br /&gt;&lt;pre&gt;CREATE DATABASE LINK link_name CONNECT TO myremoteuser IDENTIFIED BY userpassword USING 'instancename';&lt;/pre&gt;&lt;br /&gt;Aufruf eines Selects über den Link:&lt;br /&gt;&lt;pre&gt;select * from tab@link_name&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-9068371349307411135?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/9068371349307411135/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=9068371349307411135' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9068371349307411135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9068371349307411135'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/11/remote-database-link-mit-oracle.html' title='Remote Database Link mit Oracle erstellen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-775671706178915177</id><published>2008-10-22T13:33:00.006+02:00</published><updated>2008-10-30T08:33:00.549+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBDB2'/><title type='text'>DB2 Locks analysieren über DB2CMD-Befehle</title><content type='html'>db2 LIST APPLICATIONS SHOW DETAIL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db2 GET SNAPSHOT FOR LOCKS ON &lt;dbname&gt;&amp;lt;DBNAME&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db2pd -db wws -locks -tra -dyn -file db2locks.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE MONITOR SWITCHES USING STATEMENT ON GLOBAL&lt;dbname&gt;&lt;/dbname&gt;&lt;/dbname&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-775671706178915177?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/775671706178915177/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=775671706178915177' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/775671706178915177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/775671706178915177'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/10/db2-locks-analysieren-ber-db2cmd.html' title='DB2 Locks analysieren über DB2CMD-Befehle'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7276812288960146086</id><published>2008-10-06T15:16:00.002+02:00</published><updated>2008-10-06T15:24:08.558+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>2 Persistence Context mit Spring und tx:annotation-driven</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Mit zwei Persistence Context, die auf unterschiedliche Datenbanken gehen kann man die Annotation-basierte Spring-Transaktionssteuerung (über @Transactional) nicht verwenden&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Bei @Transactional kann man den zugehörigen TransactionManager nicht definieren.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Verwendung von zwei org.springframework.transaction.interceptor.TransactionInterceptor, die jeweils auf unterschiedliche TransactionManager gehen und Definition des Transaktionsscopes in der beans.xml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7276812288960146086?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7276812288960146086/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7276812288960146086' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7276812288960146086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7276812288960146086'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/10/2-persistence-context-mit-spring-und.html' title='2 Persistence Context mit Spring und tx:annotation-driven'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7385076985854343829</id><published>2008-09-15T14:23:00.002+02:00</published><updated>2008-09-15T14:29:40.064+02:00</updated><title type='text'>Shale 1.0.5: prerender-Methode des ViewController wird gerufen, aber init-Methode nicht</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Problem&lt;/span&gt;: bei einer BackingBean, die das ViewController-Interface des Shale-Frameworks verwendet wird zwar die prerender-Methode gerufen, jedoch die init-Methode nicht.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ursache&lt;/span&gt;: Der org.apache.shale.view.faces.LifecycleListener ist nicht geladen. Dieser ist eigentlich im shale-view-1.0.5.jar (META-INF\taglib.tld) enthalten, wird aber wohl in manchen Konstellation (vermutlich wenn man selbst TLDs definiert hat) nicht angezogen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Lösung&lt;/span&gt;: In der web.xml muss folgender Eintrag:&lt;br /&gt;&lt;pre&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;        &amp;lt;listener-class&amp;gt;&lt;br /&gt;            org.apache.shale.view.faces.LifecycleListener&lt;br /&gt;        &amp;lt;/listener-class&amp;gt;&lt;br /&gt;    &amp;lt;/listener&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7385076985854343829?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7385076985854343829/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7385076985854343829' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7385076985854343829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7385076985854343829'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/09/shale-105-prerender-methode-des.html' title='Shale 1.0.5: prerender-Methode des ViewController wird gerufen, aber init-Methode nicht'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3705979167641883639</id><published>2008-09-09T20:03:00.005+02:00</published><updated>2008-09-10T10:42:09.953+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>CodeCoverage Tool Emma mit Tomcat</title><content type='html'>&lt;span&gt;&lt;a href="http://emma.sourceforge.net"&gt;Emma&lt;/a&gt; ist ein kostenloses Java-Tool um CodeCoverage, z.B. von Unit-Tests zu visualisieren.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Schritt 1&lt;/span&gt;: Kompilierte Klassen mit Emma erweitern&lt;br /&gt;&lt;pre&gt;&amp;lt;taskdef resource="emma_ant.properties" classpathref="pathtoemmaJars" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;instrpathref: Pfad zu den kompilierten klassen, die von Emma instrumentalisiert werden sollen&lt;/li&gt;&lt;li&gt;destdir: Verzeichnis, in das die von Emma instrumentalisierten Klassen geschribene werden&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&amp;lt;target name="emmaInst" description="Instrument compiled classed with emma coverage collection infos"&amp;gt;&lt;br /&gt;   &amp;lt;emma enabled="true"&amp;gt;&lt;br /&gt;       &amp;lt;instr instrpathref="run.classpath" destdir="deploy/inst-classes" metadatafile="deploy/metadata.emma" merge="true" /&amp;gt;&lt;br /&gt;   &amp;lt;/emma&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 2&lt;/span&gt;: Tomcat starten.&lt;br /&gt;&lt;br /&gt;emma.jar muss im Classpath sein&lt;br /&gt;&lt;br /&gt;Folgende VMArgs für Emma müssen definiert werden für den Start:&lt;br /&gt;&lt;br /&gt;-Demma.coverage.out.file=deploy\coverage.emma&lt;br /&gt;-Demma.coverage.out.merge=true&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 2.1: &lt;/span&gt;Test durchführen&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 3&lt;/span&gt;: Tomcat stoppen, generiert Coverage-File&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 4&lt;/span&gt;: Report generieren&lt;br /&gt;&lt;pre&gt; &amp;lt;target name="emmaReport" &amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;emma enabled="true"&amp;gt;&lt;br /&gt;       &amp;lt;report sourcepathref="sourcepath"&amp;gt;&lt;br /&gt;           &amp;lt;fileset dir="deploy"&amp;gt;&lt;br /&gt;               &amp;lt;include name="*.emma" /&amp;gt;&lt;br /&gt;           &amp;lt;/fileset&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;txt outfile="deploy/coverage.txt" /&amp;gt;&lt;br /&gt;           &amp;lt;html outfile="deploy/coverage.html" /&amp;gt;&lt;br /&gt;       &amp;lt;/report&amp;gt;&lt;br /&gt;   &amp;lt;/emma&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3705979167641883639?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3705979167641883639/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3705979167641883639' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3705979167641883639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3705979167641883639'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/09/codecoverage-tool-emma-mit-tomcat.html' title='CodeCoverage Tool Emma mit Tomcat'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6437539258382719545</id><published>2008-09-09T09:03:00.002+02:00</published><updated>2008-09-09T09:11:06.550+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>JPA Named Queries auslagern</title><content type='html'>Bei JPA können Named Queries neben der Definition in Klassen  (über Annotations) auch in externe XML-Files definiert werden.&lt;br /&gt;&lt;br /&gt;Das XML-File (z.B. META-INF/namedQueries.xml) hat folgendes Format:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm&lt;br /&gt;http://java.sun.com/xml/ns/persistence/orm/orm_1_0.xsd"&lt;br /&gt; version="1.0"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;named-query name="findPersonByName"&amp;gt;&lt;br /&gt;  &amp;lt;query&amp;gt;&lt;br /&gt;   &amp;lt;![CDATA[select person from Person person where person.name = :name]]&amp;gt;&lt;br /&gt;  &amp;lt;/query&amp;gt;&lt;br /&gt; &amp;lt;/named-query&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;&amp;lt;/entity-mappings&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Die Datei wird dann in der persistence.xml eingebunden:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;persistence-unit name="MyPU" &amp;gt;&lt;br /&gt;  &amp;lt;provider&amp;gt;org.hibernate.ejb.HibernatePersistence&amp;lt;/provider&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;mapping-file&amp;gt;&lt;br /&gt;   META-INF/namedQueries.xml&lt;br /&gt;  &amp;lt;/mapping-file&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/persistence-unit&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6437539258382719545?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6437539258382719545/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6437539258382719545' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6437539258382719545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6437539258382719545'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/09/jpa-named-queries-auslagern.html' title='JPA Named Queries auslagern'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5632005329552204305</id><published>2008-09-02T13:25:00.003+02:00</published><updated>2008-09-02T13:32:55.133+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>SOAP 1.2 WebServices mit JMeter testen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Bei der Verwendung von JMeter 2.3.1 (SOAP/XML-RPC Request) bekommt man eine SOAP-Exception als Antwort vom WebService: "Transport level information does not match with SOAP Message namespace URI"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Der SOAP/XML-RPC Request kann nur Soap 1.1 Nachrichten erzeugen. Diese haben eine SOAPAction als Header-Element, die die aufzurufende Methode beinhaltet also z.B. myFunction. Das akzeptiert aber z.B. Axis2 nicht, dort muss die SOAPAction im HTTP-Header-Element "Content-Type" definiert sein.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Einen Http Header Manager bei der JMeter Thread Group hinzufügen. Dort wird Parameter mit dem Name &lt;pre&gt;Content-Type&lt;/pre&gt; definiert, der als Wert dann &lt;pre&gt;&lt;br /&gt;application/soap+xml; charset=UTF-8; action="urn:myFunction"&lt;/pre&gt; hat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5632005329552204305?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5632005329552204305/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5632005329552204305' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5632005329552204305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5632005329552204305'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/09/soap-12-webservices-mit-jmeter-testen.html' title='SOAP 1.2 WebServices mit JMeter testen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6357204584763533070</id><published>2008-08-27T06:35:00.004+02:00</published><updated>2008-08-29T07:29:38.622+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>JPA Status</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_d-7MtdqcILI/SLeJOJVCp7I/AAAAAAAAAAo/eqOQogfAP6k/s1600-h/JPA_Status.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_d-7MtdqcILI/SLeJOJVCp7I/AAAAAAAAAAo/eqOQogfAP6k/s400/JPA_Status.bmp" alt="" id="BLOGGER_PHOTO_ID_5239807567584208818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_d-7MtdqcILI/SLTapkpwAQI/AAAAAAAAAAg/r7zwEOt--2o/s1600-h/Use+Case+Model.bmp"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6357204584763533070?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6357204584763533070/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6357204584763533070' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6357204584763533070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6357204584763533070'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/08/jpa-status.html' title='JPA Status'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_d-7MtdqcILI/SLeJOJVCp7I/AAAAAAAAAAo/eqOQogfAP6k/s72-c/JPA_Status.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17138913.post-1151565524996699458</id><published>2008-08-26T13:13:00.004+02:00</published><updated>2008-08-26T13:22:37.294+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Firefox-Plugin -&gt; VersionsCheck</title><content type='html'>Problem: FireFox meldet, dass ein Plugin (pluginXY.xpi) mit dieser Version nicht kompatibel sei.&lt;br /&gt;&lt;br /&gt;Workaround: Die Plugin-Datei (pluginXY.xpi) entpacken (einfach als pluginXY.zip umbennen). Im Archiv ist eine Datei install.rdf enthalten. Dort an dieser Stelle einfach die Firefox-Version anpassen:&lt;br /&gt;&lt;br /&gt;&amp;lt;em:targetApplication&amp;gt;&lt;br /&gt;      &amp;lt;Description&amp;gt;&lt;br /&gt;          &amp;lt;em:id&amp;gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&amp;lt;/em:id&amp;gt;&lt;br /&gt;          &amp;lt;em:minVersion&amp;gt;1.5&amp;lt;/em:minVersion&amp;gt;&lt;br /&gt;        &lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;&amp;lt;&lt;span style="font-weight: bold;"&gt;em:maxVersion&lt;/span&gt;&amp;gt;&lt;span style="font-weight: bold;"&gt;2.0.*&lt;/span&gt;&amp;lt;&lt;span style="font-weight: bold;"&gt;/em:maxVersion&lt;/span&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/Description&amp;gt;&lt;br /&gt;  &amp;lt;/em:targetApplication&amp;gt;&lt;br /&gt;&lt;br /&gt;Das funktioniert z.B. wunderbar mit dem Steganos Password Manager Plugin (spmplugin.xpi)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1151565524996699458?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1151565524996699458/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1151565524996699458' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1151565524996699458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1151565524996699458'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/08/firefox-plugin-versionscheck.html' title='Firefox-Plugin -&gt; VersionsCheck'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7118897731021155482</id><published>2008-08-04T16:49:00.002+02:00</published><updated>2008-08-04T16:51:31.115+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Abfrage für Indexdienst unter Windows XP</title><content type='html'>Computerverwaltung-&gt;Indexdienst-&gt;System-Katalog durchsuchen&lt;br /&gt;&lt;br /&gt; #Filename *log and #Size&gt;100000000&lt;br /&gt;&lt;br /&gt;sucht nach Files die "log" im Dateinamen und einer Größe über 100000000 Bytes haben&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7118897731021155482?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7118897731021155482/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7118897731021155482' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7118897731021155482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7118897731021155482'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/08/abfrage-fr-indexdienst-unter-windows-xp.html' title='Abfrage für Indexdienst unter Windows XP'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-960665135203907024</id><published>2008-07-18T11:24:00.002+02:00</published><updated>2008-07-18T11:27:32.828+02:00</updated><title type='text'>Notizen: Axis2 + Spring + JPA + Tomcat 6</title><content type='html'>&lt;ul&gt;&lt;li&gt;DB-Libs nach Tomcat/lib kopieren&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Aus Tomcat/lib annotations-api.jar -&gt; javax.persistences-Klassen raus, da veraltet! (NoSuchMethodException wegen PersistenceAnnotationBeanPostProcessor)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;nur notwendig, wenn die Klassen neuer als 13.02.2007 sind&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;persistence.xml wird gelesen, auch wenn über Spring definiert&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Klassen (ORMs) müssen angegeben werden&lt;/li&gt;&lt;li&gt;im Element persistence-unit muss transaction-type="RESOURCE_LOCAL" definiert werden (-&gt; BasisDatasource Problem)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;- beans.xml&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;property name="persistenceUnitName" value="MyPU" /&amp;gt; kann definiert werden um eindeutig zu sein&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; services.xml anpassen (AXIS2)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt; Definition eines SpringInit-Services zum Laden des SpringContext&lt;/li&gt;&lt;li&gt; Eigentlicher Service wird nun über SpringAppContextAwareObjectSupplier (und eine darin definierte SpringBean) gemacht&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Alle Libs (außer eigene jars und axis2-spring.jar: diese kommen in services\myService\lib) in WEB-INF\lib&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Eclipse: Im Ordner ".settings" -&gt; Datei org.eclipse.wst.common.component anpassen (deploy-path raus)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-960665135203907024?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/960665135203907024/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=960665135203907024' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/960665135203907024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/960665135203907024'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/07/notizen-axis2-spring-jpa-tomcat-6.html' title='Notizen: Axis2 + Spring + JPA + Tomcat 6'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2071983864904743142</id><published>2008-05-16T16:32:00.002+02:00</published><updated>2008-05-16T16:35:14.048+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>Umwandeln eines normalen Java-Projekts in ein WTP-Projekt</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Schritt1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;in das .project-File müssen folgende Einträge hinzu&lt;br /&gt;&lt;br /&gt;&amp;lt;natures&gt;&lt;br /&gt;       &amp;lt;nature&amp;gt;org.eclipse.wst.common.project.facet.core.nature&amp;lt;/nature&amp;gt;&lt;br /&gt;       &amp;lt;nature&amp;gt;org.eclipse.jdt.core.javanature&amp;lt;/nature&amp;gt;&lt;br /&gt;       &amp;lt;nature&amp;gt;org.eclipse.wst.common.modulecore.ModuleCoreNature&amp;lt;/nature&amp;gt;&lt;br /&gt;       &amp;lt;nature&amp;gt;org.eclipse.jem.workbench.JavaEMFNature&amp;lt;/nature&amp;gt;&lt;br /&gt;    &amp;lt;/natures&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Danach kann über Project-Properties im Unterpunkt "Project Facets" das Facet "Dynamic Web Module" hinzugefügt werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2071983864904743142?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2071983864904743142/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2071983864904743142' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2071983864904743142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2071983864904743142'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/05/umwandeln-eines-normalen-java-projekts.html' title='Umwandeln eines normalen Java-Projekts in ein WTP-Projekt'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7511601406242011396</id><published>2008-05-16T11:34:00.002+02:00</published><updated>2008-05-16T11:40:04.619+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>Tomcat-Logging mit Eclipse WTP</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Die Logfiles des Tomcats, der unter Eclipse mit WTP konfiguriert ist, werden nicht geschrieben:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;logging.proerties aus ${catalina.base}/conf muss in den config-Ordner der WTP-Server kopiert werden.&lt;/li&gt;&lt;li&gt;Launch configuration folgende VM arguments hinzufügen:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;-Djava.util.logging.config.file="${catalina.base}\conf\logging.properties"&lt;br /&gt;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7511601406242011396?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7511601406242011396/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7511601406242011396' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7511601406242011396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7511601406242011396'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/05/tomcat-logging-mit-eclipse-wtp.html' title='Tomcat-Logging mit Eclipse WTP'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8289679801150052396</id><published>2008-04-07T16:51:00.002+02:00</published><updated>2008-04-10T06:54:44.727+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EnterpriseArchitect'/><title type='text'>Enterprise Archtitect: Synchronize Package with Code</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Bei der Synchronisation aus Sparx Enterprise Architect (Merge Project oder Synchronize Package with Code) muss jede Klasse bestätigt werden:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Im Menü "Tools-&gt;Options"  aufrufen. Dort "Source Code Engineering" auswählen und den Haken bei der Checkbox "Prompt when Synchronizing (reversing)" rausnehmen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8289679801150052396?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8289679801150052396/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8289679801150052396' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8289679801150052396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8289679801150052396'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/04/enterprise-archtitect-synchronize.html' title='Enterprise Archtitect: Synchronize Package with Code'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1412597989610451822</id><published>2008-03-19T17:10:00.004+01:00</published><updated>2008-04-10T06:54:44.727+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><category scheme='http://www.blogger.com/atom/ns#' term='EnterpriseArchitect'/><title type='text'>Debuggen einer Tomcat-Webapp aus Sparx Enterprise Architect</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Tomcat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Der Tomcat muss als VM-Argumente den EA-Agent gesetz haben&lt;br /&gt;&lt;br /&gt;"-agentpath:C:\Programme\Sparx Systems\EA\SSJavaProfiler71.dll"&lt;br /&gt;&lt;br /&gt;2. Im Classpath des Tomcats muss der Source-Code der Applikation sein.&lt;br /&gt;&lt;br /&gt;3. Tomcat starten&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sparx Enterprise Architect&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Source Code der Tomcat-Applikation importieren&lt;br /&gt;&lt;br /&gt;2. Package Build Script erstellen auf dem Basis-Package der Sourcen&lt;br /&gt;&lt;br /&gt;2.1 Dazu unter Debug auf "Attach to process" stellen&lt;br /&gt;2.2 Im Directory muss der volle Pfad zu den kompilierten Klassen stehen (web-inf\classes)&lt;br /&gt;&lt;br /&gt;3. Auf dem Basis-Package der Sourcen einen "Debug Run" starten&lt;br /&gt;3.1 Es geht ein Fenster mit Prozessen auf, dabei die des javaw.exe des Tomcats wählen&lt;br /&gt;&lt;br /&gt;4. Die Stelle in der WebApp einmalig ausführen, bei der ein Breakpoint gesetzt werden soll&lt;br /&gt;&lt;br /&gt;5. Den Breakpoint setzten im EA&lt;br /&gt;&lt;br /&gt;6. Die Stelle in der WebApp nochmal ausführen, EA springt nun an den Breakpoint.&lt;br /&gt;&lt;br /&gt;7. Im View "Debug Workbench" auf "Record Stack Trace for this Thread" drücken&lt;br /&gt;&lt;br /&gt;8. Durch die Stellen im Code steppen, zu denen ein Sequenzdiagramm aufgezeichnet werden soll.&lt;br /&gt;&lt;br /&gt;9. Zum Abschluss auf "Stop Recording" drücken&lt;br /&gt;&lt;br /&gt;10. Schließlich wird das Sequendiagramm erzeugt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anmerkung: Sollte das MDG Link Plugin für Eclipse verwendet werden, setzt man einen Breakpoint, in dem man im EA eine Klasse auswählt und dann über das Menü View-&gt;Source Code auswählt. Dadurch erscheint der EA-interne Codeeditor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1412597989610451822?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1412597989610451822/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1412597989610451822' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1412597989610451822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1412597989610451822'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/03/debuggen-einer-tomcat-webapp-aus-sparx.html' title='Debuggen einer Tomcat-Webapp aus Sparx Enterprise Architect'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-997417473067380</id><published>2008-02-28T18:15:00.004+01:00</published><updated>2008-02-29T11:41:04.783+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Garbage Collector analysieren</title><content type='html'>Über folgende Java-Optionen kann ein Garbage-Collector-Logfile geschrieben werden:&lt;br /&gt;&lt;br /&gt;-XX:+PrintGC -XX:+PrintGCTimeStamps -Xloggc:logs/gcoutput.log&lt;br /&gt;&lt;br /&gt;Zur Analyse können folgende Tools verwendet werden:&lt;br /&gt;&lt;br /&gt;- HPjtune, bzw. dessen Nachfolger HPjmeter Console&lt;br /&gt;- Tagtraum GCViewer&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-997417473067380?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/997417473067380/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=997417473067380' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/997417473067380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/997417473067380'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/garbage-collector-analysieren.html' title='Garbage Collector analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2779042071367723079</id><published>2008-02-13T09:40:00.005+01:00</published><updated>2008-02-13T10:12:46.426+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>jstat, jmap, jps,... funktioniert nicht wenn der Java-Prozess per Windows "Scheduled Task" gestartet wurde</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Ein Java-Prozess wird per Schedulded Task gestartet. Wenn JDK-Tools wie jmap, jps oder jstat auf diesen Prozess verwendet werden, erhält man die Fehlermeldung "process information unavailable" oder "Not enough storage is available to process this command".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Workaround&lt;/span&gt;: Eine zweite Scheduled Task anlegen, die das gewünschte Tool ausführt, dann funktioniert der Zugriff auf den anderen, per Scheduled Task gestarteten Java-Prozess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2779042071367723079?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2779042071367723079/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2779042071367723079' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2779042071367723079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2779042071367723079'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/jstat-jps-funktioniert-nicht-wenn-der.html' title='jstat, jmap, jps,... funktioniert nicht wenn der Java-Prozess per Windows &quot;Scheduled Task&quot; gestartet wurde'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-3050090216259012895</id><published>2008-02-12T06:05:00.000+01:00</published><updated>2008-02-12T06:23:45.001+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWebJSF'/><title type='text'>JMeter und JSF</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem:&lt;/span&gt; Bei JSF gibt es die Besonderheit, dass auf der Clientseite in einem "hidden field" ein ViewState gespeichert wird. Dieser ermöglicht dem Server die Zuordung zu einem ComponentTree. Der Inhalt dieses Feldes variiert bei jedem Aufruf und muss immer mitgeschickt werden. Mit einem Standard-JMeter-Test ist dies nicht möglich.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Durch die Verwendung eines "Regular Expression Extractor" kann immer der richtige Feldinhalt mitgeschickt werden.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Schritt 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bei JMeter muss in der Thread Gruppe ein "Regular Expression Extractor" angelegt werden mit folgenden Eigenschaften:&lt;br /&gt;&lt;br /&gt;Für die SUN-RI:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Respons Field to check: body&lt;/li&gt;&lt;li&gt;Reference name: jsfViewState&lt;/li&gt;&lt;li&gt;Regular Expression: &amp;lt;input type="hidden" name="com\.sun\.faces\.VIEW" id="com\.sun\.faces\.VIEW" value="(.+?)" /&amp;gt;&lt;/li&gt;&lt;li&gt;Template: $1$&lt;/li&gt;&lt;li&gt;Match No.: 0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Default Value: leer&lt;/li&gt;&lt;/ul&gt;Für Apache MyFaces:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Respons Field to check: body&lt;/li&gt;&lt;li&gt;Reference name: jsfViewState&lt;/li&gt;&lt;li&gt;Regular Expression: &amp;lt;input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" /&amp;gt;&lt;/li&gt;&lt;li&gt;Template: $1$&lt;/li&gt;&lt;li&gt;Match No.: o&lt;/li&gt;&lt;li&gt;Default Value: leer&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Schritt 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bei jeder aufgezeichneten JSP im Recording Controller muss unter "Parameter die mit dem Request gesendet werden" die oben definierte Variable gesetzt werden:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;bei SUN RI&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Das Feld "com.sun.faces.VIEW" mit dem Wert "${jsfViewState}" überschrieben werden&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;bei Apache MyFaces&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Das Feld "javax.faces.ViewState" mit dem Wert "${jsfViewState}" überschrieben werden&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-3050090216259012895?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/3050090216259012895/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=3050090216259012895' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3050090216259012895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/3050090216259012895'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/jmeter-und-jsf.html' title='JMeter und JSF'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1457083261372576527</id><published>2008-02-08T07:06:00.001+01:00</published><updated>2008-02-12T06:21:13.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JMeter Webtest aufzeichnen und abspielen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Schritt 1: Vorbereitung im JMeter&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unter Testplan&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Eine neue Threadgruppe anlegen&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Einen HTTP Cookie Manager anlegen (damit Cookie-basierte Anwendungen funktionieren und die Session zugeordnet werden kann)&lt;/li&gt;&lt;li&gt;Alternativ kann auch ein HTTP URL Re-writing Modifier angelegt werden&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;als Session Argument Name muss dort z.B. jsessonid hinterlegt werden&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Einen Recording Controller anlegen&lt;/li&gt;&lt;ul&gt;&lt;li&gt;in diesem werden die Aufzeichnungen des Http Proxy Server abgelegt&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Unter Workbench&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Einen Http Proxy Server anlegen&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Als Target Controller den Recording Controller auswählen&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schritt 2: Test aufzeichnen&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Browser öffnen und als Proxy Server den Port eingeben der im JMeter beim Http Proxy Server angegeben wurde (Default=8080)&lt;/li&gt;&lt;li&gt;Browser-Cache und Cookies löschen&lt;/li&gt;&lt;li&gt;Im JMeter beim Http Proxy Server auf "Start" drücken&lt;/li&gt;&lt;li&gt;Gewünschte Seiten im Browser aufrufen&lt;/li&gt;&lt;li&gt;Im JMeter beim Http Proxy Server auf "Stop" drücken&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Schritt 3: Test nachbearbeiten&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Die Seiten wurden im Recording Controller abgelegt, dort können Sie nachträglich nachbearbeitet werden, z.B. durch Variablen&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Schritt 4: Tests abspielen&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In der Threadgruppe kann nun die Häufigkeit und Parallelität der Ausführung gewählt werden&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Zur Auswertung des Ergebnis sollten der Threadgruppe nun noch Lauscher (Listeners) hinzugefügt werden (z.B. Summary Report)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Über das Menü Start/Start kann der Test gestartet werde&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1457083261372576527?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1457083261372576527/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1457083261372576527' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1457083261372576527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1457083261372576527'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/jmeter-tests-mit-jsf.html' title='JMeter Webtest aufzeichnen und abspielen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-6262301795580178351</id><published>2008-02-05T20:30:00.000+01:00</published><updated>2008-02-05T20:40:02.221+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>synchronized bei Methoden</title><content type='html'>&lt;span style="font-weight: bold;"&gt;normales Methoden-synchronized&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class MyClass&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        public synchronized int rechne()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                // Code hier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;entspricht&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class MyClass&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         public int rechne()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                synchronized(this)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                     // Code hier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;synchronized bei einer statischen Methode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class MyClass&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        public static synchronized int machwas()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                // Code hier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;entspricht&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class MyClass&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;        public static int machwas()&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;               &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;synchronized(&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;MyClass.class&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                     // Code hier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                }&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;    ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-6262301795580178351?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/6262301795580178351/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=6262301795580178351' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6262301795580178351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/6262301795580178351'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/synchronized-bei-methoden.html' title='synchronized bei Methoden'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-2510575316272070195</id><published>2008-02-04T16:23:00.002+01:00</published><updated>2008-03-28T06:26:31.920+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Thread Dumps erzeugen unter Java</title><content type='html'>&lt;span&gt;&lt;span style="font-size:130%;"&gt;Vor JDK 1.5&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Windows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"Ctrl" + "Break"&lt;/span&gt; &lt;span style="font-family:arial;"&gt;erzeugt &lt;/span&gt;einen Thread Dump in Standard-Out&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linux/Unix:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kill -3 &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;pid&amp;gt; &lt;/span&gt; erzeugt einen Thread Dump in Standard-Out&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Ab JDK 1.5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Über das Tool jstack aus dem Java SDK:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jstack &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;pid&amp;gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;stack.txt &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Analyse-Tools:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://tda.dev.java.net/"&gt;TDA (OpenSource-Tool)&lt;/a&gt; Thread Dump Analyzer zur Analyse von Textfiles-Dumps:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Threads waiting for a monitor:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Ein Thread wartet vor einem synchronized-Block, der gerade von einem anderen Thread durchlaufen wird&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Threads sleeping on a monitor:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Ein Thread ist innerhalb eines sychronized-Blocks und ruft dort wait() auf&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-2510575316272070195?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/2510575316272070195/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=2510575316272070195' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2510575316272070195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/2510575316272070195'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/02/thread-dumps-erzeugen.html' title='Thread Dumps erzeugen unter Java'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7675302124523362960</id><published>2008-01-11T07:18:00.001+01:00</published><updated>2009-09-08T14:39:20.987+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='DBSqlServer'/><title type='text'>SQLServer JDBC Treiber und Integrated Authentication</title><content type='html'>Es wird der &lt;a href="http://msdn.microsoft.com/en-us/data/aa937724.aspx"&gt;SQLServer-JDBC-Treiber&lt;/a&gt; benötigt.&lt;br /&gt;&lt;br /&gt;Die Datei &lt;span style="font-family: courier new;"&gt;sqljdbc_auth.dll&lt;/span&gt; muss sich im Windows Path befinden&lt;br /&gt;&lt;br /&gt;Demo URL mit Instanz:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;jdbc:sqlserver://localhost;instanceName=rfinstance;integratedSecurity=true;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7675302124523362960?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7675302124523362960/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7675302124523362960' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7675302124523362960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7675302124523362960'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2008/01/sqlserver-jdbc-treiber-und-integrated.html' title='SQLServer JDBC Treiber und Integrated Authentication'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-9067683424266625021</id><published>2007-12-30T16:42:00.001+01:00</published><updated>2008-09-13T16:37:29.879+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Vista: File Associations löschen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Unter Windows Vista lassen sich File Associations nicht löschen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: in der Registry unter diesen Keys die entsprenden Dateiendung löschen:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;HKEY_CLASSES_ROOT&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;und&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-9067683424266625021?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/9067683424266625021/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=9067683424266625021' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9067683424266625021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9067683424266625021'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/12/vista-file-associations-lschen.html' title='Vista: File Associations löschen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8869349548864944305</id><published>2007-12-26T13:53:00.001+01:00</published><updated>2009-07-15T15:31:48.153+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWebJSF'/><title type='text'>Wichtige Grundlagen für JSF-Entwicklung</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Allgemein&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;keine Component-Bindings im Session oder Application-Scope!&lt;/li&gt;&lt;ul&gt;&lt;li&gt;verschwendet Speicher&lt;/li&gt;&lt;li&gt;UIComponents sind nicht Thread-Safe&lt;/li&gt;&lt;li&gt;gehören in den Request-Scope&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Wenn eine Seite das erste Mal geladen wird, werden Component-Bindings initialisert wenn die JSP gerendert wird.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Aber nur wenn noch keine Instanz der Komponente zuvor erzeugt wurde.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In der RestoreView-Phase kann man eine Instanz einer Komponente anlegen und dort Eigenschaften setzen. Dadurch wird dann keine neue Instanz beim Rendern der JSP angelegt, sondern die bestehende verwendet und die in der JSP gesetzten Eigenschaft überschrieben.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Komponenten speichern Value Bindings und Method bindings (#{} -- el expressions) als String Literals. Die Backing Beans auf die sie zeigen werden nicht im Component Tree im Page Scope gespeichert.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Oracle ADF&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wenn man den &amp;lt;afh:body&amp;gt; Tag verwendet ist immer Partial Page Rendering aktiviert. Sprich Controls werden nur aktualisiert wenn sie die PartialTrigger-Eigenschaft gesetzt haben.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Um dies abzuschalten muss man das normale HTML - &amp;lt;body&amp;gt;-Tag verwenden.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;STATE_SAVING_METHOD auf Client mit ADF. Zusätzlich müssen in die web.xml noch folgende Context-Params:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style="font-family: courier new;"&gt;oracle.adf.view.faces.CLIENT_STATE_METHOD&lt;/li&gt;&lt;ul&gt;&lt;li&gt;token: PageState in der Session, nur ein Token wird in der Html-Seite gespeichert, um Requests des selben Useres von mehreren Seiten zu unterscheiden. Default in JSF 1.2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;all: Der gesamte PageState wird in der Seite in eine Hidden-Field gespeichert.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-family: courier new;"&gt;&lt;code&gt;oracle.adf.view.faces.CLIENT_STATE_MAX_TOKENS&lt;/code&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;optionaler Parameter, wieviele Tokens pro User maximal gespeichert werden sollen. Default ist 15&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;Links&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MyFaces&lt;/li&gt;&lt;ul&gt;&lt;li&gt;http://www.myfaces.org/&lt;/li&gt;&lt;li&gt;http://wiki.apache.org/myfaces&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;ADF/Trinidad&lt;/li&gt;&lt;ul&gt;&lt;li&gt;http://www.orablogs.com/fnimphius/&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8869349548864944305?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8869349548864944305/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8869349548864944305' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8869349548864944305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8869349548864944305'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/12/wichtige-grundlagen-fr-jsf-entwicklung.html' title='Wichtige Grundlagen für JSF-Entwicklung'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4061166596796513116</id><published>2007-11-28T15:46:00.001+01:00</published><updated>2008-12-18T06:38:05.076+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Heap Dump erstellen und analysieren</title><content type='html'>&lt;pre&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;Vor JDK 1.6 kann ein HeapDump nur im Fehlerfall &lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt; über folgende VM-Argumente &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;geschrieben werden:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;-XX:HeapDumpPath=path -XX:HeapDumpOnOutOfMemoryError  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Nachtrag (Danke an Markus Kohler, siehe Kommentar): Mit JDK 1.4 und JDK 1.5 gibt es in den neueren Versionen auch die Option&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-XX:+HeapDumpOnCtrlBreak&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Das ermöglicht beim Drücken von "Ctrl" + "Break" einen HeapDump in das Ausführungsverzeichnis zu schreiben.&lt;br /&gt;Die &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;HeapDumpPath &lt;span style="font-family:arial;"&gt;hat hier keine Auswirkung.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Ab JDK 1.6 kann über folgendes VM-Argument ein HeapDump geschrieben werden.&lt;br /&gt;Das Schreiben findet aber erst nach Beendung des Programms statt.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;-Xrunhprof:format=b,file=mysnapsot.hprof&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Alternativ kann man auch zur Laufzeit eines Java-Programms einen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Heap-Dump erzeugen über das Tool jmap im Bin-Verzeichnis des SDK:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;jmap -dump:format=b,file=snapshot2.hprof &amp;lt;pid&amp;gt;&lt;pid&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Eine weitere Möglichkeit bietet JMX. In der MBean &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;com.sun.management:type=HotSpotDiagnostic&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;gibt es die Methode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;dumpHeap(String , boolean )&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Über diese kann ebenfalls im laufenden Betrieb ein Dump erstellt werden.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Analysiert werden kann der Dump dann z.B. über&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;jhat.exe &lt;/code&gt;&lt;code&gt;mysnapsot.hprof&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;(&lt;span style="font-family:arial;"&gt;im JDK-Bin-Verzeichnis)  Startet per Default einen WebServer auf Port 7000.&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;Den Dump kann man sich im Browser unter der Adresse http://localhost:7000 anschauen&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:arial;"&gt; den kostenlosen SAP Memory Analyzer - eine komfortabele Oberfläche auf Basis Eclipse RCP&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Beispiel: Tomcat Session &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.apache.catalina.session.StandardSession&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4061166596796513116?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4061166596796513116/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4061166596796513116' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4061166596796513116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4061166596796513116'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/11/heap-dump-erstellen.html' title='Heap Dump erstellen und analysieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-9063486658715603046</id><published>2007-11-09T08:47:00.001+01:00</published><updated>2008-05-26T21:26:49.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Garbage Collection</title><content type='html'>In der Sun JVM gibt es zwei Modi bei der Garbage Collection  &lt;ul&gt;&lt;li&gt;Minor&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Implementierung&lt;/li&gt;&lt;ul&gt;&lt;li&gt;"Copy"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;läuft relativ schnell und kann auch oft laufen&lt;/li&gt;&lt;li&gt;nur in den Memory Pools "Eden" und "Survivor"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Major&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;2 Implementierungen&lt;/li&gt;&lt;ul&gt;&lt;li&gt;"Mark-Sweep-Compact"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"PS Scavenge"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;kostspielig, läuft langsam. Alle laufende Threads werden währrend er läuft angehalten.&lt;/li&gt;&lt;li&gt;in den Memory Pools "Eden", "Survivor", "Tenured" und "Permanent"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;Für optimale Performance sollte die Major GC selten laufen.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-9063486658715603046?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/9063486658715603046/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=9063486658715603046' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9063486658715603046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/9063486658715603046'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/11/garbage-collection.html' title='Garbage Collection'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1582208440342593858</id><published>2007-11-08T11:22:00.000+01:00</published><updated>2007-11-13T07:42:51.905+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Linktip: Hibernate Issue Tracking</title><content type='html'>Auf dieser Seite werden Bugs,Lösungen, Worksarounds, etc. für Hibernate aufgenommen. Sie bietet auch eine Suchfunktionalität:&lt;br /&gt;&lt;br /&gt; http://opensource.atlassian.com/projects/hibernate/secure/QuickSearch.jspa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1582208440342593858?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1582208440342593858/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1582208440342593858' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1582208440342593858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1582208440342593858'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/11/linktip-hibernate-issue-tracking.html' title='Linktip: Hibernate Issue Tracking'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7628045858818716233</id><published>2007-10-12T09:02:00.000+02:00</published><updated>2007-11-13T07:42:45.354+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JEE/ J2EE Versionen</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Sun definiert folgende J2EE/JEE Versionen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;J2EE 1.2&lt;/li&gt;&lt;ul&gt;&lt;li&gt;  JSP 1.1 / Servlet 2.2&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;J2EE 1.3&lt;/li&gt;&lt;ul&gt;&lt;li&gt;JSP 1.2 / Servlet 2.3&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; J2EE 1.4&lt;/li&gt;&lt;ul&gt;&lt;li&gt;JSP 2.0 /Servlet 2.4&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Java EE 5&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt; JSP 2.1 / Servlet 2.5&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Auflistung einiger ApplicationServer/Tools mit J2EE/JEE-Implementierungen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;J2EE/JEE-Version im JDeveloper&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JDeveloper 10.1.2: J2EE 1.3&lt;/li&gt;&lt;li&gt;                     JDeveloper 10.1.3: J2EE 1.4 and J2EE 1.3&lt;/li&gt;&lt;li&gt;JDeveloper 11 : JEE 5&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;J2EE/JEE-Version in Oracle OC4J&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OC4J 10g 9.0.4: J2EE 1.3&lt;/li&gt;&lt;li&gt;OC4J 10g 10.1.2: J2EE 1.3&lt;br /&gt;&lt;/li&gt;&lt;li&gt;OC4J 10g 10.1.3: J2EE 1.4&lt;/li&gt;&lt;li&gt;OC4J 11 11.1.1: JEE 5&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;J2EE/JEE-Version in Apache Tomcat&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tomcat 3.3: J2EE 1.2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tomcat 4.0: J2EE 1.3&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tomcat 4.1: J2EE 1.3&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tomcat 5.0: J2EE 1.4&lt;/li&gt;&lt;li&gt;Tomcat 5.5: J2EE 1.4&lt;/li&gt;&lt;li&gt;Tomcat 6.0: JEE 5.0&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7628045858818716233?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7628045858818716233/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7628045858818716233' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7628045858818716233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7628045858818716233'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/10/jee-j2ee-versionen.html' title='JEE/ J2EE Versionen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1406660775589994254</id><published>2007-09-26T14:31:00.002+02:00</published><updated>2008-06-04T10:45:14.946+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>J2SE Versionen</title><content type='html'>Jedes .class-File hat folgenden Aufbau:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;ClassFile {&lt;br /&gt;&lt;/code&gt;    &lt;code&gt; u4 magic;&lt;br /&gt;&lt;/code&gt;    &lt;code&gt; &lt;span style="color: rgb(102, 255, 153);"&gt;u2 minor_version&lt;/span&gt;;&lt;br /&gt;&lt;/code&gt;    &lt;code&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;u2 major_version&lt;/span&gt;;&lt;br /&gt;&lt;/code&gt;    &lt;code&gt; ...&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;a name="19084"&gt;&lt;/a&gt;    &lt;code&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Beispiel:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;CA FE BA BE &lt;span style="color: rgb(51, 255, 51);"&gt;00 00&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;00 30&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also ergibt sich die Hex-Version 30.0, das entspricht dezimal 48,&lt;br /&gt;also der JDK-Version 1.4&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="ForrestTable" cellpadding="4" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="1" rowspan="1"&gt;Java-Version&lt;/th&gt;     &lt;th colspan="1" rowspan="1"&gt;Byte-Code-Version&lt;/th&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;1.0&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;45.0 (00 00 00 2D)            &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;1.1&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;45.3 (00 03 00 2D)&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;1.2&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;46 (00 00 00 2E)&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;1.3&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;47 (00 00 00 2F)&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;1.4&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;48 (00 00 00 30)&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;5.0 (1.5)&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;49 (00 00 00 31)&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;      &lt;td colspan="1" rowspan="1"&gt;6.0 (1.6)&lt;/td&gt;     &lt;td colspan="1" rowspan="1"&gt;50 (00 00 00 32)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1406660775589994254?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1406660775589994254/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1406660775589994254' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1406660775589994254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1406660775589994254'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/09/jdk-versionen.html' title='J2SE Versionen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-1459415091105827709</id><published>2007-09-26T13:33:00.001+02:00</published><updated>2008-05-26T21:56:29.749+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>DBCP-Logging in Tomcat</title><content type='html'>Beim Tomcat kann man wie folgt Connection-Pooling über DBCP einrichten. Dabei ist es möglich&lt;br /&gt;Connections, die nicht mehr geschlossen werden nach einer bestimmten Zeit zu schließen (removeAbandoned). Zusätzlich kann ein Stacktrace der Codestelle geloggt werden, die das Problem verursacht hat (logAbandoned)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;Resource name="jdbc/MyDB2" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        scope="Shareable" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        type="javax.sql.DataSource" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        auth="Container"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        url="jdbc:db2:mydb2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        maxIdle="10"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      maxOpenPreparedStatements="50"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      maxActive="50"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      validationQuery="Select name from test FETCH FIRST 1 ROWS ONLY FOR FETCH ONLY"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      testWhileIdle="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      timeBetweenEvictionRunsMillis="600000"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      driverClassName="COM.ibm.db2.jdbc.app.DB2Driver"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      maxWait="10000"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      username="user"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      poolPreparedStatements="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      password="pass"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      removeAbandoned="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      removeAbandonedTimeout="180"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      logAbandoned="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    /&amp;gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Das Problem mit DBCP ist, dass diese Logausgabe über System.out rausgeschrieben werden und nicht über ein Logging-Framework. Daher muss beim Starten des Tomcats dessen Ausgabe einfach in eine File geschrieben werden:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bin\catalina run &gt;logs_tomcat\console-out-%date%.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Erzeugt z.B. folgende Ausgabe:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DBCP object created 2007-09-26 12:03:40 by the following code was never closed:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;java.lang.Exception&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.setStackTrace(AbandonedTrace.java:157)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:76)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at de.rfeest.test.db.ConnectionOpenerJNDIImpl.createConnection(Unknown Source)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    at de.rfeest.test.db.Executor.openConnection(Unknown Source)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-1459415091105827709?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/1459415091105827709/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=1459415091105827709' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1459415091105827709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/1459415091105827709'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/09/dbcp-logging-in-tomcat.html' title='DBCP-Logging in Tomcat'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-763753153571164918</id><published>2007-09-24T10:51:00.000+02:00</published><updated>2007-09-24T10:54:08.639+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DBDB2'/><title type='text'>Timestamps in DB2-Sql-Abfragen</title><content type='html'>Timestamps werden in folgendem Format erwartet: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;timestamp(yyyy-mm-hh-hh.mm.ss.sss)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Beispiel&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;select * from mytable where &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;mytimestamp =  timestamp('2007-09-20-14.45.14.394')&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-763753153571164918?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/763753153571164918/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=763753153571164918' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/763753153571164918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/763753153571164918'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/09/timestamps-in-db2-sql-abfragen.html' title='Timestamps in DB2-Sql-Abfragen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7031106504395424941</id><published>2007-09-18T15:51:00.000+02:00</published><updated>2007-09-18T15:54:33.415+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>UTF-8 für Log4J-Logfiles</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Es sollen in Log4J-Logfiles UTF-8 geschrieben werden.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Definition des Parameters "Encoding"&lt;br /&gt;&lt;br /&gt;&amp;lt;appender name="DEBUG_MAIL"&lt;br /&gt;        class="org.apache.log4j.RollingFileAppender"&amp;gt;       &lt;br /&gt;        &amp;lt;param name="File" value="logs/mail.log" /&amp;gt;&lt;br /&gt;        &amp;lt;param name="MaxFileSize" value="2500000" /&amp;gt;&lt;br /&gt;        &amp;lt;param name="MaxBackupIndex" value="1" /&amp;gt;&lt;br /&gt;        &lt;span style="font-weight: bold;"&gt;&amp;lt;param name="encoding" value="UTF-8"/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &amp;lt;layout class="org.apache.log4j.PatternLayout"&amp;gt;&lt;br /&gt;            &amp;lt;param name="ConversionPattern"&lt;br /&gt;                value="%d %-4r [%t] %-5p (%c:%L) %x - %m%n" /&amp;gt;&lt;br /&gt;        &amp;lt;/layout&gt;&lt;br /&gt;        &amp;lt;filter class="org.apache.log4j.varia.LevelRangeFilter"&amp;gt;&lt;br /&gt;            &amp;lt;param name="LevelMin" value="INFO" /&amp;gt;&lt;br /&gt;            &amp;lt;param name="LevelMax" value="INFO" /&amp;gt;&lt;br /&gt;        &amp;lt;/filter&amp;gt;&lt;br /&gt;    &amp;lt;/appender&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7031106504395424941?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7031106504395424941/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7031106504395424941' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7031106504395424941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7031106504395424941'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/09/utf-8-fr-log4j-logfiles.html' title='UTF-8 für Log4J-Logfiles'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4433574207455823781</id><published>2007-07-27T13:18:00.000+02:00</published><updated>2007-08-02T07:17:57.396+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaJDEV'/><title type='text'>Fehler beim Erzeugen eines Ant-Build Files aus dem Projekt mit JDeveloper</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Beim Erzeugen eines Ant-Build-Files aus einem JDeveloper-Projekt kommt die folgende Fehlermeldung:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;oracle.ide.net.URLFactory NullPointer    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Bei den Project Properties unter "Project Content" bei Resources den Hauptordner der Applikation hinzufügen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4433574207455823781?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4433574207455823781/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4433574207455823781' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4433574207455823781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4433574207455823781'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/07/fehler-beim-erzeugen-eines-ant-build.html' title='Fehler beim Erzeugen eines Ant-Build Files aus dem Projekt mit JDeveloper'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4585540766138292743</id><published>2007-07-06T13:59:00.004+02:00</published><updated>2011-09-07T10:42:50.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Directory-Alias setzen ab Windows 2000</title><content type='html'>&lt;pre&gt;linkd "C:\Program Files" c:\programme&lt;/pre&gt;bzw. &lt;br /&gt;&lt;pre&gt;junction "C:\Program Files" c:\programme&lt;/pre&gt;Junction ist von &lt;a href="http://technet.microsoft.com/de-de/sysinternals"&gt;Sysinternals&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Um ein Laufwerk auf ein Verzeichnis zu mounten verwendet man subst:&lt;pre&gt;subst e: "C:\Bilder"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4585540766138292743?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4585540766138292743/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4585540766138292743' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4585540766138292743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4585540766138292743'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/07/directory-alias-setzen-ab-windows-2000.html' title='Directory-Alias setzen ab Windows 2000'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8835494534175472695</id><published>2007-06-28T15:34:00.000+02:00</published><updated>2007-12-13T11:56:19.420+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>Struts &amp; ApplicationResources FAQ</title><content type='html'>&lt;span style="font-weight: bold;"&gt;In welchem Format müssen die Properties-Files vorliegen&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;Die Dateien müssen wie im ISO-8859-1 Format gespeichert werden (NICHT IN UTF-8!!!). Zeichen die über diesen Zeichensatz hinausgehen müssen in Unicode Escapes  gespeichert werden. &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wie findet Struts die Default-Sprache bei &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ApplicationResource  Sprache&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Der Default für Struts bei ApplicationResources (also das File, das genommen wird, wenn die Browsersprache nicht gefunden) ist nicht das Property-File ohne Sprachendung, sondern das Property-File mit der Endung der Locale, die als System-Property der JVM gesetzt ist.&lt;br /&gt;&lt;br /&gt;Diesen Werte kann man setzen über&lt;br /&gt;&lt;ol&gt;&lt;li&gt;System-Property -Duser.language=de -Duser.region=DE&lt;/li&gt;&lt;li&gt;über API: Locale.setDefault()&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Ein Beispiel dazu:&lt;br /&gt;&lt;br /&gt;Die System-Locale ist auf &lt;span style="font-weight: bold;"&gt;de_DE &lt;/span&gt;gesetzt.&lt;br /&gt;&lt;br /&gt;Es existieren folgende Property-Files:&lt;br /&gt;&lt;br /&gt;myfile.properties     (enthält englische Texte)&lt;br /&gt;myfile.properties_de (enthält deutsche Texte)&lt;br /&gt;myfile.properties_it (enthält italienischeTexte)&lt;br /&gt;&lt;br /&gt;Ein Benutzer kommt mit der Browser-Sprache russisch in die Applikation. Er bekommt nicht die&lt;br /&gt;englischen Texte aus myfile.propertiesm sondern die deutschen Texte aus myfile.properties_de!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;html locale&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Um JSPs mit den bean:message - Tags lokalisiert darzustellen, muss der Tag&lt;br /&gt;&lt;br /&gt;&amp;lt;html:html locale="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;nur gesetzt werden, wenn der Aufruf der JSP direkt erfolgt (http://myserver/person.jsp) und nicht über die Action (http://myserver/person.do). Über die Action sorgt Struts selbst dafür.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Achtung: Ist seit Struts 1.29 deprecated&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Stattdessen muss &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html:html lang="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;verwendet werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8835494534175472695?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8835494534175472695/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8835494534175472695' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8835494534175472695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8835494534175472695'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/struts-properties.html' title='Struts &amp; ApplicationResources FAQ'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-688751446274230920</id><published>2007-06-25T13:42:00.000+02:00</published><updated>2007-06-25T13:54:40.122+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Hibernate - Filter für 1:n-Beziehungen definieren</title><content type='html'>Definition des Filters in einem Mapping-File:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;hibernate-mapping&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;filter-def name="theFilter"&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;filter-param name="theParam" type="int"/&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/filter-def&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;filter-param name="theParam" type="int"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/hibernate-mapping&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In einer 1:n-Beziehung (hier am Beispiel einer indizierten Liste) wird der Filter angegeben. Die Condition landet in der WHERE-Klausel:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;list name="myListOfSomething" inverse="true" lazy="false" &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;key&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;column name="PF_ID" precision="11" scale="0" not-null="true" /&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/key&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;index column="MYPK" /&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;one-to-many class="Something" &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;filter name="theFilter" condition="MYPK=:theParam"/&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/list&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Beim Aufruf wird der Filter wie folgt definiert&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Filter filter = session.enableFilter("theFilter");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filter.setParameter("theParam",new Integer(2));&lt;/span&gt;&lt;/filter-param&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-688751446274230920?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/688751446274230920/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=688751446274230920' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/688751446274230920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/688751446274230920'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/hibernate-filter-fr-1n-beziehungen.html' title='Hibernate - Filter für 1:n-Beziehungen definieren'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-4792330345610458482</id><published>2007-06-20T14:06:00.000+02:00</published><updated>2007-06-20T16:16:06.930+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaJDEV'/><title type='text'>ANT Task "JAVAC" aus JDeveloper starten - Problem mit unterschiedlichen JDKs</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem: &lt;/span&gt;JDeveloper wird z.B. mit JDK 1.5 gestartet. Über ein ANT-Buildfile hat man eine JAVAC-Task zum Kompilieren der Sourcen mit dem 1.4er Compiler definiert. Bei der Ausführung kommt es zu Laufzeitfehlern bedingt durch API-Unterschiede, z.B.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;java.lang.NoSuchMethodError: java.math.BigDecimal.&lt;init&gt;(I)V&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Obwohl Ant im JDev so konfiguriert ist, dass es unter 1.4 läuft, wird dennoch die rt.jar von 1.5 geladen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Verwendung des bootclasspath-Attributs unter Angabe des Pfads zur rt.jar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &amp;lt;target name="compile" description="Compile Java source files"&amp;gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;javac destdir="${output.dir}" classpathref="classpath"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           debug="${javac.debug}" nowarn="${javac.nowarn}"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           bootclasspath="${jdk.path}lib/rt.jar"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           deprecation="${javac.deprecation}" encoding="Cp1252" source="1.4"&amp;gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      &amp;lt;src path="src"/&amp;gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &amp;lt;/javac&amp;gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &amp;lt;/target&amp;gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-4792330345610458482?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/4792330345610458482/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=4792330345610458482' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4792330345610458482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/4792330345610458482'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/ant-task-javac-aus-jdeveloper-starten.html' title='ANT Task &quot;JAVAC&quot; aus JDeveloper starten - Problem mit unterschiedlichen JDKs'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-7062190731248189670</id><published>2007-06-20T11:02:00.000+02:00</published><updated>2007-06-20T11:17:43.181+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaJDEV'/><title type='text'>Problem bei der Migration von JDEV 10.1.2 Projekten nach höheren Versionen</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Beim Build-Prozess des JDeveloper treten Fehler auf (z.B. dass xml-Dateien nicht mehr in das Build-Verzeichnis kopiert werden). In der Konsolenausgabe der jdev.exe erscheint&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;java.lang.ClassCastException: oracle.bali.xml.addin.XMLSourceNode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Es ist ein fehlerhafter Eintrag im Projektfile (.jpr):&lt;br /&gt;&lt;br /&gt;  &amp;lt;hash n="ejbModuleContainer"&amp;gt;&lt;br /&gt;     &amp;lt;value n="ejbVersion" v="NOT SPECIFIED"/&amp;gt;&lt;br /&gt;     &amp;lt;url n="orionEjbJarNodeURL" path="src/META-INF/orion-ejb-jar.xml"/&amp;gt;&lt;br /&gt;  &amp;lt;/hash&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: Der Eintrag muss entfernt werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-7062190731248189670?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/7062190731248189670/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=7062190731248189670' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7062190731248189670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/7062190731248189670'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/problem-bei-der-migration-von-jdev-1012.html' title='Problem bei der Migration von JDEV 10.1.2 Projekten nach höheren Versionen'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-5080028118166280503</id><published>2007-06-18T13:45:00.004+02:00</published><updated>2008-04-22T14:42:21.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java &amp; XML Konfiguration</title><content type='html'>&lt;span style="font-weight: bold;"&gt;JAXP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;layer id="google-toolbar-hilite-11" style="background-color: Chartreuse; color: black;"&gt;XML&lt;/layer&gt;-Verarbeitung ist standardisiert durch die &lt;layer id="google-toolbar-hilite-0" style="background-color: Yellow; color: black;"&gt;Java&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-4" style="background-color: Cyan; color: black;"&gt;API&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-8" style="background-color: Fuchsia; color: black;"&gt;for&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-12" style="background-color: Chartreuse; color: black;"&gt;XML&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-20" style="background-color: Dodgerblue; color: black;"&gt;Processing&lt;/layer&gt; (&lt;a href="https://jaxp.dev.java.net/"&gt;JAXP&lt;/a&gt;)&lt;br /&gt;Bis 1.4 war es nicht Bestandteil des JDK und muss separat heruntergeladen werden.&lt;br /&gt;&lt;br /&gt;JDK 1.5 beinhaltet JAXP 1.3&lt;br /&gt;JDK 1.6 beinhaltete JAXP 1.4&lt;br /&gt;&lt;br /&gt;Interfaces/Abstrakte Klassen, etc&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;layer id="google-toolbar-hilite-13" style="background-color: Chartreuse; color: black;"&gt;xml&lt;/layer&gt;-apis.jar oder jaxp-&lt;layer id="google-toolbar-hilite-5" style="background-color: Cyan; color: black;"&gt;api&lt;/layer&gt;.jar oder xmlPasrserAPIs.jar&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Optional, wenn nicht in den ersten enthalten:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sax.jar: Simple &lt;layer id="google-toolbar-hilite-6" style="background-color: Cyan; color: black;"&gt;API&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-9" style="background-color: Fuchsia; color: black;"&gt;for&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-14" style="background-color: Chartreuse; color: black;"&gt;XML&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-21" style="background-color: Dodgerblue; color: black;"&gt;Processing&lt;/layer&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;dom.jar Document Object Model &lt;layer id="google-toolbar-hilite-7" style="background-color: Cyan; color: black;"&gt;API&lt;/layer&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;JAXP-Implementierungen&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Vor JDK 1.6 muss separat eine JAXP-Implementierung bezogen werden. Bei JDK 1.6 kommt eine RI im rt.jar mit (ist Xerces/Xalan)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;xercexImpl.jar -&gt;  Xerces&lt;/li&gt;&lt;li&gt;Oracle &lt;layer id="google-toolbar-hilite-15" style="background-color: Chartreuse; color: black;"&gt;XML&lt;/layer&gt; Parser V2 &lt;layer id="google-toolbar-hilite-10" style="background-color: Fuchsia; color: black;"&gt;for&lt;/layer&gt; &lt;layer id="google-toolbar-hilite-1" style="background-color: Yellow; color: black;"&gt;Java&lt;/layer&gt;&lt;/li&gt;&lt;li&gt;Crimson&lt;/li&gt;&lt;li&gt;Saxon&lt;br /&gt;&lt;/li&gt;&lt;li&gt;xalan.jar -&gt; Xalan (Transformation)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Properties&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   javax.&lt;layer id="google-toolbar-hilite-16" style="background-color: Chartreuse; color: black;"&gt;xml&lt;/layer&gt;.parsers.SAXParserFactory (für SAX-Parser)&lt;/li&gt;&lt;li&gt;   javax.&lt;layer id="google-toolbar-hilite-17" style="background-color: Chartreuse; color: black;"&gt;xml&lt;/layer&gt;.parsers.DocumentBuilderFactory (für DOM-Parser)&lt;/li&gt;&lt;li&gt;   javax.&lt;layer id="google-toolbar-hilite-18" style="background-color: Chartreuse; color: black;"&gt;xml&lt;/layer&gt;.transform.TransformerFactory (für XSLT)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Werte, z.B.:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;org.apache.xerces.jaxp.SAXParserFactoryImpl&lt;/li&gt;&lt;li&gt;org.apache.xerces.jaxp.DocumentBuilderFactoryImpl&lt;/li&gt;&lt;li&gt;com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Diese Properties werden in dieser Reihenfolge ausgelesen:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;System-Properties mit der Option -D gesetzt (beim Aufruf der &lt;layer id="google-toolbar-hilite-2" style="background-color: Yellow; color: black;"&gt;java&lt;/layer&gt;.exe) oder im &lt;layer id="google-toolbar-hilite-3" style="background-color: Yellow; color: black;"&gt;Java&lt;/layer&gt;-Code mit System.setProperty()&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;über jaxp.properties (in [PFAD zum JDK]\jre\lib)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In einem jar File im Ordner META-INF/services  (So wird z.B. bei Tomcat-Distribution im common\endorsed-Ordner der &lt;layer id="google-toolbar-hilite-19" style="background-color: Chartreuse; color: black;"&gt;XML&lt;/layer&gt;-Parser gesetzt).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Als Fallback-Lösung, wird die Systemimplementierung verwendet&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-5080028118166280503?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/5080028118166280503/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=5080028118166280503' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5080028118166280503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/5080028118166280503'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/java-xml-konfiguration.html' title='Java &amp; XML Konfiguration'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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-17138913.post-8700235921044761623</id><published>2007-06-15T16:39:00.000+02:00</published><updated>2007-06-15T17:21:22.332+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaWeb'/><title type='text'>Deployment von WAR-Files unter Tomcat 6</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Reploy oder Undeploy von per WAR-Files deployten Applikationen unter Tomcat funktioniert nicht:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ursache&lt;/span&gt;: Es werden manche jar gesperrt, so dass sie nicht mehr gelöscht werden können.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lösung&lt;/span&gt;: In das WAR-File muss im  META-INF Ordner die Datei context.xml sein.&lt;br /&gt;&lt;br /&gt;Diese muss den Eintrag &lt;span style="font-family:courier new;"&gt;antiResourceLocking="true"&lt;/span&gt; haben.&lt;br /&gt;&lt;br /&gt;Beispiel:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;context path="/guardian" crosscontext="true" debug="0" reloadable="true"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;Context path="/guardian" crossContext="true" debug="0" reloadable="true"&lt;br /&gt;      antiResourceLocking="true"&lt;/span&gt;&lt;/context&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;context path="/guardian" crosscontext="true" debug="0" reloadable="true"&gt;&lt;span style="font-family:courier new;"&gt;        &lt;resourcelink name="jdbc/mydb" type="javax.sql.DataSource" global="jdbc/DB2PGLOBAL"&gt;&lt;/resourcelink&gt;&lt;/span&gt;&lt;/context&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;context path="/guardian" crosscontext="true" debug="0" reloadable="true"&gt;&lt;span style="font-family:courier new;"&gt;/Context&lt;/span&gt;&lt;/context&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17138913-8700235921044761623?l=rfeest.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rfeest.blogspot.com/feeds/8700235921044761623/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17138913&amp;postID=8700235921044761623' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8700235921044761623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17138913/posts/default/8700235921044761623'/><link rel='alternate' type='text/html' href='http://rfeest.blogspot.com/2007/06/deployment-von-war-files-unter-tomcat-6.html' title='Deployment von WAR-Files unter Tomcat 6'/><author><name>&lt;b&gt;Rainer Feest&lt;/b&gt;</name><uri>http://www.blogger.com/profile/03045676166601585706</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>
