<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2818279661980553000</atom:id><lastBuildDate>Mon, 09 Sep 2024 05:36:05 +0000</lastBuildDate><category>FAST</category><category>ESP</category><category>FAST Server</category><category>Weblogic</category><category>FAST Command</category><category>ESP 5.2.x</category><category>Java</category><category>Esp 4.3.x</category><category>FAST Error</category><category>Index</category><category>FAST ESP</category><category>J2EE</category><category>Data Base</category><category>Error</category><category>JSP</category><category>Oracle</category><category>QR</category><category>QRServer</category><category>Search SDK</category><category>Collection</category><category>Common</category><category>Config</category><category>Portlet</category><category>Server</category><category>Web Server</category><category>Weblogic 10.3g</category><category>portal</category><category>.Net</category><category>BEA</category><category>Internationalization</category><category>Interview Questions</category><category>Localization</category><category>Query Error</category><category>SEARCHs</category><category>Search API</category><category>Search Code</category><category>Search Engine</category><category>Serialization</category><category>Servlet</category><category>.Net To Java</category><category>ANT</category><category>Abstract Class</category><category>Ajax</category><category>BEA SOA Model</category><category>BPM</category><category>Build Issue</category><category>C++</category><category>Cache</category><category>Channel</category><category>Command Prompt</category><category>Converting Tool</category><category>Crawler</category><category>DB</category><category>DOS</category><category>DbXplorer</category><category>Difference</category><category>Doccount</category><category>Dojo</category><category>Domain</category><category>EJB</category><category>Estimation</category><category>Excel</category><category>Framework</category><category>IKVMC</category><category>Indexing</category><category>JSF</category><category>JSR168</category><category>Java PureFaces</category><category>Log4j</category><category>Logger</category><category>Message Catalogs</category><category>New Releases</category><category>Node Controller</category><category>ORA-12535</category><category>Object Persistence</category><category>Objects</category><category>PDF</category><category>Partial Update</category><category>Pointbase</category><category>Projects</category><category>QRServer timed out</category><category>Rank</category><category>RankLog</category><category>Ranking</category><category>RegEx</category><category>Regular Expression</category><category>Relevancy</category><category>Relevancy Ranking</category><category>Resource</category><category>Result View</category><category>SFE</category><category>SOA</category><category>SQL</category><category>Sealed Class</category><category>Searcg Engine</category><category>Singleton</category><category>Software</category><category>Stream</category><category>Taxonomy</category><category>Techniques</category><category>Tool</category><category>Tool Kit</category><category>Tuning</category><category>Update</category><category>Value Objects</category><category>Windows</category><category>dll</category><category>fdispatch</category><category>i18n</category><category>iText</category><category>jar</category><category>nCtrl</category><category>portlet 3.2.1</category><category>rsctrl</category><category>sea</category><category>search Fornt End</category><category>virtualization</category><title>The World of J2EE Technology</title><description>A Good technical source for Weblogic.It gives insightful look at the world of web technology using weblogic.</description><link>http://javatechnospot.blogspot.com/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4218237780289257417</guid><pubDate>Tue, 19 May 2009 18:40:00 +0000</pubDate><atom:updated>2009-05-19T11:46:16.222-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">fdispatch</category><category domain="http://www.blogger.com/atom/ns#">QR</category><category domain="http://www.blogger.com/atom/ns#">QRServer</category><title>Fast Esp : QRServer and fdispatch not connected</title><description>Error code indicates that the channel is not connected. There is no connection between fdispatch and QRServer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Restart the fdispatch and QRServer processes and then complete the following general debugging procedure:&lt;br /&gt;&lt;br /&gt;1. Turn on fnet debugging: &lt;br /&gt;       http://:15100/control?debug.fnet=1&lt;br /&gt;&lt;br /&gt;2. Issue some queries. &lt;br /&gt;&lt;br /&gt;2. Look at the output in qrserver.scrap for output similar to the following: &lt;br /&gt;       [2004-01-21 09:33:07] INFO : qrserver-&gt;fnet: events[/s][loop/int/io][&lt;br /&gt;       967.3/0.0/1.0] packets[/s][r/w][1.0/1.0] data[kB/s][r/w][0.03/0.01]&lt;br /&gt;        &lt;br /&gt;       If you find a packets[/s][r/w][0.0/1.0] message displayed, then the problem &lt;br /&gt;       is most likely present on your system (zero packets read per second).&lt;br /&gt;&lt;br /&gt;4. Debug logging for RTS and searchctrl. To investigate this further, it is useful to have debug logs from two components. On all search nodes:&lt;br /&gt;&lt;br /&gt;      etc/searchrc-1.xml&lt;br /&gt;      set debuglog=&quot;true&quot;&lt;br /&gt;       &lt;br /&gt;   On the configuration server node:&lt;br /&gt;      etc/config_data/RTSearch/webcluster/rtsearchrc.xml&lt;br /&gt;      set debugLog=&quot;true&quot;&lt;br /&gt;&lt;br /&gt;5. Edit %FASTSEARCH%/etc/searchrc-dispatch.xml on search nodes with topfdispatch. &lt;br /&gt;&lt;br /&gt;      set debuglog=&quot;true&quot;&lt;br /&gt;&lt;br /&gt;      By default the option is set to false. &lt;br /&gt;&lt;br /&gt;6. Edit the files above accordingly. Shut down the system and restart after verifying that all the processes have terminated successfully (frtsobj.exe, fsearchctrl.exe).</description><link>http://javatechnospot.blogspot.com/2009/05/fast-esp-qrserver-and-fdispatch-not.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4851065386245468368</guid><pubDate>Tue, 19 May 2009 18:35:00 +0000</pubDate><atom:updated>2009-05-19T11:39:49.277-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">QR</category><category domain="http://www.blogger.com/atom/ns#">QRServer</category><category domain="http://www.blogger.com/atom/ns#">QRServer timed out</category><category domain="http://www.blogger.com/atom/ns#">Query Error</category><title>FAST ESP : QRServer timed out</title><description>You will get QR server timeout error sometime when you specified the incorrect timeout value in system.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Error: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The exception is: no.fast.ds.search.SearchEngineException: Timed out while waiting for query result.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To resolve this issue, increase the source.xml, fdispatch.addon and fsearch.addon timeout values in the system.&lt;br /&gt;&lt;br /&gt;1. Update FASTSEARCH/etc/fdispatch.addon with the following values: &lt;br /&gt;      maxdocsumwait = 80&lt;br /&gt;      maxsearchwait = 70&lt;br /&gt;      maxsocksilent = 120&lt;br /&gt;&lt;br /&gt;2. Update FASTSEARCH/etc/fsearch.addon with the following value: &lt;br /&gt;       maxsocksilent = 120&lt;br /&gt;&lt;br /&gt;3. Update FASTSEARCH/etc/qrserver/sources.xml with the following value: &lt;br /&gt;       timeout query=&quot;60&quot; docsum=&quot;70&quot; (the timeout tag)&lt;br /&gt;&lt;br /&gt;4. Restart rtsearch/qrserver.</description><link>http://javatechnospot.blogspot.com/2009/05/fast-esp-qrserver-timed-out.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4341851512419230808</guid><pubDate>Tue, 19 May 2009 18:32:00 +0000</pubDate><atom:updated>2009-05-19T11:35:44.095-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">Query Error</category><title>Handling Query Errors (Java Search API)</title><description>Query errors will appear as an exception to the search() method within the ISearchView interface. Instead of printing the full Java exception, it is possible to catch the specific exception with its error code and error message. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;try { &lt;br /&gt;    IQueryResult result = engine.(query); &lt;br /&gt;    ... &lt;br /&gt;    ... &lt;br /&gt;} catch (SearchEngineException e) { &lt;br /&gt;   System.err.println(&quot;Error &quot; + e.getMessage() + &quot;: &quot; + e.getErrorCode()); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;A nonzero error code indicates query related error messages.</description><link>http://javatechnospot.blogspot.com/2009/05/handling-query-errors-java-search-api.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4416880920578978537</guid><pubDate>Tue, 19 May 2009 18:28:00 +0000</pubDate><atom:updated>2009-05-19T11:32:11.517-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>FAST ESP Adminserver error codes and messages</title><description>Adminserver error codes and messages.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Severity:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ERROR&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Log message&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;com.fastsearch.esp.admin.&lt;br /&gt;engine.corba.JacORBNameserviceService&lt;br /&gt;[Nameservice@null:0 Local@null:&lt;br /&gt;/] could not activate ORB&lt;br /&gt;(org.jacorb.orb.ORB@&lt;br /&gt;) : org.omg.CORBA.&lt;br /&gt;INITIALIZE: Could not create server socket &lt;br /&gt;vmcid: 0x0 minor code: 0 completed: No&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cause(s) :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The TCP port that Adminserver&#39;s ORB tries to bind to is unavailable. &lt;br /&gt;This is most likely due to another instance of Adminserver running or not properly shut down.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Action(s):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Check if Adminserver is already running. If it is, terminate it and restart Adminserver. Check if some other process has bound to either of the two TCP ports with &#39;netstat -an&#39;. Make sure no other processes are running in the FAST ESP port range before starting FAST ESP.</description><link>http://javatechnospot.blogspot.com/2009/05/fast-esp-adminserver-error-codes-and.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-5484864558447161213</guid><pubDate>Tue, 19 May 2009 18:22:00 +0000</pubDate><atom:updated>2009-05-19T11:27:08.519-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">QR</category><category domain="http://www.blogger.com/atom/ns#">QRServer</category><title>FAST ESP Error Messages</title><description>The following result format is returned if an error occurs during execution of a query: &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XML template:&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;ERROR CODE=&quot;1102&quot;&gt;Could not open channel to server.ERROR&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Text template:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;#SEG NAM _SEGNAME_ &lt;br /&gt;#### &lt;br /&gt;#ERC 1102 &lt;br /&gt;#ERT Could not open channel to server. &lt;br /&gt;#### &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note: &lt;br /&gt;&lt;br /&gt;Error messages in the 10xx range originate from the Search Engine.&lt;br /&gt;Error messages above that originate from the Query &amp; Result Server.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Code Description :&lt;/strong&gt;&lt;br /&gt;1001 General error. Unexpected internal error message. Contact FAST Technical Support.&lt;br /&gt;1002 Error parsing query. Check the query syntax. Note: When using the FQL query language a query syntax error is normally reported by error message 1201&lt;br /&gt;1003 All partitions are down (Search Engine). Verify installation (System Management) and network interfaces.&lt;br /&gt;1004 No such dataset. A query parameter `dataset&#39; exists but is not supported in this version of the product. Contact FAST Technical Support if this error message appears.&lt;br /&gt;1005 System is overloaded. This will happen when queries are refused due to QPS license limitations.&lt;br /&gt;1006 The requested functionality is not implemented. Check the query syntax and query parameters.&lt;br /&gt;1007 Query not allowed to run (due to internal resource problem). Normally a temporary resource problem - Resubmit query.&lt;br /&gt;1008 Lost connection to one or more Search Engine sub-nodes. Verify installation (System Management) and network interfaces. The search client should normally resubmit the query, refer to Errors related to evaluation of complex queries.&lt;br /&gt;1009 Multiple errors occurred from different search partitions. The search client should normally resubmit the query, refer to section Errors related to evaluation of complex queries.&lt;br /&gt;1010 Query evaluation error (Internal Search Engine error conditions). Contact FAST Technical Support.&lt;br /&gt;1011 Query timeout: One or more Search Engine nodes did not respond within the query timeout limit. The search client should normally resubmit the query, refer to Errors related to evaluation of complex queries.&lt;br /&gt;1012 Not enough resources, query not possible to resolve. Analyze the query that caused the error message. Refer to Errors related to evaluation of complex queries.&lt;br /&gt;1013 Not enough resources, temporary problem within the Search Engine. Search Front End may re-submit. Refer to Errors related to evaluation of complex queries if the error condition always or frequently occurs for specific types of queries.&lt;br /&gt;1014 Not supported - for queries that are not supported. Check query syntax. Contact FAST Technical Support if you are not able to detect errors in the query syntax.&lt;br /&gt;1015 License checkout problem&lt;br /&gt;1016 Requested generation no longer available. A version of the index can no longer be reached. Contact FAST Technical Support.&lt;br /&gt;1020 Document summary internal error. May be a temporary resource problem, Search Front End may try to resubmit query.&lt;br /&gt;1021 Document summary internal error. May also be related to a connectivity problem or search nodes out of operation. Verify installation (System Management) and network interfaces.&lt;br /&gt;1022 Document summary internal error. May also be related to a connectivity problem or search nodes out of operation. Verify installation (System Management) and network interfaces.&lt;br /&gt;1101 No query state supplied, nothing to search for. Contact FAST Technical Support.&lt;br /&gt;1102 Could not open channel to server (No connection to search dispatcher). Verify installation (System Management) and network interfaces.&lt;br /&gt;1103 No query in the query state. Contact FAST Technical Support.&lt;br /&gt;1104 Failed to send query packet. Verify installation (System Management) and network interfaces.&lt;br /&gt;1105 Search timed out. The search client should normally resubmit the query, refer to Errors related to evaluation of complex queries.&lt;br /&gt;1106 Unknown response for query. Contact FAST Technical Support, please include information from query log.&lt;br /&gt;1107 Connection failed while searching (Connection to search dispatcher failed in the query-phase. Verify installation (System Management) and network interfaces.&lt;br /&gt;1108 Failed to send docsum request packet. Verify installation (System Management) and network interfaces.&lt;br /&gt;1109 Docsum fetching timed out (Timed out waiting for docsums from search engine). Refer to Errors related to evaluation of complex queries.&lt;br /&gt;1110 Connection failed while fetching docsums. Verify installation (System Management) and network interfaces.&lt;br /&gt;1111 Unknown response while fetching docsums. Contact FAST Technical Support, please include information from query log.&lt;br /&gt;1112 Failed to store hit information. Contact FAST Technical Support.&lt;br /&gt;1113 Failed to allocate memory for query. Contact FAST Technical Support.&lt;br /&gt;1114 Partial Result. Not possible to retrieve results from all columns (partitions). This may be caused by a connectivity error or an error with a specific search partition. Verify installation (System Management), network interfaces and the status for the search partitions.&lt;br /&gt;1201 FAST Query Language (FQL) query parsing error. Refer to the error text for error details.&lt;br /&gt;1202 Result processor failure. Check query parameters.&lt;br /&gt;1998 Requesting a result template that is not supported. May occur when using customized result template formats.&lt;br /&gt;1999 Query &amp;amp; Result Server error. Contact FAST Technical Support.&lt;br /&gt;2000 Failed to write data to client. (Will only be present in the query logs.) This error is caused by the client closing the connection prematurely.</description><link>http://javatechnospot.blogspot.com/2009/05/fast-esp-error-messages.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-8889931842064931227</guid><pubDate>Wed, 13 May 2009 15:22:00 +0000</pubDate><atom:updated>2009-05-13T08:27:08.288-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Server</category><category domain="http://www.blogger.com/atom/ns#">Web Server</category><category domain="http://www.blogger.com/atom/ns#">Weblogic</category><category domain="http://www.blogger.com/atom/ns#">Weblogic 10.3g</category><title>Weblogic 10 Server Compatibility</title><description>&lt;tr&gt;&lt;br /&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;br /&gt;&lt;!-- InstanceBeginEditable name=&quot;intro&quot; --&gt;&lt;br /&gt; &lt;p&gt;&lt;span class=&quot;text&quot;&gt;BEA attempts to support binary and source-level compatibility between the current version of WebLogic Server and all versions as far back as 8.1 in the areas of persistent data, generated classes, and API compatibility. In some cases, it is impossible to avoid incompatibilities. Where incompatibilities arise, they are fully documented in the &lt;a href=&quot;../../../common/docs100/upgrade/index.html&quot;&gt;Upgrading WebLogic Application Environments&lt;/a&gt; guide.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt; &lt;!-- InstanceEndEditable --&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;      &lt;td style=&quot;vertical-align: top; width: 300px;&quot;&gt;&lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;Java EE 5 Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;&lt;span class=&quot;text&quot;&gt;BEA WebLogic Server 10.0  is JEE5 compatible. This compatibility allows a Java EE 5 compliant application to be developed on one operating system platform, and deployed for production on another, without requiring Java EE 5 application code changes. BEA ensures this compatibility of Java EE 5 application portability within a WebLogic Server release level.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;        &lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;Generated Classes Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;p class=&quot;text&quot;&gt;With one exception, upgrading to WebLogic Server 10.0 does not require you to recompile applications in order to create new generated classes.&lt;/p&gt;&lt;br /&gt;        &lt;p class=&quot;text&quot;&gt;The 10.0 version of the EJBGen utility recognizes only JDK 5.0 metadata annotation-style EJBGen tags and not the old Javadoc-style tags. This means that source files that use the Javadoc-style tags must be upgraded to use the equivalent annotation, and then recompiled using the 10.0 version of EJBGen.&lt;/p&gt;&lt;br /&gt;        &lt;h3 class=&quot;text&quot;&gt;&lt;span class=&quot;texthead&quot;&gt;Compatibility Within a Domain&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;ul&gt;&lt;br /&gt;          &lt;li&gt;All WebLogic Server instances within the same Administrative domain must be at the same major and minor version. You cannot mix server versions within a domain.&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Servers within an Administrative domain can be at different Service Pack levels as long as the Administration Server is at the same Service Pack. Level or higher than its Managed Servers.&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;All servers within a cluster must be at the same Service Pack level.&lt;/li&gt;&lt;br /&gt;          &lt;/ul&gt;&lt;br /&gt;        &lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;JMX Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;         &lt;p&gt;&lt;span class=&quot;text&quot;&gt;See &lt;a href=&quot;../../../common/docs100/upgrade/compat.html#wp1111114&quot;&gt;JMX 1.2 Implementation&lt;/a&gt; in &lt;i&gt;Upgrading WebLogic Application Environments&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td style=&quot;vertical-align: top; width: 300px;&quot;&gt;&lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;Persistent Data Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;&lt;span class=&quot;text&quot;&gt;Upgrading to WebLogic Server 10.0 does not require you to make any changes to WebLogic Server  8.1, 9.0, 9.1, or 9.2 persistent data storage, including configuration files, deployment descriptors, transaction logs, and JMS messages.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;        &lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;API Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;&lt;span class=&quot;text&quot;&gt;WebLogic Server  8.1, 9.0, 9.1, and 9.2 applications deployed on WebLogic Server 9.2 will function without modification. Exceptions to this rule include cases where API behavior was changed in order to conform to a specification or to fix incorrect behavior. In certain circumstances, a correction may cause your application to behave differently.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;        &lt;h3&gt;&lt;span class=&quot;texthead&quot;&gt;Protocol Compatibility&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;        &lt;p class=&quot;text&quot;&gt;Interoperability between WebLogic Server 10.0 and WebLogic Server  8.1, 9.0, 9.1 and 9.2 is supported in the following scenarios:&lt;/p&gt;&lt;br /&gt;        &lt;ul class=&quot;bullet_arrow&quot;&gt;&lt;br /&gt;          &lt;li&gt;A WebLogic Server  8.1, 9.0, 9.1 or 9.2 client can invoke RMI-based applications hosted on a WebLogic Server 10.0 server using IIOP, T3, T3S, HTTP, and HTTPS. JMS applications can be invoked using T3, T3S, HTTP, and HTTPS.&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;A WebLogic Server 10.0 client can invoke RMI-based applications hosted on a WebLogic Server  8.1, 9.0, 9.1 or 9.2 server using IIOP, T3, T3S, HTTP, and HTTPS. JMS applications can be invoked using T3, T3S, HTTP, and HTTPS.&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;A WebLogic Server 10.0 Web server plug-in can proxy to the latest service pack release of a  8.1, 9.0, 9.1 or 9.2 server.&lt;/li&gt;&lt;br /&gt;          &lt;/ul&gt;&lt;br /&gt;        &lt;p class=&quot;text&quot;&gt;Interoperability between WebLogic Server 7.0 and WebLogic Server 10.0 is  supported in the following scenarios. You will need the WebLogic Server 7.0  patch that is associated with CR295275 for this interoperability to work.  This patch is applicable to WLS 7.0 SP6 and WLS 7.0 SP7. You can request this  patch by contacting BEA support and requesting the patch associated with  CR295275. Additionally, for RMI/IIOP interoperability support, start the WLS 7.0 client   using the following flag: &lt;code&gt;-Dweblogic.system.iiop.enableClient=true&lt;/code&gt;&lt;br /&gt;        &lt;ul class=&quot;bullet_arrow&quot;&gt;&lt;br /&gt;  &lt;li&gt;A WebLogic Server 7.0 client can invoke RMI-based applications hosted on a  WebLogic Server 10.0 server using T3, T3S, HTTP, and HTTPS. JMS applications  can be invoked using T3, T3S, HTTP, and HTTPS.  &lt;/li&gt;&lt;br /&gt;        &lt;li&gt; A WebLogic Server 10.0 client can invoke RMI-based applications hosted on a  WebLogic Server 7.0 server using T3, T3S, HTTP, and HTTPS. JMS applications  can be invoked using T3, T3S, HTTP, and HTTPS.  &lt;/li&gt;&lt;br /&gt;        &lt;li&gt; A WebLogic Server 10.0 Web server plug-in can proxy to the latest service  pack release of a 7.0 server. &lt;/li&gt;&lt;br /&gt;   &lt;/ul&gt;&lt;br /&gt;  &lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;</description><link>http://javatechnospot.blogspot.com/2009/05/weblogic-10-server-compatibility.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-6261699854158837913</guid><pubDate>Wed, 13 May 2009 15:06:00 +0000</pubDate><atom:updated>2009-05-13T08:17:05.731-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Framework</category><category domain="http://www.blogger.com/atom/ns#">J2EE</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Java PureFaces</category><category domain="http://www.blogger.com/atom/ns#">JSF</category><title>Java PureFaces : New JSF Framework</title><description>&lt;p&gt;Java PureFaces is a layer on top of JSF that simplifies  implementation.  The article here is the aggregate of the blog posts  that I have written on our &lt;A HREF=&quot;http://www.b6systems.com/blog&quot; TARGET=&quot;_blank&quot;&gt;blog&lt;/A&gt;.  The framework is not yet made public, and we are looking to see if  there is interest in us releasing it as an open-source project. We  are not a JSF framework company; we develop web applications. This  framework is a result of our experience with the tools with which we  were already working. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;We are very interested in getting input from the community on it,  so please let us know what you think.&lt;/p&gt;&lt;br /&gt;&lt;H2&gt;Introduction&lt;/H2&gt;&lt;br /&gt;&lt;p&gt;Developing the Web Tier is a big part of designing and developing  a web application. Many frameworks exist that attempt to improve this  part of the development. These frameworks simplify the process,  providing ready tools and improving code reuse.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Most frameworks are developed around a web designer/Java developer  job split, providing a simple API to the web designers, and an  XML/HTML file and a Java API for the developers. Examples are &lt;A HREF=&quot;http://struts.apache.org/&quot; TARGET=&quot;_blank&quot;&gt;Struts &lt;/A&gt;and &lt;A HREF=&quot;http://java.sun.com/javaee/javaserverfaces/&quot; TARGET=&quot;_blank&quot;&gt;JSF&lt;/A&gt;.  Other frameworks are aimed only at Java developers and provide a  Swing-like API, allowing the developers to develop a web application  with only the Java language. The developer code can be very object  oriented and does not need to be concerned about interacting with  HTTP/ JSP/Tags etc. An example of this type of framework is &lt;A HREF=&quot;http://code.google.com/webtoolkit/&quot; TARGET=&quot;_blank&quot;&gt;GWT&lt;/A&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Building off of both of these, we have created a new framework for  Java developers that we call &lt;STRONG&gt;Java &lt;/STRONG&gt;&lt;STRONG&gt;PureFaces&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt; This framework is built on the very popular JSF framework, but allows  the web tier to be designed &lt;STRONG&gt;completely  in Java&lt;/STRONG&gt; -- no massive library of JSP/JSF pages or  configuration files necessary.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Java PureFaces&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A little over a year ago, we started looking for a way to create  HTML pages without writing HTML code. It did not make sense that a  developer that knows a powerful object-oriented language like Java  needs to create and maintain static HTML/JSP/XML pages just because  of the HTTP protocol. However, JSF is too raw to work with directly  (JSF tags, value bindings, etc.). &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Java PureFaces provides a pure Java framework for building the web  tier. Java developers can use good object oriented solutions,  increase code reuse, speed up development, and simplify code  maintenance without worrying about many of the web/http concepts like  HTTP, JSP, XML, Tags, HTTP sessions, etc. The API is very simple and  easy to learn and use.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Like JSF, Java PureFaces binds object attributes into the GUI, and  binds commands and link buttons to object methods. Also, JSF  components are used to render the HTML. Unlike JSF, Pure JavaFaces  attributes and commands can be bound to any POJO object, not only to  a backing bean. An advantage of binding to any POJO object &lt;em&gt;through  Java&lt;/em&gt; is that the bindings themselves can be tested with JUnit.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Because the framework uses JSF, it is very extensible. In order to  create a new component, we can extend the UIComponent JSF class.  Also, only a single JSP page and backing bean are necessary as the  container for the web application (this simplicity does mean that,  like some other frameworks, you cannot refresh the page or use the  browser back button).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Compare it to a standard JSF application&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To quickly illustrate the simplicity of Java PureFaces, we  implemented the &lt;A HREF=&quot;http://www.exadel.com/tutorial/jsf/jsftutorial-guessnumber.html&quot; TARGET=&quot;_blank&quot;&gt;JSF  guessing number game&lt;/A&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Built in the Java PureFaces framework, it makes sense to create  two classes: One to represent the logic and one to represent the  view. These classes are:&lt;/p&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;  &lt;LI&gt;GuessNumber -- will know how to   create a random number to guess and will check it the user number   matches the guessing number.&lt;/LI&gt; &lt;br /&gt;  &lt;LI&gt;GuessNumberView -- is responsible to create the GUI and   response to the button clicks.&lt;/LI&gt;&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;p&gt;Here is the code from the GuessNumberView object:&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;public class GuessNumberView extends EntryPage implements Serializable {&lt;br /&gt;        &lt;br /&gt;        private static final long serialVersionUID = -7093024622882061259L;&lt;br /&gt;        &lt;br /&gt;        private static final int minNumber = 0;&lt;br /&gt;        private static final int maxNumber = 10;&lt;br /&gt;        transient private PurePanelGroup component; //not Serializable in the session &lt;br /&gt;        private GuessNumber guessNumber;&lt;br /&gt;        &lt;br /&gt;        public GuessNumberView() {&lt;br /&gt;                guessNumber = new GuessNumber(minNumber,maxNumber);&lt;br /&gt;        }&lt;br /&gt;        /**&lt;br /&gt;         * pressing on the submit button will create the the response component&lt;br /&gt;         */&lt;br /&gt;        public void guessAction() {&lt;br /&gt;                createResponseComponent();&lt;br /&gt;        }&lt;br /&gt;        /**&lt;br /&gt;         * pressing on the back button will create the the guess component&lt;br /&gt;         */&lt;br /&gt;        public void backAction() {&lt;br /&gt;                createGuessComponent();&lt;br /&gt;        }&lt;br /&gt;        /**&lt;br /&gt;         * pressing on the start button will create the the guess component and reset the number&lt;br /&gt;         */&lt;br /&gt;        public void startAction() {&lt;br /&gt;                createGuessComponent();&lt;br /&gt;                guessNumber.start();&lt;br /&gt;        }&lt;br /&gt;        private void createGuessComponent() {&lt;br /&gt;                component = new PurePanelGroup();&lt;br /&gt;                component.setFormId(&quot;guessForm&quot;);&lt;br /&gt;                component.add(new PureOutput(&quot;Hi. I&#39;m thinking of a number from &quot; + minNumber + &quot; to &quot; &lt;br /&gt;      + maxNumber + &quot;  Can you guess it?&quot;).setStyleClass(&quot;headerText&quot;));&lt;br /&gt;                component.add(new PureInput(guessNumber, &quot;userNumber&quot;).addValidator(new LongRangeValidator(maxNumber, &lt;br /&gt;      minNumber)).setIsRequired(true));&lt;br /&gt;                component.add(new PureErrorMessages(true, false, &quot;list&quot;).setStyleClass(&quot;errorMessage&quot;));&lt;br /&gt;                component.add(new PureButton(&quot;Submit&quot;, this, &quot;guessAction&quot;).setStyleClass(&quot;button&quot;));&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        private void createResponseComponent() {&lt;br /&gt;                component = new PurePanelGroup();&lt;br /&gt;                component.setFormId(&quot;guessForm&quot;);&lt;br /&gt;                if (guessNumber.getIsGuessCurrect()) {&lt;br /&gt;                        component.add(new PureOutput(&quot;Yay! You got it!&quot;).setStyleClass(&quot;headerText&quot;));&lt;br /&gt;                        component.add(new PureButton(&quot;Start&quot;, this, &quot;startAction&quot;).setStyleClass(&quot;button&quot;));&lt;br /&gt;                } else {&lt;br /&gt;                        component.add(new PureOutput(&quot;Sorry, &quot; + guessNumber.getUserNumber() + &quot; &lt;br /&gt;        is incorrect.&quot;).setStyleClass(&quot;headerText&quot;));&lt;br /&gt;                        component.add(new PureButton(&quot;Back&quot;, this, &quot;backAction&quot;).setStyleClass(&quot;button&quot;));&lt;br /&gt;                }       &lt;br /&gt;        }&lt;br /&gt;        public UIComponent getRootUIComponent() {&lt;br /&gt;                if (component == null) {// only for the first time&lt;br /&gt;                        createGuessComponent();&lt;br /&gt;                }&lt;br /&gt;                return component.createUIComponent();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        public String getBackingBeanName() {&lt;br /&gt;                return &quot;root&quot;;&lt;br /&gt;        }&lt;br /&gt;}&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; Notice that the code to create the simple GUI, as well as the code  that handles the button clicks, is cleanly packaged together. Compare  this to the &lt;A HREF=&quot;http://www.exadel.com/tutorial/jsf/jsftutorial-guessnumber.html&quot; TARGET=&quot;_blank&quot;&gt;JSF  Version&lt;/A&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(You can download this demo here: &lt;A HREF=&quot;http://www.b6systems.com/download/guessNumber.rar&quot; TARGET=&quot;_blank&quot;&gt;(RAR)&lt;/A&gt;, &lt;A HREF=&quot;http://www.b6systems.com/download/guessNumber.zip&quot; TARGET=&quot;_blank&quot;&gt;(ZIP)&lt;/A&gt;, &lt;A HREF=&quot;http://www.b6systems.com/download/guessNumber.tgz&quot; TARGET=&quot;_blank&quot;&gt;(TGZ)&lt;/A&gt;.  There are also full demo applications on the &lt;A HREF=&quot;http://www.b6systems.com/solutions.html&quot; TARGET=&quot;_blank&quot;&gt;Solutions&lt;/A&gt; page of our website. Both of these were created using Java PureFaces)&lt;/p&gt;&lt;br /&gt;&lt;H2&gt;Clean and Simple Output&lt;/H2&gt;&lt;br /&gt;&lt;p&gt;So what does the HTML from Java PureFaces look like? Before  discussing exactly how the framework works, I want to show how clean  it is to work with; I want to show exactly what mark-up is created. I  will use a couple of examples from the previous Guess-A-Number demo  to show some examples. I&#39;ll start by using a single JSP page for  the project:&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;&gt;&lt;br /&gt;&amp;lt;%@ taglib uri=&quot;http://java.sun.com/jsf/html&quot; prefix=&quot;h&quot; %&gt;&lt;br /&gt;&amp;lt;%@ taglib uri=&quot;http://java.sun.com/jsf/core&quot; prefix=&quot;f&quot;%&gt;&lt;br /&gt;&amp;lt;%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot;%&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;    &amp;lt;head&gt;&lt;br /&gt;        &amp;lt;title&gt;Java PureFaces guessing number demo&amp;lt;/title&gt;&lt;br /&gt;        &amp;lt;link rel=&quot;stylesheet&quot; href=&#39;&amp;lt;c:url value=&quot;/theme/demoStyle.css&quot; /&gt;&#39; type=&quot;text/css&quot;&gt;&lt;br /&gt;    &amp;lt;/head&gt;&lt;br /&gt;    &amp;lt;body&gt;&lt;br /&gt;        &amp;lt;f:view&gt;&lt;br /&gt;                &amp;lt;h:panelGroup binding=&quot;#{root.render}&quot;&gt;&amp;lt;/h:panelGroup&gt;&lt;br /&gt;        &amp;lt;/f:view&gt;&lt;br /&gt;    &amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; This is all that is needed in the simplest application JSP page. The  #{root.render} binding is all that is needed to bind the  page to the application. Here is the code of the createGuessComponent  from the demo:&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;private void createGuessComponent() {&lt;br /&gt;    component = new PurePanelGroup();&lt;br /&gt;    component.setFormId(&quot;guessForm&quot;);&lt;br /&gt;    component.add(new PureOutput(&quot;Hi. I&#39;m thinking of a number from &quot; + minNumber + &quot; to &quot; + &lt;br /&gt;   maxNumber + &quot;  Can you guess it?&quot;).setStyleClass(&quot;headerText&quot;));&lt;br /&gt;    component.add(new PureInput(guessNumber, &quot;userNumber&quot;).addValidator(new LongRangeValidator(maxNumber, &lt;br /&gt;   minNumber)).setIsRequired(true));&lt;br /&gt;    component.add(new PureErrorMessages(true, false, &quot;list&quot;).setStyleClass(&quot;errorMessage&quot;));&lt;br /&gt;    component.add(new PureButton(&quot;Submit&quot;, this, &quot;guessAction&quot;).setStyleClass(&quot;button&quot;));&lt;br /&gt;}&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; which creates this simple view:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpD6Ukkr_5MYdMevyBBpGYP0_jTugwOCUteAXNQHYlfn_lSwF7BsSf6mH1TzFDFkEKHvZEmcORYXsEV0iHBzgWFVsqX72e1arZ1NgJ6tr8jmbyr9AFrKLaTDmg5jpmy4YBN8e_3hez434/s1600-h/ScreenShot.gif&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 64px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpD6Ukkr_5MYdMevyBBpGYP0_jTugwOCUteAXNQHYlfn_lSwF7BsSf6mH1TzFDFkEKHvZEmcORYXsEV0iHBzgWFVsqX72e1arZ1NgJ6tr8jmbyr9AFrKLaTDmg5jpmy4YBN8e_3hez434/s320/ScreenShot.gif&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5335327451499485202&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;and this clean HTML (very CSS-friendly):&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot;&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;    &amp;lt;head&gt;&lt;br /&gt;        &amp;lt;title&gt;Java PureFaces guessing number demo&amp;lt;/title&gt;&lt;br /&gt;        &amp;lt;link rel=&quot;stylesheet&quot; href=&#39;/pureFaces-guessNumber/theme/demoStyle.css&#39; type=&quot;text/css&quot;&gt;&lt;br /&gt;    &amp;lt;/head&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    &amp;lt;body&gt;&lt;br /&gt;    &amp;lt;form id=&quot;guessForm&quot; name=&quot;guessForm&quot; method=&quot;post&quot; action=&quot;/pureFaces-guessNumber/demo.jsf&quot; &lt;br /&gt;    enctype=&quot;application/x-www-form-urlencoded&quot;&gt;&lt;br /&gt;         &amp;lt;span id=&quot;guessForm:pureFaces_root1&quot; class=&quot;headerText&quot;&gt;Hi. I&#39;m thinking of a number from &lt;br /&gt;     0 to 10  Can you guess it?&amp;lt;/span&gt;&lt;br /&gt;         &lt;br /&gt;&lt;br /&gt;        &amp;lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;__pureFacesErrorGrid&quot;&gt;&lt;br /&gt;            &amp;lt;tbody&gt;&lt;br /&gt;            &amp;lt;tr&gt;&lt;br /&gt;                &amp;lt;td&gt;&amp;lt;input id=&quot;guessForm:pureFaces_root2&quot; name=&quot;guessForm:pureFaces_root2&quot; &lt;br /&gt;      type=&quot;text&quot; value=&quot;0&quot; /&gt;&amp;lt;/td&gt;&lt;br /&gt;                &amp;lt;td&gt;&amp;lt;/td&gt;&lt;br /&gt;            &amp;lt;/tr&gt;&lt;br /&gt;            &amp;lt;/tbody&gt;&lt;br /&gt;       &amp;lt;/table&gt;&lt;br /&gt;       &lt;br /&gt;       &amp;lt;input id=&quot;guessForm:pureFaces_root3&quot; name=&quot;guessForm:pureFaces_root3&quot; type=&quot;submit&quot; value=&quot;Submit&quot; &lt;br /&gt;   onclick=&quot;if(typeof window.clearFormHiddenParams_guessForm!=&#39;undefined&#39;)&lt;br /&gt;     {clearFormHiddenParams_guessForm(&#39;guessForm&#39;);}if(typeof window.getScrolling!=&#39;undefined&#39;)&lt;br /&gt;     {oamSetHiddenInput(&#39;guessForm&#39;,&#39;autoScroll&#39;,getScrolling());}&quot; class=&quot;button&quot; /&gt;&lt;br /&gt;       &amp;lt;input type=&quot;hidden&quot; name=&quot;guessForm_SUBMIT&quot; value=&quot;1&quot; /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; There is a table in there that is configured to allow for an error  message next to the input box through JSF messaging. If the input  field is not required, this can be removed for even simpler HTML.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This example shows that when comparing this mark-up to the Java  code that created it, you can see it is almost line for line (there  is no error message, so it is not rendered). You can use table-based  layouts (using PurePanelGrid instead of PurePanelGroup), or work with  more current semantic layouts. Either way, it is very easy to create  a view. It is also very easy to manipulate the attributes of the HTML  elements, like the style classes in the HTML shown here (class=).  The framework model can support any element attribute, such as DOM  &quot;Level 0 Events (onclick, onkeypress, etc.) and inline styles  (style=), to name a few of the more frequently used attributes,  by just chaining them onto the component you are adding.&lt;/p&gt;&lt;br /&gt;&lt;H2&gt;The Way It Works&lt;/H2&gt;&lt;br /&gt;&lt;p&gt;Now that we have taken a look at the simplicity of the code and  the HTML output, I&#39;ll describe how we detached the need for a  backing bean so that any object or method can be bound to the page.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For a quick review: Typically, JSP pages are coupled with a  backing bean, which contains any Java code used in the page. The  backing bean must be defined in the faces-config.xml file, and is the  page&#39;s interface to the rest of the system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My point here is that: &lt;/p&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;  &lt;LI&gt;It is tedious to define and   maintain the mapping of beans in the faces-config file, and &lt;/LI&gt;&lt;br /&gt;  &lt;LI&gt;The JSP page is restricted to accessing methods only in the   backing bean. &lt;/LI&gt;&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;p&gt;The designer is forced to maintain a JSP file, an XML, and a java  class -&lt;br /&gt;  for each page in the system (not to mention the navigation mappings, etc).&lt;br /&gt;  Java PureFaces removes this complexity and inflexibility. A backing bean is&lt;br /&gt;  required, but only one that is used to tie the whole system to a single JSP&lt;br /&gt;  page... and this bean is never really used after this. At least, not for binding&lt;br /&gt;  to the page. The objects bound to the page are part of the application. The&lt;br /&gt;  magic behind Java PureFaces is simple, yet extremely powerful. There is rarely&lt;br /&gt;  a need to touch the faces-config file or the JSP page, yet you can bind to&lt;br /&gt;  any method or field in the system. Here is how it works.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are two main things that make Java Pure Faces work. The key  to it is that in JSF, listeners are called before the binding.&lt;/p&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;  &lt;LI&gt;&lt;STRONG&gt;Command Buttons / Links&lt;/STRONG&gt;:   When you create a command component through the API, Java PureFaces   binds that component to the single backing bean using a dummy method   that simply returns &quot;success.&quot; The work for these components is   performed using ActionListeners. First the binding is tested (for   testing in JUnit), and then an ActionListener is created from the   parameters entered through the API. &lt;/LI&gt;&lt;br /&gt;  &lt;LI&gt;&lt;STRONG&gt;Inputs&lt;/STRONG&gt;: All input types are set up with a   default Value Change Listener directed at the desired field entered   through the API. Once again, the bindings are tested first using   reflection and will throw exceptions for JUnit testing. &lt;/LI&gt;&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;p&gt;That&#39;s all there is to it. The listeners are set up to  manipulate the target of the component. It is not how JSF was meant  to be used, but isn&#39;t that where some of the best uses come from?  This work is all done behind the scenes, and completely removes the  restrictions of the standard JSP/XML/backing bean combination.  Absolutely any property can be manipulated, and any method can be  triggered. This design enables the system to be completely  object-oriented. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;As an example to further clarify how useful Java Pure Faces can  be, consider a developer who is using Hibernate and would like to  bind an entity directly into a view. Using JSF, all backing beans  registered in the faces-config file are instantiated at runtime by  JSF. Hibernate also instantiates the entities for you. So in this  case, the developer cannot do it; an entity cannot be a backing bean.  There need to be extra steps to move data from the page to the  entity. In Java PureFaces, this is not an issue. The JSP page binds  to any POJO in the system through either a Value Change Listener or  Action Listener. Hibernate instantiates the entity and anything in  that entity can be bound directly into a view.&lt;/p&gt;&lt;br /&gt;&lt;H2&gt;Object-Oriented API&lt;/H2&gt;&lt;br /&gt;&lt;p&gt;For the final topic in this article, I want to talk about how Java  PureFaces promotes object-oriented programming. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The &lt;/strong&gt;&lt;strong&gt;PureComponent&lt;/strong&gt;&lt;strong&gt; Interface&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All Java PureFaces components implement a single interface,  PureComponent, that enable them to be used in the  framework. This means that, unlike some other frameworks, you do &lt;EM&gt;not&lt;/EM&gt; have to extend a framework-specific object in order to have the  functionality of the framwork. In a language that does not allow  double-inheritence, being forced to extend another object creates  inflexibility. Instead, it allows &lt;EM&gt;any&lt;/EM&gt; object in the  application to contain its own display code. It also allows for the  creation of custom components that can be easily used throughout the  system. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Component Objects&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Component creation is very easy with Java PureFaces. All  containers, such as PurePanelGrid and PurePanelGroup, take objects  that implement PureComponent, and all components are PureComponents.  To create a new custom component, you simply implement the interface  and then build whatever component you need.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In this example, a simple component - that approximates an HTML  label element - is created. By implementing the  PureComponent interface, the object is required to  implement the createUIComponent method. Inside this  method, the component is created from other building blocks. The rest  of the object can contain any getters and setters necessary, along  with any helper methods, or really just anything at all. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;This particular example makes use of another Java PureFaces  convenience object called PureEditableValue. This  component is a very simple object that holds a reference to a  property, and contains the necessary getter and setter needed to  access that property. Through the use of generics, that property can  be of any type.&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;public class LabelAndInputComponent&amp;LT;E&gt; implements PureComponent {&lt;br /&gt;&lt;br /&gt;private String label;&lt;br /&gt;        private PureEditableValue&amp;LT;E&gt; editableValue;&lt;br /&gt;        public LabelAndInputComponent(String label, E value) {&lt;br /&gt;                this.label = label;&lt;br /&gt;                this.editableValue = new PureEditableValue&amp;LT;E&gt;(value);&lt;br /&gt;        }&lt;br /&gt;        public PureComponent createUIComponent() {&lt;br /&gt;                PurePanelGrid panelGroup = new PurePanelGrid(2);&lt;br /&gt;                panelGroup.setStyleClass(&quot;panelStyleClass&quot;);&lt;br /&gt;                panelGroup.add(new PureOutput(label).setStyleClass(&quot;lableStyleClass&quot;));&lt;br /&gt;                panelGroup.add(new PureInput(editableValue).setStyleClass(&quot;inputStyleClass&quot;));&lt;br /&gt;                return panelGroup;&lt;br /&gt;        }&lt;br /&gt;        public E getValue(){&lt;br /&gt;                return editableValue.getValue();&lt;br /&gt;        }&lt;br /&gt;}&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; This component can now be used anywhere, as shown in the example  below. The component is a completely object-oriented solution that  can be tested through JUnit. It can extend anything it wants, and of  course can implement as many interfaces as necessary. There is  absolutely no restriction on making &lt;EM&gt;any&lt;/EM&gt; object a Java  PureFaces component.&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;//.. Some other view object &lt;br /&gt;                private LabelAndInputComponent&amp;LT;String&gt; label = new LabelAndInputComponent&amp;LT;String&gt;(&quot;A Label&quot;, &lt;br /&gt;      &quot;default text&quot;); // example&lt;br /&gt;                public PureComponent createUIComponent() {&lt;br /&gt;                        // Create a DIV element that contains a label component&lt;br /&gt;                        PurePanelGroup panelGroup = new PurePanelGroup();&lt;br /&gt;                                panelGroup.setDivStyleClass(&quot;divStyleClass&quot;);&lt;br /&gt;                                panelGroup.add(label);&lt;br /&gt;                        return panelGroup;&lt;br /&gt;                }&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; &lt;strong&gt;Easier Maintenance&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The final topic to cover is the ease of maintenance for a Java  PureFaces implementation. For this, I will use the  LabelAndInputComponent implementation that we just  discussed. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Testing Java PureFaces is very easy, and very powerful. Of course,  it is already easy to test the non-Java PureFaces parts of the object  in JUnit the same way we would any other time. The additional  advantage here is that we can test the bindings of the Java PureFaces  components as well.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The way it works is that the framework tests every binding (using  the Reflection API) prior to adding it to the ActionListener or  ValueChangeListener. This functionality is done immediately when  building the component, and an exception is thrown if something does  not check out correctly. Testing the bindings is as simple as:&lt;/p&gt;&lt;br /&gt;&lt;PRE&gt;public void testLabelAndInputComponentImplementation() {&lt;br /&gt;   ThatTestObject obj = new ThatTestObject();&lt;br /&gt;   obj.createUIComponent();&lt;br /&gt;}&lt;/PRE&gt;&lt;br /&gt;&lt;p&gt; This simple test creates the component and tests that all bindings  are valid and able to be resolved.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And finally there is general maintenance. Everything is inside  Java. The views are maintained by editing existing objects and  components with the ease of whatever development environment you use.  There are no JSP files to maintain, there is no XML to update.  Productivity is increased by be able to work on all of the code  without having to switch gears and use a separate environment.  Changes are immediately available when you rebuild the project.&lt;/p&gt;</description><link>http://javatechnospot.blogspot.com/2009/05/java-purefaces-new-jsf-framework.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpD6Ukkr_5MYdMevyBBpGYP0_jTugwOCUteAXNQHYlfn_lSwF7BsSf6mH1TzFDFkEKHvZEmcORYXsEV0iHBzgWFVsqX72e1arZ1NgJ6tr8jmbyr9AFrKLaTDmg5jpmy4YBN8e_3hez434/s72-c/ScreenShot.gif" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4459045299057308782</guid><pubDate>Wed, 13 May 2009 15:04:00 +0000</pubDate><atom:updated>2009-05-13T08:06:39.097-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">Excel</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">Index</category><title>Indexing Issue : excel macro files</title><description>PROBLEM &lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;You found that indexing failed on an excel file with macro with &quot;Password proctected&quot;&lt;br /&gt;error message. While the document is not password protected, we found that certain&lt;br /&gt;parts of the excel document/work sheet are protected and non editable.&lt;br /&gt;&lt;br /&gt;RESOLUTION &lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;Password protected excel files are not supported, as the stellant converter will fail&lt;br /&gt;to process it. In this event, it is normal to receive the error telling you there is&lt;br /&gt;a problem with the documents being password protected or encrypted. In addition,&lt;br /&gt;one will also receive the error if certain parts of the excel document/work sheet are&lt;br /&gt;non editable. The explanation from Stellent on this is that their software cannot&lt;br /&gt;differentiate between various kinds of protections that Microsoft has for Excel&lt;br /&gt;sheets. That is, when a worksheet is being processed, all the converter sees is that&lt;br /&gt;the worksheet has a password protection of some sort. How a worksheet is protected&lt;br /&gt;and what parts of it are protected are not known, because this information is&lt;br /&gt;unavailable to Stellent.</description><link>http://javatechnospot.blogspot.com/2009/05/indexing-issue-excel-macro-files.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-2476863911731195663</guid><pubDate>Wed, 13 May 2009 15:00:00 +0000</pubDate><atom:updated>2009-05-13T08:02:52.005-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Cache</category><category domain="http://www.blogger.com/atom/ns#">Crawler</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><title>Have a site that recently changed IP, but the crawler is still using an old IP</title><description>When the IP is refreshed depends on the Time To Live received from the DNS server.However in crawler versions 6.4.16 and below this behavior was not correct and the dns cache was not updated. The issue is fixed in 6.4.17+, however you can refresh the dns cache the following way:&lt;br /&gt;&lt;br /&gt;Stop the crawler and on the ubermaster and the master nodes,&lt;br /&gt;&lt;br /&gt;Remove (consider taking a backup) the file&lt;br /&gt;&lt;br /&gt;$FASTSEARCH/data/crawler/config/dnscache.hashdb.&lt;br /&gt;&lt;br /&gt;Now start the crawler.&lt;br /&gt;&lt;br /&gt;The DNS cache should now be reset.</description><link>http://javatechnospot.blogspot.com/2009/05/have-site-that-recently-changed-ip-but.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-6673439527079324742</guid><pubDate>Fri, 17 Apr 2009 20:32:00 +0000</pubDate><atom:updated>2009-04-17T13:36:08.105-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST ESP</category><category domain="http://www.blogger.com/atom/ns#">Ranking</category><category domain="http://www.blogger.com/atom/ns#">Relevancy</category><category domain="http://www.blogger.com/atom/ns#">Relevancy Ranking</category><category domain="http://www.blogger.com/atom/ns#">Tuning</category><title>FAST ESP Relevancy Ranking</title><description>&lt;P&gt;Relevancy is the measure of how well a set of documents (results) answers or addresses the intent of a given query. &lt;/P&gt;&lt;br /&gt;&lt;P&gt;When there are many query matches, the search engines must rank the results by relevance score, sorting the results listing so that the pages most likely to be useful will appear first. Varying algorithms are used to define relevancy. Relevancy definition and tuning is one of core differentiators of FAST ESP platform. This blog post is about the relevance framework and related concepts and features in FAST ESP.&amp;nbsp; &lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;FAST&amp;nbsp;ESP Search Relevance Framework&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;FAST ESP applies search relevancy through the following key steps:&lt;/P&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;Data mining – A document processing framework can be used to perform real-time content refinement. This includes embedded relevancy tools and integration points for 3rd party modules. An Entity Extraction framework enables extraction of named entities and key concepts from documents that may be used for result navigation&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Linguistic normalization – Handles grammatical variations and automatic spell corrections&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Query Processing – A query processing framework applies built-in or custom query transformations based on application specific rules&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Ranking based on the &lt;EM&gt;&lt;STRONG&gt;FAST InPerspective&lt;/STRONG&gt;&lt;/EM&gt; model provides a multi-faceted measurement of the quality of the match between the query and a candidate result document&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Query Context Analysis indicates the ability to present the information from the query results in context of the query. FAST ESP supports dynamic document summaries that display the segments of the matching document that provide the most relevant match with the query&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Data Driven Navigation provides dynamic drill-down into the query result or related areas.&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;&lt;P&gt;The relevancy of a document with respect to a query is represented by a ranking value. Following section lists the different elements used to calculate the rank value.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Elements of Rank Value&lt;/STRONG&gt;&lt;br /&gt;&lt;TABLE style=&quot;BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid #7BA0CD 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1056; mso-padding-alt: 0in 5.4pt 0in 5.4pt&quot; class=MediumShading1-Accent11 border=1 cellSpacing=0 cellPadding=0 width=&quot;100%&quot; class=&quot;MediumShading1-Accent11&quot;&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 25.9pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; HEIGHT: 25.9pt; BORDER-TOP: #7ba0cd 1pt solid; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;COLOR: white; mso-themecolor: background1; mso-bidi-font-weight: bold&quot;&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Element &lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; HEIGHT: 25.9pt; BORDER-TOP: #7ba0cd 1pt solid; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;COLOR: white; mso-themecolor: background1; mso-bidi-font-weight: bold&quot;&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 18.35pt; mso-yfti-irow: 0&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 18.35pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Freshness &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 18.35pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Age of a document compared to the time when the query is issued &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 17.55pt; mso-yfti-irow: 1&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; HEIGHT: 17.55pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Authority &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; HEIGHT: 17.55pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Importance of a document determined by the links to it from other documents &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 17.55pt; mso-yfti-irow: 2&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 17.55pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Quality &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 17.55pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Assigned importance of a document, independent of the query &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 0.45in; mso-yfti-irow: 3&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; HEIGHT: 0.45in; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Geo &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; HEIGHT: 0.45in; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Importance of geographical distance between a document’s associated latitude/longitude and a target location specified in a query &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 18.45pt; mso-yfti-irow: 4&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 18.45pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Context &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 18.45pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Importance of matching a query in a given document field &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 0.45in; mso-yfti-irow: 5&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; HEIGHT: 0.45in; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Proximity &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; HEIGHT: 0.45in; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;For multi-term queries: the shorter the distance between query terms in a document, the higher the document’s rank value &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 24.75pt; mso-yfti-irow: 6&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 24.75pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Position &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 24.75pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;The earlier a query term occurs in a field, the higher the document’s rank value &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 23.4pt; mso-yfti-irow: 7&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; HEIGHT: 23.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Frequency &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; HEIGHT: 23.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;The more frequent a query term occurs in a document, the higher the document’s rank value &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 30.6pt; mso-yfti-irow: 8&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 30.6pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Completeness &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; BACKGROUND: #d3dfee; HEIGHT: 30.6pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;The greater the number of query terms present in the same field of a matching document, the higher the document’s rank value &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR style=&quot;HEIGHT: 3.5pt; mso-yfti-irow: 9; mso-yfti-lastrow: yes&quot;&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #7ba0cd 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 15.22%; PADDING-RIGHT: 5.4pt; HEIGHT: 3.5pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0in; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191&quot; vAlign=top width=&quot;15%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;Number &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;br /&gt;&lt;TD style=&quot;BORDER-BOTTOM: #7ba0cd 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 84.78%; PADDING-RIGHT: 5.4pt; HEIGHT: 3.5pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #7ba0cd 1pt solid; PADDING-TOP: 0in; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7BA0CD 1.0pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191&quot; vAlign=top width=&quot;84%&quot;&gt;&lt;br /&gt;&lt;P style=&quot;LINE-HEIGHT: 115%; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128&quot; class=MsoNormal&gt;&lt;FONT face=arial,helvetica,sans-serif&gt;For multi-term queries; the more query terms matched in a document, the higher the document’s rank value &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Relevant Sorting of Query Results&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;FAST ESP provides three main methods for sorting the results of a query:&lt;/P&gt;&lt;br /&gt;&lt;OL&gt;&lt;br /&gt;&lt;LI&gt;Sorting by rank (relevancy score) - FAST ESP computes a rank value based on a set of parameters as described below. These parameters can be tuned in order to provide the best possible perceived relevancy for the end-user. It is possible to define multiple rank profiles that can be selected on a per query basis&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Sorting by field values - You may also sort query results by value of any searchable field, such as product name, product code, price or date. FAST ESP supports numeric and full-text sorting, single and multi-level sorting, ascending and descending sorting direction and national sorting rules&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Sorting by geographic location - The Geo Search feature provides capabilities for sorting and filtering query results based on geographic location&lt;/LI&gt;&lt;/OL&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Rank Profile&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;A Rank Profile concept enables full control of the relative weight of each rank component for a given query. For example, how important an article’s title is relative to the main text or how important is proximity versus freshness. This enables individual relevance tuning of different query applications using a FAST ESP installation.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;In FAST ESP, the Rank Profile is a configuration element within the Index Profile and defines relative weight for the different components of the dynamic rank. Multiple Rank Profiles can be specified in the Index Profile.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Tuning the Ranking and Sorting of Query Results&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;The ranking and sorting of query results can be tuned in three main ways:&lt;/P&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;Multiple Rank Profiles can be specified in the Index Profile. A Rank Profile defines relative weight for the different components of the dynamic rank&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Sorting attributes can be specified for individual fields of the documents&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Result sorting can be controlled on a per query basis. By default the result is sorted by rank as defined in the default Rank Profile. Query parameters enable you to specify an alternative rank profile for the query, or a set of fields that the result shall be sorted by&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Relevance support in the Query Language&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;FAST ESP includes a highly expressive query language that also includes advanced proximity operators:&lt;/P&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;Different relevance weight may be applied to different terms or phrases in a query&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Explicit proximity (ordered/unordered NEAR) operators enables precise match in semi-structured content without a need for phrase match&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Boundary match operators enables exact match with extracted entities or entire document elements such as a product name&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Wildcard query support&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Dynamic Client Side Ranking&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Dynamic client side ranking can be done by using the XRANK operator which is a part of the FAST Query Language (FQL). The boost value is specified with the parameter boost=n, where n is some signed integer value. Negative boost is supported, but if the result of boosting with a negative value is negative then the result will be set to 0.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Its&amp;nbsp;a concept unique to FAST and I&amp;nbsp;will cover it in detail in another post.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Rank Modification Tools&lt;/STRONG&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;FAST ESP provides tools to modify rank for individual documents. These tools enable you to perform Absolute Query Boost, Relative Query Boost or Relative Document Boost for given documents in the FAST ESP index. An example could be a product database where it may be desired to boost products with highest profit margins, boost products related to campaigns, etc.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Two main tools exist for this purpose:&lt;/P&gt;&lt;br /&gt;&lt;P&gt;1) Search Business Center (SBC) - This is an optional, GUI based tool which enables query-oriented rank tuning. The SBC also includes a powerful query reporting module that may be used to assist in the rank tuning. Using the SBC you can change the ranking for each query using three different methods:&lt;/P&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;Top Ten - to position the document in one of ten reserved places that will be returned at the top of the results list&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Add boost points - to add a value to a document to increase its relevancy relative to the other documents returned in the search results.You can also add negative boost points to a document.&lt;/LI&gt;&lt;br /&gt;&lt;LI&gt;Block from query - to prevent the blocked document from appearing in the search results for the query.&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;&lt;P&gt;2) Rank Tuning Bulk Loader - This is a standard FAST ESP tool that enables you to perform the same rank tuning as the SBC, using an XML file as input. The XML file contains a specification of the rank modifications to be performed&lt;BR&gt;How SharePoint does Relevancy?&lt;/P&gt;</description><link>http://javatechnospot.blogspot.com/2009/04/fast-esp-relevancy-ranking.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-8935827583454308420</guid><pubDate>Fri, 17 Apr 2009 20:26:00 +0000</pubDate><atom:updated>2009-04-17T13:30:17.722-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">J2EE</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Object Persistence</category><category domain="http://www.blogger.com/atom/ns#">Serialization</category><title>Object Persistence</title><description>&lt;p&gt;&lt;font size=&quot;+1&quot;&gt;O&lt;/font&gt;ne of the most critical tasks that applications have to perform is&lt;br /&gt;        to save and restore data. Whether it be a word processing application&lt;br /&gt;        that saves documents to disk, a utility that remembers its configuration&lt;br /&gt;        for next time, or a game that sets aside world domination for the night,&lt;br /&gt;        the ability to store data and later retrieve it is a vital one. Without&lt;br /&gt;        it, software would be little more effective that the typewriter - users&lt;br /&gt;        would have to re-type the data to make further modifications once the&lt;br /&gt;        application exits.&lt;br /&gt;          &lt;table border=&quot;0&quot; width=&quot;434&quot; cellspacing=&quot;5&quot;&gt;&lt;br /&gt;            &lt;tr&gt;&lt;br /&gt;               &lt;td width=&quot;247&quot;&gt;Writing the code for saving data, however, can become boring repetitive&lt;br /&gt;        work. First, the programmer must create a specification document for the&lt;br /&gt;        proposed file structure. Next, the programmer must implement save and&lt;br /&gt;                restore functions that convert object data to &amp;amp; from&lt;br /&gt;                primitive data types, and test it with sample data.&amp;nbsp;&lt;/td&gt;&lt;br /&gt;            &lt;/tr&gt;&lt;br /&gt;          &lt;/table&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p&gt;If the application later requires new data to be stored, the file&lt;br /&gt;        specification must be modified, as well as the save and restore methods. Take it from someone who&#39;s been there -&lt;br /&gt;        creating save &amp;amp; restore functions is not a fun task.&lt;br /&gt;        &lt;br /&gt;        &lt;p&gt;The solution to this is object serialization.&lt;br /&gt;        Object serialization takes an object&#39;s state, and converts it to a&lt;br /&gt;        stream of data for you. With object serialization, it&#39;s an easy task to&lt;br /&gt;        take any object, and make it persistent, without writing custom code to&lt;br /&gt;        save object member variables. The object can be restored at a later&lt;br /&gt;        time, and even a later location. With persistence, we can move an object&lt;br /&gt;        from one computer to another, and have it maintain its state. This very&lt;br /&gt;        cool feature, in Java, also happens to be very easy to use.&lt;h3&gt;Serializing&lt;br /&gt;        objects&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;Java makes it easy to serialize objects. Any object&lt;br /&gt;        whose class implements the &lt;code&gt;java.io.Serializable&lt;/code&gt; interface can be made&lt;br /&gt;        persistent with only a few lines of code. No extra methods need to be&lt;br /&gt;        added to implement the interface, however - the purpose of the interface&lt;br /&gt;        is to identify at run-time which classes can be safely serialized, and&lt;br /&gt;        which cannot. You, as a programmer, need only add the implements keyword&lt;br /&gt;        to your class declaration, to identify your classes as serializable.&lt;br /&gt;        &lt;br /&gt;        &lt;pre&gt;public class UserData implements&lt;br /&gt;       java.io.Serializable&lt;/pre&gt;&lt;br /&gt;       &lt;br /&gt;        &lt;p&gt;Now, once a class is serializable, we can write the object to any&lt;br /&gt;        &lt;code&gt;OutputStream&lt;/code&gt;, such as to disk or a socket connection. To achieve this,&lt;br /&gt;        we must first create an instance of &lt;code&gt;java.io.ObjectOutputStream&lt;/code&gt;, and pass&lt;br /&gt;        the constructor an existing &lt;code&gt;OutputStream&lt;/code&gt; instance.&lt;br /&gt;        &lt;br /&gt;        &lt;pre&gt;// Write to disk with FileOutputStream&lt;br /&gt;FileOutputStream f_out = new &lt;br /&gt; FileOutputStream(&amp;quot;myobject.data&amp;quot;);&lt;br /&gt;&lt;br /&gt;// Write object with ObjectOutputStream&lt;br /&gt;ObjectOutputStream obj_out = new&lt;br /&gt; ObjectOutputStream (f_out);&lt;br /&gt;&lt;br /&gt;// Write object out to disk&lt;br /&gt;obj_out.writeObject ( myObject );&lt;/pre&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p&gt;Note that any Java object that implements the serializable interface&lt;br /&gt;        can be written to an output stream this way - including those that are&lt;br /&gt;        part of the Java API. Furthermore, any objects that are referenced by a serialized&lt;br /&gt;        object will also be stored. This means that arrays, vectors, lists, and&lt;br /&gt;        collections of objects can be saved in the same fashion - without the&lt;br /&gt;        need to manually save each one. This can lead to significant time and&lt;br /&gt;        code savings.&lt;br /&gt;        &lt;br /&gt;        &lt;h3&gt;Restoring objects from a serialized state&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;Reading objects back is almost as easy. The one catch is that at&lt;br /&gt;        runtime, you can never be completely sure what type of data to expect. A&lt;br /&gt;        data stream containing serialized objects may contain a mixture of&lt;br /&gt;        different object classes, so you need to explicitly cast an object to a&lt;br /&gt;        particular class. If you&#39;ve never cast an object before, the procedure&lt;br /&gt;        is relatively straightforward. First check the object&#39;s class, using the&lt;br /&gt;        &lt;code&gt;instanceof&lt;/code&gt; operator. Then cast to the correct class.&lt;pre&gt;// Read from disk using FileInputStream&lt;br /&gt;FileInputStream f_in = new &lt;br /&gt; FileInputStream(&amp;quot;myobject.data&amp;quot;);&lt;br /&gt;&lt;br /&gt;// Read object using ObjectInputStream&lt;br /&gt;ObjectInputStream obj_in = &lt;br /&gt; new ObjectInputStream (f_in);&lt;br /&gt;&lt;br /&gt;// Read an object&lt;br /&gt;Object obj = obj_in.readObject();&lt;br /&gt;&lt;br /&gt;if (obj instanceof Vector)&lt;br /&gt;{&lt;br /&gt; // Cast object to a Vector&lt;br /&gt; Vector vec = (Vector) obj;&lt;br /&gt;&lt;br /&gt; // Do something with vector....&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;        &lt;h3&gt;Further issues with serialization&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;As you can see, it&#39;s relatively easy to serialize an object. Whenever&lt;br /&gt;        new fields are added to an object, they will be saved automatically,&lt;br /&gt;        without requiring modification to your save and restore code. However,&lt;br /&gt;        there are some cases where this behavior is not desirable. For example,&lt;br /&gt;        a password member variable might not be safe to transmit to third&lt;br /&gt;        parties over a network connection, and might need to be left blank. In&lt;br /&gt;        this case, the &lt;code&gt;transient&lt;/code&gt; keyword can be used.&amp;nbsp;The&lt;br /&gt;        transient field indicates that a particular member variable should not&lt;br /&gt;        be saved. Though not used often, it&#39;s an important keyword to remember.&lt;/p&gt;&lt;br /&gt;        &lt;pre&gt;public class UserSession implements &lt;br /&gt;         java.io.Serializable&lt;br /&gt;{&lt;br /&gt; String username;&lt;br /&gt; transient String password;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;        &lt;h3&gt;Summary&lt;/h3&gt;&lt;br /&gt;        &lt;p&gt;Java&#39;s support for object serialization makes the implementation of persistent&lt;br /&gt;        objects extremely easy. In contrast, the amount of code required to save&lt;br /&gt;        and restore every field of an object is complex and repetitive work. While it is certainly possible to write your own&lt;br /&gt;        serialization mechanism, the simplicity of that provided by Java would&lt;br /&gt;        be hard to beat.&lt;p&gt;Serialization benefits programmers by&lt;br /&gt;        &lt;ul&gt;&lt;br /&gt;          &lt;li&gt;Reducing time taken to write code for save and restoration of&lt;br /&gt;            object or application state&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Eliminating complexity of save and restore operations, and&lt;br /&gt;            avoiding the need for creating a new file format&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Making it easier for objects to travel over a network connection.&lt;/li&gt;&lt;br /&gt;        &lt;/ul&gt;&lt;br /&gt;        &lt;p&gt;With relatively little effort, you can apply serialization to a&lt;br /&gt;        variety of tasks. Not only do applications benefit from serialization,&lt;br /&gt;        but also applets. Rather than specifying a long list of parameters, or&lt;br /&gt;        performing time consuming initialization and parsing, an applet can&lt;br /&gt;        simple reload a configuration object whose member variables contain all&lt;br /&gt;        the information needed to execute. It&#39;s not just useful for Java applications - even&lt;br /&gt;        applets can make benefit, by loading their configuration details or&lt;br /&gt;        parameters. With a little imagination, serialization may just have a&lt;br /&gt;        place in your next project.&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;</description><link>http://javatechnospot.blogspot.com/2009/04/object-persistence.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4481119500707690092</guid><pubDate>Fri, 17 Apr 2009 20:04:00 +0000</pubDate><atom:updated>2009-04-17T13:07:31.725-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C++</category><category domain="http://www.blogger.com/atom/ns#">Difference</category><category domain="http://www.blogger.com/atom/ns#">Java</category><title>Differnce between C++ and Java</title><description>&lt;p align=&quot;left&quot;&gt;As a C++ programmer, you already have the basic idea of object-oriented programming, and the syntax of Java no doubt looks familiar to you. This makes sense since Java was derived from C++.&lt;br /&gt;        However, there are a surprising number of differences between C++ and Java.&lt;/p&gt;&lt;br /&gt;        &lt;p align=&quot;left&quot;&gt;These differences are intended to be significant improvements, and if you understand the differences you&#39;ll see why Java is such a beneficial programming language. This&lt;br /&gt;        article takes you through the important features that distinguish Java from C++.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;        &lt;ol&gt;&lt;br /&gt;            &lt;li&gt;The biggest potential stumbling block is speed: interpreted Java&lt;br /&gt;              runs in the range of 20 times slower than C. Nothing prevents the&lt;br /&gt;              Java language from being compiled and there are just-in-time&lt;br /&gt;              compilers appearing at this writing that offer significant&lt;br /&gt;              speed-ups. It is not inconceivable that full native compilers will&lt;br /&gt;              appear for the more popular platforms, but without those there are&lt;br /&gt;              classes of problems that will be insoluble with Java because of&lt;br /&gt;              the speed issue.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;            &lt;li&gt;Java has both kinds of comments like C++ does.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;            &lt;li&gt;Everything must be in a class. There are no global functions or&lt;br /&gt;              global data. If you want the equivalent of globals, make &lt;b&gt;static&lt;/b&gt;&lt;br /&gt;              methods and &lt;b&gt;static&lt;/b&gt; data within a class. There are no&lt;br /&gt;              structs or enumerations or unions, only classes.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;            &lt;li&gt;All method definitions are defined in the body of the class.&lt;br /&gt;              Thus, in C++ it would look like all the functions are inlined, but&lt;br /&gt;              they’re not (inlines are noted later).&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;            &lt;li&gt;Class definitions are roughly the same form in Java as in C++,&lt;br /&gt;              but there’s no closing semicolon. There are no class&lt;br /&gt;              declarations of the form &lt;b&gt;class foo,&lt;/b&gt; only class definitions.&lt;br /&gt;&lt;pre&gt;class aType {&lt;br /&gt;    void aMethod( ) { /* method body */ }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;          &lt;li&gt;There’s no scope resolution operator &lt;b&gt;::&lt;/b&gt; in Java. Java&lt;br /&gt;            uses the dot for everything, but can get away with it since you can&lt;br /&gt;            define elements only within a class. Even the method definitions&lt;br /&gt;            must always occur within a class, so there is no need for scope&lt;br /&gt;            resolution there either. One place where you’ll notice the&lt;br /&gt;            difference is in the calling of &lt;b&gt;static&lt;/b&gt; methods: you say &lt;b&gt;ClassName.methodName(&amp;nbsp;);&lt;/b&gt;.&lt;br /&gt;            In addition, &lt;b&gt;package&lt;/b&gt; names are established using the dot, and&lt;br /&gt;            to perform a kind of C++ &lt;b&gt;#include&lt;/b&gt; you use the &lt;b&gt;import&lt;/b&gt;&lt;br /&gt;            keyword. For example: &lt;b&gt;import java.awt.*;&lt;/b&gt;. (&lt;b&gt;#include&lt;/b&gt;&lt;br /&gt;            does not directly map to &lt;b&gt;import&lt;/b&gt;, but it has a similar feel to&lt;br /&gt;            it).&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java, like C++, has primitive types for efficient access. In Java,&lt;br /&gt;            these are &lt;b&gt;boolean&lt;/b&gt;, &lt;b&gt;char&lt;/b&gt;, &lt;b&gt;byte&lt;/b&gt;, &lt;b&gt;short&lt;/b&gt;, &lt;b&gt;int&lt;/b&gt;,&lt;br /&gt;            &lt;b&gt;long&lt;/b&gt;, &lt;b&gt;float&lt;/b&gt;, and &lt;b&gt;double&lt;/b&gt;. All the primitive&lt;br /&gt;            types have specified sizes that are machine independent for&lt;br /&gt;            portability. (This must have some impact on performance, varying&lt;br /&gt;            with the machine.) Type-checking and type requirements are much&lt;br /&gt;            tighter in Java. For example:&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;            1. Conditional expressions can be only&lt;b&gt; boolean&lt;/b&gt;, not integral.&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;            2. The result of an expression like X + Y must be used; you can’t&lt;br /&gt;            just say &amp;quot;X + Y&amp;quot; for the side effect.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;The &lt;b&gt;char&lt;/b&gt; type uses the international 16-bit Unicode&lt;br /&gt;            character set, so it can automatically represent most national&lt;br /&gt;            characters.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Static quoted strings are automatically converted into &lt;b&gt;String&lt;/b&gt;&lt;br /&gt;            objects. There is no independent static character array string like&lt;br /&gt;            there is in C and C++.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java adds the triple right shift &lt;b&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/b&gt; to act as a&lt;br /&gt;            &amp;quot;logical&amp;quot; right shift by inserting zeroes at the top end;&lt;br /&gt;            the &lt;b&gt;&amp;gt;&amp;gt;&lt;/b&gt; inserts the sign bit as it shifts (an&lt;br /&gt;            &amp;quot;arithmetic&amp;quot; shift).&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Although they look similar, arrays have a very different structure&lt;br /&gt;            and behavior in Java than they do in C++. There’s a read-only &lt;b&gt;length&lt;/b&gt;&lt;br /&gt;            member that tells you how big the array is, and run-time checking&lt;br /&gt;            throws an exception if you go out of bounds. All arrays are created&lt;br /&gt;            on the heap, and you can assign one array to another (the array&lt;br /&gt;            handle is simply copied). The array identifier is a first-class&lt;br /&gt;            object, with all of the methods commonly available to all other&lt;br /&gt;            objects.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;All objects of non-primitive types can be created only via &lt;b&gt;new&lt;/b&gt;.&lt;br /&gt;            There’s no equivalent to creating non-primitive objects &amp;quot;on&lt;br /&gt;            the stack&amp;quot; as in C++. All primitive types can be created only&lt;br /&gt;            on the stack, without &lt;b&gt;new&lt;/b&gt;. There are wrapper classes for all&lt;br /&gt;            primitive classes so that you can create equivalent heap-based&lt;br /&gt;            objects via &lt;b&gt;new&lt;/b&gt;. (Arrays of primitives are a special case:&lt;br /&gt;            they can be allocated via aggregate initialization as in C++, or by&lt;br /&gt;            using &lt;b&gt;new.&lt;/b&gt;)&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;          &lt;li&gt;No forward declarations are necessary in Java. If you want to use&lt;br /&gt;            a class or a method before it is defined, you simply use it – the&lt;br /&gt;            compiler ensures that the appropriate definition exists. Thus you&lt;br /&gt;            don’t have any of the forward referencing issues that you do in&lt;br /&gt;            C++.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has no preprocessor. If you want to use classes in another&lt;br /&gt;            library, you say &lt;b&gt;import&lt;/b&gt; and the name of the library. There&lt;br /&gt;            are no preprocessor-like macros.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java uses packages in place of namespaces. The name issue is taken&lt;br /&gt;            care of by putting everything into a class and by using a facility&lt;br /&gt;            called &amp;quot;packages&amp;quot; that performs the equivalent namespace&lt;br /&gt;            breakup for class names. Packages also collect library components&lt;br /&gt;            under a single library name. You simply &lt;b&gt;import&lt;/b&gt; a package and&lt;br /&gt;            the compiler takes care of the rest.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Object handles defined as class members are automatically&lt;br /&gt;            initialized to &lt;b&gt;null&lt;/b&gt;. Initialization of primitive class data&lt;br /&gt;            members is guaranteed in Java; if you don’t explicitly initialize&lt;br /&gt;            them they get a default value (a zero or equivalent). You can&lt;br /&gt;            initialize them explicitly, either when you define them in the class&lt;br /&gt;            or in the constructor. The syntax makes more sense than that for&lt;br /&gt;            C++, and is consistent for &lt;b&gt;static&lt;/b&gt; and non-&lt;b&gt;static&lt;/b&gt;&lt;br /&gt;            members alike. You don’t need to externally define storage for &lt;b&gt;static&lt;/b&gt;&lt;br /&gt;            members like you do in C++.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;There are no Java pointers in the sense of C and C++. When you&lt;br /&gt;            create an object with &lt;b&gt;new&lt;/b&gt;, you get back a reference (which I’ve&lt;br /&gt;            been calling a &lt;i&gt;handle&lt;/i&gt; in this book). For example:&lt;br&gt;&lt;br /&gt;          &lt;font FACE=&quot;Courier New&quot; SIZE=&quot;2&quot;&gt;String s = new&lt;br /&gt;          String(&amp;quot;howdy&amp;quot;);&lt;/font&gt;&lt;br /&gt;          &lt;p&gt;&lt;br /&gt;          However, unlike C++ references that must be initialized when created&lt;br /&gt;          and cannot be rebound to a different location, Java references don’t&lt;br /&gt;          have to be bound at the point of creation. They can also be rebound at&lt;br /&gt;          will, which eliminates part of the need for pointers. The other reason&lt;br /&gt;          for pointers in C and C++ is to be able to point at any place in&lt;br /&gt;          memory whatsoever (which makes them unsafe, which is why Java doesn’t&lt;br /&gt;          support them). Pointers are often seen as an efficient way to move&lt;br /&gt;          through an array of primitive variables; Java arrays allow you to do&lt;br /&gt;          that in a safer fashion. The ultimate solution for pointer problems is&lt;br /&gt;          native methods (discussed in Appendix A). Passing pointers to methods&lt;br /&gt;          isn’t a problem since there are no global functions, only classes,&lt;br /&gt;          and you can pass references to objects.&lt;br&gt;&lt;br /&gt;          The Java language promoters initially said &amp;quot;No pointers!&amp;quot;,&lt;br /&gt;          but when many programmers questioned how you can work without&lt;br /&gt;          pointers, the promoters began saying &amp;quot;Restricted pointers.&amp;quot;&lt;br /&gt;          You can make up your mind whether it’s &amp;quot;really&amp;quot; a pointer&lt;br /&gt;          or not. In any event, there’s no pointer &lt;i&gt;arithmetic&lt;/i&gt;.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has constructors that are similar to constructors in C++. You&lt;br /&gt;            get a default constructor if you don’t define one, and if you&lt;br /&gt;            define a non-default constructor, there’s no automatic default&lt;br /&gt;            constructor defined for you, just like in C++. There are no copy&lt;br /&gt;            constructors, since all arguments are passed by reference.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;There are no destructors in Java. There is no &amp;quot;scope&amp;quot; of&lt;br /&gt;            a variable per se, to indicate when the object’s lifetime is ended&lt;br /&gt;            – the lifetime of an object is determined instead by the garbage&lt;br /&gt;            collector. There is a &lt;b&gt;finalize(&amp;nbsp;)&lt;/b&gt; method that’s a&lt;br /&gt;            member of each class, something like a C++ destructor, but &lt;b&gt;finalize(&amp;nbsp;)&lt;/b&gt;&lt;br /&gt;            is called by the garbage collector and is supposed to be responsible&lt;br /&gt;            only for releasing &amp;quot;resources&amp;quot; (such as open files,&lt;br /&gt;            sockets, ports, URLs, etc). If you need something done at a specific&lt;br /&gt;            point, you must create a special method and call it, not rely upon &lt;b&gt;finalize(&amp;nbsp;)&lt;/b&gt;.&lt;br /&gt;            Put another way, all objects in C++ will be (or rather, should be)&lt;br /&gt;            destroyed, but not all objects in Java are garbage collected.&lt;br /&gt;            Because Java doesn’t support destructors, you must be careful to&lt;br /&gt;            create a cleanup method if it’s necessary and to explicitly call&lt;br /&gt;            all the cleanup methods for the base class and member objects in&lt;br /&gt;            your class.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has method overloading that works virtually identically to&lt;br /&gt;            C++ function overloading.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java does not support default arguments.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;There’s no &lt;b&gt;goto&lt;/b&gt; in Java. The one unconditional jump&lt;br /&gt;            mechanism is the &lt;b&gt;break &lt;/b&gt;&lt;i&gt;label&lt;/i&gt; or &lt;b&gt;continue &lt;/b&gt;&lt;i&gt;label&lt;/i&gt;,&lt;br /&gt;            which is used to jump out of the middle of multiply-nested loops.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java uses a singly-rooted hierarchy, so all objects are ultimately&lt;br /&gt;            inherited from the root class &lt;b&gt;Object&lt;/b&gt;. In C++, you can start a&lt;br /&gt;            new inheritance tree anywhere, so you end up with a forest of trees.&lt;br /&gt;            In Java you get a single ultimate hierarchy. This can seem&lt;br /&gt;            restrictive, but it gives a great deal of power since you know that&lt;br /&gt;            every object is guaranteed to have at least the &lt;b&gt;Object&lt;/b&gt;&lt;br /&gt;            interface. C++ appears to be the only OO language that does not&lt;br /&gt;            impose a singly rooted hierarchy.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has no templates or other implementation of parameterized&lt;br /&gt;            types. There is a set of collections: &lt;b&gt;Vector&lt;/b&gt;, &lt;b&gt;Stack&lt;/b&gt;,&lt;br /&gt;            and &lt;b&gt;Hashtable&lt;/b&gt; that hold &lt;b&gt;Object&lt;/b&gt; references, and through&lt;br /&gt;            which you can satisfy your collection needs, but these collections&lt;br /&gt;            are not designed for efficiency like the C++ Standard Template&lt;br /&gt;            Library (STL). The new collections in Java 1.2 are more complete,&lt;br /&gt;            but still don’t have the same kind of efficiency as template implementations would allow.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Garbage collection means memory leaks are much harder to cause in&lt;br /&gt;            Java, but not impossible. (If you make native method calls that&lt;br /&gt;            allocate storage, these are typically not tracked by the garbage&lt;br /&gt;            collector.) However, many memory leaks and resouce leaks can be&lt;br /&gt;            tracked to a badly written &lt;b&gt;finalize(&amp;nbsp;) &lt;/b&gt;or to not&lt;br /&gt;            releasing a resource at the end of the block where it is allocated&lt;br /&gt;            (a place where a destructor would certainly come in handy). The&lt;br /&gt;            garbage collector is a huge improvement over C++, and makes a lot of&lt;br /&gt;            programming problems simply vanish. It might make Java unsuitable&lt;br /&gt;            for solving a small subset of problems that cannot tolerate a&lt;br /&gt;            garbage collector, but the advantage of a garbage collector seems to&lt;br /&gt;            greatly outweigh this potential drawback.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has built-in multithreading support. There’s a &lt;b&gt;Thread&lt;/b&gt;&lt;br /&gt;            class that you inherit to create a new thread (you override the &lt;b&gt;run(&amp;nbsp;)&lt;/b&gt;&lt;br /&gt;            method). Mutual exclusion occurs at the level of objects using the &lt;b&gt;synchronized&lt;/b&gt;&lt;br /&gt;            keyword as a type qualifier for methods. Only one thread may use a &lt;b&gt;synchronized&lt;/b&gt;&lt;br /&gt;            method of a particular object at any one time. Put another way, when&lt;br /&gt;            a &lt;b&gt;synchronized&lt;/b&gt; method is entered, it first &amp;quot;locks&amp;quot;&lt;br /&gt;            the object against any other &lt;b&gt;synchronized&lt;/b&gt; method using that&lt;br /&gt;            object and &amp;quot;unlocks&amp;quot; the object only upon exiting the&lt;br /&gt;            method. There are no explicit locks; they happen automatically. You’re&lt;br /&gt;            still responsible for implementing more sophisticated&lt;br /&gt;            synchronization between threads by creating your own&lt;br /&gt;            &amp;quot;monitor&amp;quot; class. Recursive &lt;b&gt;synchronized&lt;/b&gt; methods&lt;br /&gt;            work correctly. Time slicing is not guaranteed between equal&lt;br /&gt;            priority threads.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Instead of controlling blocks of declarations like C++ does, the&lt;br /&gt;            access specifiers (&lt;b&gt;public&lt;/b&gt;, &lt;b&gt;private&lt;/b&gt;, and &lt;b&gt;protected&lt;/b&gt;)&lt;br /&gt;            are placed on each definition for each member of a class. Without an&lt;br /&gt;            explicit access specifier, an element defaults to&lt;br /&gt;            &amp;quot;friendly,&amp;quot; which means that it is accessible to other&lt;br /&gt;            elements in the same package (equivalent to them all being C++ &lt;b&gt;friend&lt;/b&gt;s)&lt;br /&gt;            but inaccessible outside the package. The class, and each method&lt;br /&gt;            within the class, has an access specifier to determine whether it’s&lt;br /&gt;            visible outside the file. Sometimes the &lt;b&gt;private &lt;/b&gt;keyword is&lt;br /&gt;            used less in Java because &amp;quot;friendly&amp;quot; access is often more&lt;br /&gt;            useful than excluding access from other classes in the same package.&lt;br /&gt;            (However, with multithreading the proper use of &lt;b&gt;private&lt;/b&gt; is&lt;br /&gt;            essential.) The Java &lt;b&gt;protected&lt;/b&gt; keyword means &amp;quot;accessible&lt;br /&gt;            to inheritors &lt;i&gt;and&lt;/i&gt; to others in this package.&amp;quot; There is&lt;br /&gt;            no equivalent to the C++ &lt;b&gt;protected &lt;/b&gt;keyword that means&lt;br /&gt;            &amp;quot;accessible to inheritors&lt;i&gt; only&lt;/i&gt;&amp;quot; (&lt;b&gt;private&lt;br /&gt;            protected&lt;/b&gt; used to do this, but the use of that keyword pair was&lt;br /&gt;            removed).&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Nested classes. In C++, nesting a class is an aid to name hiding&lt;br /&gt;            and code organization (but C++ namespaces eliminate the need for&lt;br /&gt;            name hiding). Java packaging provides the equivalence of namespaces,&lt;br /&gt;            so that isn’t an issue. Java 1.1 has &lt;i&gt;inner classes&lt;/i&gt; that&lt;br /&gt;            look just like nested classes. However, an object of an inner class&lt;br /&gt;            secretly keeps a handle to the object of the outer class that was&lt;br /&gt;            involved in the creation of the inner class object. This means that&lt;br /&gt;            the inner class object may access members of the outer class object&lt;br /&gt;            without qualification, as if those members belonged directly to the&lt;br /&gt;            inner class object. This provides a much more elegant solution to&lt;br /&gt;            the problem of callbacks, solved with pointers to members in C++.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Because of inner classes described in the previous point, there&lt;br /&gt;            are no pointers to members in Java.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;No &lt;b&gt;inline&lt;/b&gt; methods. The Java compiler might decide on its&lt;br /&gt;            own to inline a method, but you don’t have much control over this.&lt;br /&gt;            You can suggest inlining in Java by using the &lt;b&gt;final&lt;/b&gt; keyword&lt;br /&gt;            for a method. However, &lt;b&gt;inline&lt;/b&gt; functions are only suggestions&lt;br /&gt;            to the C++ compiler as well.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Inheritance in Java has the same effect as in C++, but the syntax&lt;br /&gt;            is different. Java uses the &lt;b&gt;extends&lt;/b&gt; keyword to indicate&lt;br /&gt;            inheritance from a base class and the &lt;b&gt;super&lt;/b&gt; keyword to&lt;br /&gt;            specify methods to be called in the base class that have the same&lt;br /&gt;            name as the method you’re in. (However, the &lt;b&gt;super&lt;/b&gt; keyword&lt;br /&gt;            in Java allows you to access methods only in the parent class, one&lt;br /&gt;            level up in the hierarchy.) Base-class scoping in C++ allows you to&lt;br /&gt;            access methods that are deeper in the hierarchy). The base-class&lt;br /&gt;            constructor is also called using the &lt;b&gt;super&lt;/b&gt; keyword. As&lt;br /&gt;            mentioned before, all classes are ultimately automatically inherited&lt;br /&gt;            from &lt;b&gt;Object&lt;/b&gt;.&lt;b&gt; &lt;/b&gt;There’s no explicit constructor&lt;br /&gt;            initializer list like in C++, but the compiler forces you to perform&lt;br /&gt;            all base-class initialization at the beginning of the constructor&lt;br /&gt;            body and it won’t let you perform these later in the body. Member&lt;br /&gt;            initialization is guaranteed through a combination of automatic&lt;br /&gt;            initialization and exceptions for uninitialized object handles.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class Foo extends Bar&lt;br /&gt;{&lt;br /&gt;   public Foo(String msg) {&lt;br /&gt;      super(msg); // Calls base constructor&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   public baz(int i) { // Override&lt;br /&gt;      super.baz(i); // Calls base method&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;          &lt;br /&gt;          &lt;p&gt;&lt;br /&gt;          &lt;li&gt;Inheritance in Java doesn’t change the protection level of the&lt;br /&gt;            members in the base class. You cannot specify &lt;b&gt;public&lt;/b&gt;, &lt;b&gt;private&lt;/b&gt;,&lt;br /&gt;            or &lt;b&gt;protected&lt;/b&gt; inheritance in Java, as you can in C++. Also,&lt;br /&gt;            overridden methods in a derived class cannot reduce the access of&lt;br /&gt;            the method in the base class. For example, if a method is &lt;b&gt;public&lt;/b&gt;&lt;br /&gt;            in the base class and you override it, your overridden method must&lt;br /&gt;            also be &lt;b&gt;public&lt;/b&gt; (the compiler checks for this).&lt;br&gt;&lt;br /&gt;        &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java provides the &lt;b&gt;interface&lt;/b&gt; keyword, which creates the&lt;br /&gt;            equivalent of an abstract base class filled with abstract methods&lt;br /&gt;            and with no data members. This makes a clear distinction between&lt;br /&gt;            something designed to be just an interface and an extension of&lt;br /&gt;            existing functionality via the &lt;b&gt;extends&lt;/b&gt; keyword. It’s worth&lt;br /&gt;            noting that the &lt;b&gt;abstract&lt;/b&gt; keyword produces a similar effect in&lt;br /&gt;            that you can’t create an object of that class. An &lt;b&gt;abstract&lt;/b&gt;&lt;br /&gt;            class &lt;i&gt;may&lt;/i&gt; contain abstract methods (although it isn’t&lt;br /&gt;            required to contain any), but it is also able to contain&lt;br /&gt;            implementations, so it is restricted to single inheritance. Together&lt;br /&gt;            with interfaces, this scheme prevents the need for some mechanism&lt;br /&gt;            like virtual base classes in C++.&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;            To create a version of the &lt;b&gt;interface&lt;/b&gt; that can be&lt;br /&gt;            instantiated, use the &lt;b&gt;implements &lt;/b&gt;keyword, whose syntax looks&lt;br /&gt;            like inheritance:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public interface Face {&lt;br /&gt;   public void smile();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Baz extends Bar implements Face {&lt;br /&gt;   public void smile( ) {&lt;br /&gt;      System.out.println(&amp;quot;a warm smile&amp;quot;);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;There’s no &lt;b&gt;virtual&lt;/b&gt; keyword in Java because all non-&lt;b&gt;static&lt;/b&gt;&lt;br /&gt;            methods always use dynamic binding. In Java, the programmer doesn’t&lt;br /&gt;            have to decide whether to use dynamic binding. The reason &lt;b&gt;virtual&lt;/b&gt;&lt;br /&gt;            exists in C++ is so you can leave it off for a slight increase in&lt;br /&gt;            efficiency when you’re tuning for performance (or, put another&lt;br /&gt;            way, &amp;quot;If you don’t use it, you don’t pay for it&amp;quot;),&lt;br /&gt;            which often results in confusion and unpleasant surprises. The &lt;b&gt;final&lt;/b&gt;&lt;br /&gt;            keyword provides some latitude for efficiency tuning – it tells&lt;br /&gt;            the compiler that this method cannot be overridden, and thus that it&lt;br /&gt;            may be statically bound (and made inline, thus using the equivalent&lt;br /&gt;            of a C++ non-&lt;b&gt;virtual&lt;/b&gt; call). These optimizations are up to the&lt;br /&gt;            compiler.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java doesn’t provide multiple inheritance (MI), at least not in&lt;br /&gt;            the same sense that C++ does. Like &lt;b&gt;protected&lt;/b&gt;, MI seems like a&lt;br /&gt;            good idea but you know you need it only when you are face to face&lt;br /&gt;            with a certain design problem. Since Java uses a singly-rooted&lt;br /&gt;            hierarchy, you’ll probably run into fewer situations in which MI&lt;br /&gt;            is necessary. The &lt;b&gt;interface&lt;/b&gt; keyword takes care of combining&lt;br /&gt;            multiple interfaces.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Run-time type identification functionality is quite similar to&lt;br /&gt;            that in C++. To get information about handle &lt;b&gt;X,&lt;/b&gt; you can say,&lt;br /&gt;            for example:&lt;br&gt;&lt;br /&gt;          &lt;code&gt;X.getClass().getName();&lt;br&gt;&lt;br /&gt;            &lt;/code&gt;&lt;br /&gt;          &lt;br&gt; &lt;br /&gt;&lt;br /&gt;          To perform a type-safe downcast you say:&lt;br&gt;&lt;br /&gt;          &lt;code&gt;derived d = (derived)base;&lt;br&gt;&lt;br /&gt;            &lt;/code&gt;&lt;br&gt;&lt;br /&gt;just like an old-style C&lt;br /&gt;          cast. The compiler automatically invokes the dynamic casting mechanism&lt;br /&gt;          without requiring extra syntax. Although this doesn’t have the&lt;br /&gt;          benefit of easy location of casts as in C++ &amp;quot;new casts,&amp;quot;&lt;br /&gt;          Java checks usage and throws exceptions so it won’t allow bad casts&lt;br /&gt;          like C++ does.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Exception handling in Java is different because there are no&lt;br /&gt;            destructors. A &lt;b&gt;finally&lt;/b&gt; clause can be added to force execution&lt;br /&gt;            of statements that perform necessary cleanup. All exceptions in Java&lt;br /&gt;            are inherited from the base class &lt;b&gt;Throwable&lt;/b&gt;, so you’re&lt;br /&gt;            guaranteed a common interface.&lt;br&gt;&lt;br /&gt;&lt;pre&gt;            &lt;br /&gt;public void f(Obj b) throws IOException {&lt;br /&gt;   myresource mr = b.createResource();&lt;br /&gt;   try {&lt;br /&gt;      mr.UseResource();&lt;br /&gt;&lt;br /&gt;   } catch (MyException e) {&lt;br /&gt;      // handle my exception&lt;br /&gt;   } catch (Throwable e) {&lt;br /&gt;      // handle all other exceptions&lt;br /&gt;   } finally {&lt;br /&gt;      mr.dispose(); // special cleanup&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Exception specifications in Java are vastly superior to those in&lt;br /&gt;            C++. Instead of the C++ approach of calling a function at run-time&lt;br /&gt;            when the wrong exception is thrown, Java exception specifications&lt;br /&gt;            are checked and enforced at compile-time. In addition, overridden&lt;br /&gt;            methods must conform to the exception specification of the&lt;br /&gt;            base-class version of that method: they can throw the specified&lt;br /&gt;            exceptions or exceptions derived from those. This provides much more&lt;br /&gt;            robust exception-handling code.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has method overloading, but no operator overloading. The &lt;b&gt;String&lt;/b&gt;&lt;br /&gt;            class does use the &lt;b&gt;+&lt;/b&gt; and &lt;b&gt;+= &lt;/b&gt;operators to concatenate&lt;br /&gt;            strings and &lt;b&gt;String &lt;/b&gt;expressions use automatic type conversion,&lt;br /&gt;            but that’s a special built-in case.&lt;br&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;The &lt;b&gt;const&lt;/b&gt; issues in C++ are avoided in&lt;br /&gt;            Java by convention. You pass only handles to objects and local&lt;br /&gt;            copies are never made for you automatically. If you want the&lt;br /&gt;            equivalent of C++’s pass-by-value, &lt;a NAME=&quot;OLE_LINK8&quot;&gt;you&lt;br /&gt;            call &lt;b&gt;clone(&amp;nbsp;)&lt;/b&gt; to produce a local copy of the argument &lt;/a&gt;(although&lt;br /&gt;            the &lt;b&gt;clone(&amp;nbsp;) &lt;/b&gt;mechanism is somewhat poorly designed –&lt;br /&gt;            see Chapter 12). There’s no copy-constructor that’s&lt;br /&gt;            automatically called.&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;            To create a compile-time constant value, you say, for example:&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;&lt;code&gt;static final int SIZE = 255;&lt;br&gt;&lt;br /&gt;static final int BSIZE = 8 * SIZE;&lt;br&gt;&lt;br /&gt;            &lt;/code&gt;&lt;br /&gt;            &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;          &lt;li&gt;Because of security issues, programming an &amp;quot;application&amp;quot;&lt;br /&gt;            is quite different from programming an &amp;quot;applet.&amp;quot; A&lt;br /&gt;            significant issue is that an applet won’t let you write to disk,&lt;br /&gt;            because that would allow a program downloaded from an unknown&lt;br /&gt;            machine to trash your disk. This changes somewhat with Java 1.1&lt;br /&gt;            digital signing, which allows you to unequivocally &lt;i&gt;know&lt;/i&gt;&lt;br /&gt;            everyone that wrote all the programs that have special access to&lt;br /&gt;            your system (one of which might have trashed your disk; you still&lt;br /&gt;            have to figure out which one and what to do about it.). Java 1.2&lt;br /&gt;            also promises more power for applets&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Since Java can be too restrictive in some cases, you could be&lt;br /&gt;            prevented from doing important tasks such as directly accessing&lt;br /&gt;            hardware. Java solves this with &lt;i&gt;native methods&lt;/i&gt; that allow you&lt;br /&gt;            to call a function written in another language (currently only C and&lt;br /&gt;            C++ are supported). Thus, you can always solve a platform-specific&lt;br /&gt;            problem (in a relatively non-portable fashion, but then that code is&lt;br /&gt;            isolated). Applets cannot call native methods, only applications.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java has built-in support for comment documentation, so the source&lt;br /&gt;            code file can also contain its own documentation, which is stripped&lt;br /&gt;            out and reformatted into HTML via a separate program. This is a boon&lt;br /&gt;            for documentation maintenance and use.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java contains standard libraries for solving specific tasks. C++&lt;br /&gt;            relies on non-standard third-party libraries. These tasks include&lt;br /&gt;            (or will soon include):&lt;p&gt;&lt;br /&gt;            &lt;ul&gt; &lt;li&gt;&lt;br /&gt;            Networking&lt;li&gt;&lt;br /&gt;            Database Connection (via JDBC)&lt;li&gt;&lt;br /&gt;            Multithreading&lt;li&gt;&lt;br /&gt;            Distributed Objects (via RMI and CORBA)&lt;li&gt;&lt;br /&gt;            Compression&lt;li&gt;&lt;br /&gt;            Commerce&lt;br /&gt;            &lt;/ul&gt;&lt;br /&gt;            &lt;p&gt;&lt;br /&gt;            The availability and standard nature of these libraries allow for&lt;br /&gt;            more rapid application development.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Java 1.1 includes the Java Beans standard, which is a way to&lt;br /&gt;            create components that can be used in visual programming&lt;br /&gt;            environments. This promotes visual components that can be used under&lt;br /&gt;            all vendor’s development environments. Since you aren’t tied to&lt;br /&gt;            a particular vendor’s design for visual components, this should&lt;br /&gt;            result in greater selection and availability of components. In&lt;br /&gt;            addition, the design for Java Beans is simpler for programmers to&lt;br /&gt;            understand; vendor-specific component frameworks tend to involve a&lt;br /&gt;            steeper learning curve.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;If the access to a Java handle fails, an exception is thrown. This&lt;br /&gt;            test doesn’t have to occur right before the use of a handle; the&lt;br /&gt;            Java specification just says that the exception must somehow be&lt;br /&gt;            thrown. Many C++ runtime systems can also throw exceptions for bad&lt;br /&gt;            pointers.&lt;br&gt;&lt;br /&gt;          &lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Generally, Java is more robust, via:&lt;br&gt;&lt;br /&gt;          &lt;ul&gt;&lt;br /&gt;            &lt;li&gt;Object handles initialized to &lt;b&gt;null&lt;/b&gt; (a keyword)&lt;br /&gt;            &lt;li&gt;Handles are always checked and exceptions are thrown for&lt;br /&gt;            failures&lt;br /&gt;            &lt;li&gt;All array accesses are checked for bounds violations&lt;br /&gt;            &lt;li&gt;Automatic garbage collection prevents memory leaks&lt;br /&gt;            &lt;li&gt;Clean, relatively fool-proof exception handling&lt;br /&gt;            &lt;li&gt;Simple language support for multithreading&lt;br /&gt;            &lt;li&gt;Bytecode verification of network applets&lt;br /&gt;          &lt;/ul&gt;&lt;br /&gt;          &lt;/ol&gt;</description><link>http://javatechnospot.blogspot.com/2009/04/differnce-between-c-and-java.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-6093008588028020024</guid><pubDate>Fri, 17 Apr 2009 20:00:00 +0000</pubDate><atom:updated>2009-04-17T13:02:34.663-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">J2EE</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Objects</category><category domain="http://www.blogger.com/atom/ns#">Singleton</category><title>Singleton Object</title><description>For those who haven&#39;t heard of design patterns before, or who are familiar with the term but not its meaning, a design pattern is a template for software development. The purpose of the template is to define a particular behavior or technique that can be used as a building block for the construction of software - to solve universal problems that commonly face developers. Think of design code as a way of passing on some nifty piece of advice, just like your mother used to give. &quot;Never wear your socks for more than one day&quot; might be an old family adage, passed down from generation to generation. It&#39;s common sense solutions that are passed on to others. Consider a design pattern as a useful piece of advice for designing software.&lt;br /&gt;&lt;br /&gt;       Design patterns out of the way, let&#39;s look at the singleton. By now, you&#39;re probably wondering what a singleton is - isn&#39;t jargon terrible? A singleton is an object that cannot be instantiated. At first, that might seem counterintuitive - after all, we need an instance of an object before we can use it. Well yes a singleton can be created, but it can&#39;t be instantiated by developers - meaning that the singleton class has control over how it is created. The restriction on the singleton is that there can be only one instance of a singleton created by the Java Virtual Machine (JVM) - by prevent direct instantiation we can ensure that developers don&#39;t create a second copy.&lt;br /&gt;&lt;br /&gt;        So why would this be useful? Often in designing a system, we want to control how an object is used, and prevent others (ourselves included) from making copies of it or creating new instances. For example, a central configuration object that stores setup information should have one and one only instance - a global copy accessible from any part of the application, including any threads that are running. Creating a new configuration object and using it would be fairly useless, as other parts of the application might be looking at the old configuration object, and changes to application settings wouldn&#39;t always be acted upon. I&#39;m sure you can think of a other situations where a singleton would be useful - perhaps you&#39;ve even used one before without giving it a name. It&#39;s a common enough design criteria (not used everyday, but you&#39;ll come across it from time to time). The singleton pattern can be applied in any language, but since we&#39;re all Java programmers here (if you&#39;re not, shame!) let&#39;s look at how to implement the pattern using Java.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Preventing direct instantiation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;     We all know how objects are instantiated right? Maybe not everyone? Let&#39;s go through a quick refresher.&lt;br /&gt;&lt;br /&gt;     Objects are instantiated by using the new keyword. The new keyword allows you to create a new instance of an object, and to specify parameters to the class&#39;s constructor. You can specify no parameters, in which case the blank constructor (also known as the default constructor) is invoked. Constructors can have access modifiers, like public and private, which allow you to control which classes have access to a constructor. So to prevent direct instantiation, we create a private default constructor, so that other classes can&#39;t create a new instance.&lt;br /&gt;&lt;br /&gt;      We&#39;ll start with the class definition, for a SingletonObject class. Next, we provide a default constructor that is marked as private. No actual code needs to be written, but you&#39;re free to add some initialization code if you&#39;d like. &lt;br /&gt;&lt;br /&gt;public class SingletonObject&lt;br /&gt;{&lt;br /&gt; private SingletonObject()&lt;br /&gt; {&lt;br /&gt;  // no code req&#39;d&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far so good. But unless we add some further code, there&#39;ll be absolutely no way to use the class. We want to prevent direct instantiation, but we still need to allow a way to get a reference to an instance of the singleton object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Getting an instance of the singleton&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        We need to provide an accessor method, that returns an instance of the SingletonObject class but doesn&#39;t allow more than one copy to be accessed. We can manually instantiate an object, but we need to keep a reference to the singleton so that subsequent calls to the accessor method can return the singleton (rather than creating a new one). To do this, provide a public static method called getSingletonObject(), and store a copy of the singleton in a private member variable.&lt;br /&gt;&lt;br /&gt;public class SingletonObject&lt;br /&gt;{&lt;br /&gt;    private SingletonObject()&lt;br /&gt;    {&lt;br /&gt;        // no code req&#39;d&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static SingletonObject getSingletonObject()&lt;br /&gt;    {&lt;br /&gt;      if (ref == null)&lt;br /&gt;          // it&#39;s ok, we can call this constructor&lt;br /&gt;          ref = new SingletonObject();&lt;br /&gt;      return ref;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static SingletonObject ref;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;         So far, so good. When first called, the getSingletonObject() method creates a singleton instance, assigns it to a member variable, and returns the singleton. Subsequent calls will return the same singleton, and all is well with the world. You could extend the functionality of the singleton object by adding new methods, to perform the types of tasks your singleton needs. So the singleton is done, right? Well almost.....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Preventing thread problems with your singleton&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        We need to make sure that threads calling the getSingletonObject() method don&#39;t cause problems, so it&#39;s advisable to mark the method as synchronized. This prevents two threads from calling the getSingletonObject() method at the same time. If one thread entered the method just after the other, you could end up calling the SingletonObject constructor twice and returning different values. To change the method, just add the synchronized keyword as follows to the method declaration :-&lt;br /&gt;&lt;br /&gt;public static synchronized&lt;br /&gt;  SingletonObject getSingletonObject()&lt;br /&gt;&lt;br /&gt;Are we finished yet?&lt;br /&gt;&lt;br /&gt;There, finished. A singleton object that guarantees one instance of the class, and never more than one. Right? Well.... not quite. Where there&#39;s a will, there&#39;s a way - it is still possible to evade all our defensive programming and create more than one instance of the singleton class defined above. Here&#39;s where most articles on singletons fall down, because they forget about cloning. Examine the following code snippet, which clones a singleton object.&lt;br /&gt;&lt;br /&gt;public class Clone&lt;br /&gt;{&lt;br /&gt; public static void main(String args[])&lt;br /&gt;   throws Exception&lt;br /&gt; {&lt;br /&gt;   // Get a singleton&lt;br /&gt;   SingletonObject obj = &lt;br /&gt;   SingletonObject.getSingletonObject();&lt;br /&gt;&lt;br /&gt;   // Buahahaha. Let&#39;s clone the object&lt;br /&gt;   SingletonObject clone = &lt;br /&gt;  (SingletonObject) obj.clone();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;           Okay, we&#39;re cheating a little here. There isn&#39;t a clone() method defined in SingletonObject, but there is in the java.lang.Object class which it is inherited from. By default, the clone() method is marked as protected, but if your SingletonObject extends another class that does support cloning, it is possible to violate the design principles of the singleton.  So, to be absolutely positively 100% certain that a singleton really is a singleton, we must add a clone() method of our own, and throw a CloneNotSupportedException if anyone dares try!&lt;br /&gt;&lt;br /&gt;         Here&#39;s the final source code for a SingletonObject, which you can use as a template for your own singletons.&lt;br /&gt;&lt;br /&gt;public class SingletonObject&lt;br /&gt;{&lt;br /&gt;  private SingletonObject()&lt;br /&gt;  {&lt;br /&gt;    // no code req&#39;d&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static SingletonObject getSingletonObject()&lt;br /&gt;  {&lt;br /&gt;    if (ref == null)&lt;br /&gt;        // it&#39;s ok, we can call this constructor&lt;br /&gt;        ref = new SingletonObject();  &lt;br /&gt;    return ref;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public Object clone()&lt;br /&gt; throws CloneNotSupportedException&lt;br /&gt;  {&lt;br /&gt;    throw new CloneNotSupportedException(); &lt;br /&gt;    // that&#39;ll teach &#39;em&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private static SingletonObject ref;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;           A singleton is an class that can be instantiated once, and only once. This is a fairly unique property, but useful in a wide range of object designs. Creating an implementation of the singleton pattern is fairly straightforward - simple block off access to all constructors, provide a static method for getting an instance of the singleton, and prevent cloning.</description><link>http://javatechnospot.blogspot.com/2009/04/singleton-object.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-114656207437175734</guid><pubDate>Wed, 19 Nov 2008 18:40:00 +0000</pubDate><atom:updated>2008-11-19T10:50:07.578-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">Rank</category><category domain="http://www.blogger.com/atom/ns#">RankLog</category><title>RankLog in FAST ESP</title><description>The SBC (Search Business Center) provides a simple way of defining how document summaries are rendered, but only allows for the&lt;br /&gt;fields returned to be used(When the rank log turned on).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To Enable RankLog:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;     1. Go to Search Profile Settings &gt; Query Handling in SBC. &lt;br /&gt;     2. Add the static query parameter ranklog=true and save. &lt;br /&gt;     3. Publish the Search Profile by going into Publishing and click on Publish   &lt;br /&gt;        Search Profile.</description><link>http://javatechnospot.blogspot.com/2008/11/ranklog-in-fast-esp.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-3575498499135394857</guid><pubDate>Thu, 23 Oct 2008 18:01:00 +0000</pubDate><atom:updated>2008-10-23T11:27:26.406-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>FAST ESP - Enable GEO Search</title><description>With Geo Search you can control the sorting based on geographical distance from a given start position/geographical location. &lt;br /&gt;&lt;br /&gt;             FAST ESP supports geographical coordinates associated with documents, and lets you sort and filter results based on radius or a rectangular geographical area. Using the filter option you can use regular sorting or ranking. Sorting based on distance can not be combined with regular ranking.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To search with Geo sort/filter :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  1. GEO search must be enabled in the back-end. &lt;br /&gt;  2. GEO data must be fed into FAST ESP. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To Enable Geo in Fast SFE :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;   1. Open $FASTSEARCH/adminserver/webapps/sfe/WEB-&lt;br /&gt;INF/classes/com/fastsearch/espimpl/sfeapi/searchservice/SearchServiceImpl.properties &lt;br /&gt;   2. Add com.fastsearch.espimpl.sfeapi.searchservice.search.geo.LatLonGeoSearchImpl to custom_search_inputs= &lt;br /&gt;   3. Add com.fastsearch.espimpl.sfeapi.searchservice.result.geo.GeoGraphImpl to custom_result_aspects= &lt;br /&gt;&lt;br /&gt;   4. Restart the ESP using nctrl restart command.&lt;br /&gt;&lt;br /&gt;Now you can see the Geo features in SFE under the Advanced search Tab.</description><link>http://javatechnospot.blogspot.com/2008/10/fast-esp-enable-geo-search.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-2600053754323742901</guid><pubDate>Mon, 13 Oct 2008 04:25:00 +0000</pubDate><atom:updated>2008-10-12T21:32:13.509-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">QRServer</category><title>ESP : Error 1005</title><description>Find the below log file for this error.It will accours when the QPS exceeds the limit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Error 1005 Query Term Refuse&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        Check the QPS license limitations via Admin GUI.If it&#39;s exceeds the limit try to get a new license and restart the QR Server.</description><link>http://javatechnospot.blogspot.com/2008/10/esp-error-1005.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-2364818037288740031</guid><pubDate>Mon, 13 Oct 2008 04:21:00 +0000</pubDate><atom:updated>2008-10-12T21:25:23.575-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Config</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>ESP : Error 28 No  space left on device</title><description>Find the below log file for this error.It will accours when you did a mistake in Config file.&lt;br /&gt;&lt;br /&gt;$FASTSEARCH/var/log/configserver.scrap&lt;br /&gt;&lt;br /&gt;It&#39;s one of the FATAL error.The main causes for this error is,there is no space available to store the config file in that partition.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Error saving main configuration&lt;br /&gt;file: IOError: [Errno 28] No  space left on device&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        Clear some space to allow the configserver to save configuration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt;&lt;br /&gt;        Stopping the configserver during these conditions may cause information to be lost.</description><link>http://javatechnospot.blogspot.com/2008/10/esp-error-28-no-space-left-on-device.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-5190834312742063379</guid><pubDate>Mon, 13 Oct 2008 04:17:00 +0000</pubDate><atom:updated>2008-10-12T21:21:25.905-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Config</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>ESP : Error Code 226</title><description>Find the below log file for this error.It will accours when you did a mistake in Config file.&lt;br /&gt;&lt;br /&gt;$FASTSEARCH/var/log/configserver.scrap&lt;br /&gt;&lt;br /&gt;It&#39;s one of the FATAL error.The main causes for this error is,some program/Application using the port what ESP use.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Failed to start ConfigServer: &lt;br /&gt;error: (226, &#39;Address already in use&#39;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;     Start the configserver on another port or shut down the program using the one you are trying to use.(Edit the Port element in config file)</description><link>http://javatechnospot.blogspot.com/2008/10/esp-error-code-226.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-4658711717638795297</guid><pubDate>Mon, 13 Oct 2008 04:10:00 +0000</pubDate><atom:updated>2008-10-12T21:17:20.695-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Config</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Error</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>ESP : FATAL Error 128</title><description>Find the below log file for this error.It will accours when you did a mistake in Config file.&lt;br /&gt;&lt;br /&gt;$FASTSEARCH/var/log/configserver.scrap&lt;br /&gt;&lt;br /&gt;       It&#39;s one of the FATAL error.The main causes for this error is,FAST ESP could not able to do the character encoding during the load of Cofig file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  Error loading config file: UnicodeError: ASCII encoding &lt;br /&gt;  error: ordinal not in range (128)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; Edit the configuration file and remove those characters.</description><link>http://javatechnospot.blogspot.com/2008/10/esp-fatal-error-128.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-7493419669729907255</guid><pubDate>Mon, 13 Oct 2008 04:04:00 +0000</pubDate><atom:updated>2008-10-12T21:10:39.015-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">Indexing</category><title>ESP : Indexing</title><description>The purpose of storing an index is to optimize speed and performance in finding relevant documents for a search query. Without an index, the search engine would scan every document in the corpus, which would require considerable time and computing power. For example, while an index of 10,000 documents can be queried within milliseconds, a sequential scan of every word in 10,000 large documents could take hours. The additional computer storage required to store the index, as well as the considerable increase in the time required for an update to take place, are traded off for the time saved during information retrieval.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Index Design Factors&lt;/strong&gt;&lt;br /&gt;         Major factors in designing a search engine&#39;s architecture include:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Merge factors  &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;          How data enters the index, or how words or subject features are added to the index during text corpus traversal, and whether multiple indexers can work asynchronously. The indexer must first check whether it is updating old content or adding new content. Traversal typically correlates to the data collection policy. Search engine index merging is similar in concept to the SQL Merge command and other merge algorithms.&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Storage techniques  &lt;/strong&gt;&lt;br /&gt;          How to store the index data, that is, whether information should be data compressed or filtered. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Index size  &lt;/strong&gt;&lt;br /&gt;          How much computer storage is required to support the index. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lookup speed  &lt;/strong&gt;&lt;br /&gt;          How quickly a word can be found in the inverted index. The speed of finding an entry in a data structure, compared with how quickly it can be updated or removed, is a central focus of computer science. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Maintenance  &lt;/strong&gt;&lt;br /&gt;          How the index is maintained over time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fault tolerance  &lt;/strong&gt;&lt;br /&gt;          How important it is for the service to be reliable. Issues include dealing with index corruption, determining whether bad data can be treated in isolation, dealing with bad hardware, partitioning, and schemes such as hash-based or composite partitioning, as well as replication. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt; Index Data Structures&lt;/strong&gt;&lt;br /&gt;          Search engine architectures vary in the way indexing is performed and in methods of index storage to meet the various design factors. Types of indices include:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Suffix tree&lt;/strong&gt;&lt;br /&gt;  &lt;br /&gt;         Figuratively structured like a tree, supports linear time lookup. Built by storing the suffixes of words. The suffix tree is a type of trie. Tries support extendable hashing, which is important for search engine indexing.[8] Used for searching for patterns in DNA sequences and clustering. A major drawback is that the storage of a word in the tree may require more storage than storing the word itself. An alternate representation is a suffix array, which is considered to require less virtual memory and supports data compression such as the BWT algorithm. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tree  &lt;/strong&gt;&lt;br /&gt;        An ordered tree data structure that is used to store an associative array where the keys are strings. Regarded as faster than a hash table but less space-efficient.&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Inverted index  &lt;/strong&gt;&lt;br /&gt;        Stores a list of occurrences of each atomic search criterion[10], typically in the form of a hash table or binary tree.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Citation index  &lt;/strong&gt;&lt;br /&gt;        Stores citations or hyperlinks between documents to support citation analysis, a subject of Bibliometrics. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ngram index  &lt;/strong&gt;&lt;br /&gt;        Stores sequences of length of data to support other types of retrieval or text mining.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Term document matrix  &lt;/strong&gt;&lt;br /&gt;        Used in latent semantic analysis, stores the occurrences of words in documents in a two-dimensional sparse matrix.</description><link>http://javatechnospot.blogspot.com/2008/10/esp-indexing.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-2475665918014289422</guid><pubDate>Fri, 10 Oct 2008 18:45:00 +0000</pubDate><atom:updated>2008-10-10T11:59:51.074-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">Partial Update</category><category domain="http://www.blogger.com/atom/ns#">Update</category><title>ESP - Partial Update</title><description>We can do the partial updates via Content API (feeder. updateDocument ()) when Indexer doing the Incremental Indexing.&lt;br /&gt;&lt;br /&gt;            Basically during the document processing stage, ESP will decide to do the partial update or full update (Add Document).For that we need to enable the Partial Update option in our custom processor/Pipeline.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;1. $FASTHOME\etc\processors\ProcessorServer.xml&lt;br /&gt;&lt;br /&gt;2. Add the Partial Update element in our custom processors.&lt;br /&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2I4iw7QxQrRyY-9IYDJGoeg37X0gVXQz9hQjcnVRKnrGU5Se0wIFcw_-rOo1QY6cEm1lz5G-0ehP6PY40xPfqkT_E4S25VJ5HIb9AQY4MFAOnbRXFi9sFyN54XDaE1cPegS43TMBY2Qs/s1600-h/ParitialUpdate.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2I4iw7QxQrRyY-9IYDJGoeg37X0gVXQz9hQjcnVRKnrGU5Se0wIFcw_-rOo1QY6cEm1lz5G-0ehP6PY40xPfqkT_E4S25VJ5HIb9AQY4MFAOnbRXFi9sFyN54XDaE1cPegS43TMBY2Qs/s320/ParitialUpdate.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5255601007712129074&quot; /&gt;&lt;/a&gt;&lt;br /&gt;3.  Change the XMLMapper.xml to enable the Partial Update.&lt;br /&gt;&lt;br /&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZeKkFVSXui7C9dKbwcskwllkgRklRn9s7RBWbUYw1F1e-SEUgkqvH7Y-mzFtVDsk3hzSCA65Wp9YlMwR0s_bfzvl6-VKLTsWw1O8RZjPZuPAwAhXEZpREOb7MQB2UST__1DkUGqPal-0/s1600-h/ParitialUpdate.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZeKkFVSXui7C9dKbwcskwllkgRklRn9s7RBWbUYw1F1e-SEUgkqvH7Y-mzFtVDsk3hzSCA65Wp9YlMwR0s_bfzvl6-VKLTsWw1O8RZjPZuPAwAhXEZpREOb7MQB2UST__1DkUGqPal-0/s320/ParitialUpdate.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5255601758352214082&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can do the same via web Analyzer tool also .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Partial Update considerations : &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        The update methods provides a means for partial document updates and have certain limitations.&lt;br /&gt;         As a general rule these methods should only be used to update metadata or numeric elements that does not require any document processing. datetime elements can also be updated.&lt;br /&gt;         This means that if you need to update the actual content of an HTML page, PDF document or XML file the add methods must be used.&lt;br /&gt;        It is possible to implement custom document processing that supports partial update</description><link>http://javatechnospot.blogspot.com/2008/10/esp-partial-update.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2I4iw7QxQrRyY-9IYDJGoeg37X0gVXQz9hQjcnVRKnrGU5Se0wIFcw_-rOo1QY6cEm1lz5G-0ehP6PY40xPfqkT_E4S25VJ5HIb9AQY4MFAOnbRXFi9sFyN54XDaE1cPegS43TMBY2Qs/s72-c/ParitialUpdate.JPG" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-5969360153019981092</guid><pubDate>Mon, 15 Sep 2008 18:00:00 +0000</pubDate><atom:updated>2008-09-15T11:15:22.332-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">ESP 5.2.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>FAST : Integrate the File Traverser</title><description>A user friendly interface to the File Traverser can be intgrated into the administrator interface.The connector controller module enables the File Traverser to be integrated into the FAST ESP administrator interface.&lt;br /&gt;&lt;br /&gt;To integrate the connector controller, complete the following procedure on each node that you want to make available for file traversing via the administrator interface.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;If it seems from the logs that the file traverser does not start, Check the &lt;br /&gt;connectorcontroller scrap file $FASTSEARCH/var/log/connectorcontroller/connectorcontroller.scrap and the &lt;br /&gt;filetraverser scrap file in $FASTSEARCH/var/log/FileTraverser_&lt;collection&gt;.scrap&lt;br /&gt;&lt;br /&gt;1. Add the following entries to the $FASTSEARCH/etc/NodeConf.xml file.&lt;br /&gt;    a) Add the following to the &lt;startorder&gt; element:&lt;br /&gt;         &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8po6ibnukM1HGiHLmjxwpiClHGHYvFj46Ix7DoS3DiCJR0tLAfYSjNCPue1mD8F0wPQJ4kIck716qNeOYY4yCA9IqsHNKKkBNKcZrmkmmYUhaUxErO1MQBELWxkGIZq0T7dHK3uxD7is/s1600-h/filetraverser1.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8po6ibnukM1HGiHLmjxwpiClHGHYvFj46Ix7DoS3DiCJR0tLAfYSjNCPue1mD8F0wPQJ4kIck716qNeOYY4yCA9IqsHNKKkBNKcZrmkmmYUhaUxErO1MQBELWxkGIZq0T7dHK3uxD7is/s320/filetraverser1.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5246312828101322738&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b) Add the following the list of processes:&lt;br /&gt;     &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswm-tfUD1c45YZobHhVgCFBTIRoSGtYQ6uL1WtfzXGEIFEUAcQauT65FzM0xOKzbJgGB-WoXThTyfthqJHYjnoOYSfGa23RL2QSt5tBGZquuH2mnL8sISxmIAL-AIDfCoocZOCATce68/s1600-h/filetraverser2.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhswm-tfUD1c45YZobHhVgCFBTIRoSGtYQ6uL1WtfzXGEIFEUAcQauT65FzM0xOKzbJgGB-WoXThTyfthqJHYjnoOYSfGa23RL2QSt5tBGZquuH2mnL8sISxmIAL-AIDfCoocZOCATce68/s320/filetraverser2.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5246313291542227074&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Execute command: $FASTSEARCH/bin/nctrl reloadcfg&lt;br /&gt;3. Execute command: $FASTSEARCH/bin/nctrl start connectorcontroller&lt;br /&gt;&lt;br /&gt;    The File Traverser should now appear as a Data Source in the administrator interface.&lt;br /&gt;&lt;br /&gt;4. Test a normal situation scenario&lt;br /&gt;    a) Add collections with the file traverser as a data source.&lt;br /&gt;    b) Start and stop the data source.&lt;br /&gt;    c) Delete the collection.</description><link>http://javatechnospot.blogspot.com/2008/09/fast-integrate-file-traverser.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8po6ibnukM1HGiHLmjxwpiClHGHYvFj46Ix7DoS3DiCJR0tLAfYSjNCPue1mD8F0wPQJ4kIck716qNeOYY4yCA9IqsHNKKkBNKcZrmkmmYUhaUxErO1MQBELWxkGIZq0T7dHK3uxD7is/s72-c/filetraverser1.JPG" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-5358704713039986458</guid><pubDate>Mon, 15 Sep 2008 17:59:00 +0000</pubDate><atom:updated>2008-09-15T11:00:33.951-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">Esp 4.3.x</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><title>FAST : Disable User Authentication</title><description>We can disable user authentication in the FAST ESP administrator interface by completing the steps in this procedure. &lt;br /&gt;&lt;br /&gt;         1. Open $FASTHOME/etc/guiConfig.php&lt;br /&gt;         2. Set the following parameter:&lt;br /&gt;              $ADMINGUI_PHP_AUTH_DISABLED=True;</description><link>http://javatechnospot.blogspot.com/2008/09/fast-disable-user-authentication.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-3454825054539488542</guid><pubDate>Thu, 04 Sep 2008 20:19:00 +0000</pubDate><atom:updated>2008-09-04T13:20:25.636-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Collection</category><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">Index</category><title>FAST ESP ; MARSHAL_MessageSizeExceedLimitOnClient</title><description>&lt;strong&gt;Question:&lt;/strong&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;Error: MARSHAL_MessageSizeExceedLimitOnClient What can be the reason for it?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;Error: MARSHAL_MessageSizeExceedLimitOnClient usually happens by trying to extract &lt;br /&gt;records or attachments beyond a specified limit. Make sure that you have the &lt;br /&gt;OMNIORB_CONFIG environment variable set to point to the omniorb.cfg file. In this file you can look for the property giopMaxMsgSize = 209715200 # 200 MBytes.&lt;br /&gt;&lt;br /&gt;The default level I believe is &lt;strong&gt;200MB.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The hanging will happen when you have this misconfigured.</description><link>http://javatechnospot.blogspot.com/2008/09/fast-esp-marshalmessagesizeexceedlimito.html</link><author>noreply@blogger.com (Unknown)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2818279661980553000.post-6732860932196767730</guid><pubDate>Thu, 04 Sep 2008 20:13:00 +0000</pubDate><atom:updated>2008-09-04T13:16:32.116-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Collection</category><category domain="http://www.blogger.com/atom/ns#">Doccount</category><category domain="http://www.blogger.com/atom/ns#">ESP</category><category domain="http://www.blogger.com/atom/ns#">FAST</category><category domain="http://www.blogger.com/atom/ns#">FAST Command</category><category domain="http://www.blogger.com/atom/ns#">FAST Server</category><category domain="http://www.blogger.com/atom/ns#">Index</category><title>FAST ESP : Check the DocCount for Collection</title><description>&lt;strong&gt;Question&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Is there a way to determine if the index for a collection is completely &lt;br /&gt;empty and deleted.i.e. after adminclient -d AND deleting the collection in the GUI.&lt;br /&gt;How can we know that everything is really gone.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On large systems deleting all documents in a collection may take quite &lt;br /&gt;some time. You should verify that all documents in the collection are gone &lt;br /&gt;by issuing doccount-commands to all columns by using the rtsinfo tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;rtsinfo nameserver nameserverport clustername columnid rowid &lt;br /&gt;&lt;command&gt;&lt;br /&gt;&lt;br /&gt;For a system with three columns, one row and standard port range, run &lt;br /&gt;these three commands on the admin node.&lt;br /&gt;&lt;br /&gt;rtsinfo adminhost 16099 webcluster 0 0 doccount collectionname &lt;br /&gt;rtsinfo adminhost 16099 webcluster 1 0 doccount collectionname&lt;br /&gt;rtsinfo adminhost 16099 webcluster 2 0 doccount collectionname&lt;br /&gt;(replace adminhost and collectionname with the entries valid for your system)&lt;br /&gt;Typical output from each of these commands:&lt;br /&gt;&lt;br /&gt;There are 1750 docs in the collection collectionname.&lt;br /&gt;SUCCESS.&lt;br /&gt;&lt;br /&gt;When &quot;0 docs&quot; is reported from all columns, the collection is clean.</description><link>http://javatechnospot.blogspot.com/2008/09/fast-esp-check-doccount-for-collection.html</link><author>noreply@blogger.com (Unknown)</author></item></channel></rss>