<?xml version="1.0" encoding="UTF-8"?><rss xmlns:xrl="http://1060.org/xrl" version="2.0"><channel><title>1060 Forum - Recent Entries</title><link>http://www.1060.org/forum/</link><description>
					Entries: 15 Views: 12</description><generator>1060 NetKernel Standard Edition v2.x.x 1060 Forum v1.0.0</generator><language>en-us</language><ttl>60</ttl><item><title>Hrm</title><link>http://www.1060.org/forum/entry/2456</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2456</guid><description>&lt;div&gt;Ok, but ...&lt;br/&gt;&lt;br/&gt;This is really confusing and unintuitive.  I suspected the answer was something like this, but I could find nothing in the documentation that suggests the implication of something as simple and common as getting parameters.&lt;br/&gt;&lt;br/&gt;But more importantly, why is this useful?  The result of this is that getting the parameters anywhere in your call stack renders everything above it completely non-cachable, regardless of whether the value is different, important, or even used.  I thought the benefit of the 'httpRequest' space was that you could easily get at request info from a very deep level without needing to pass things down at every level, but now my advice would have to be don't use it except at the very highest level.&lt;br/&gt;&lt;br/&gt;In addition to that, why does the value even get (and stay) cached if there's no way to ever get to it?  It just uselessly fills up the cache with inaccessible junk.  (And confuses anyone who might try to understand what's going on.)&lt;/div&gt;</description><pubDate>Thu, 11 Mar 2010 18:01:00 GMT</pubDate></item><item><title>It the scope</title><link>http://www.1060.org/forum/entry/2455</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2455</guid><description>&lt;div&gt;Hi Jeff, although the resource representation isn't expired in your example the scope of response is different each time it is requested. This is because you have forced inclusion of the http request address space by resolving a resource from there. This in effect means that you are actually computing the representation in a different place and therefore the value you have in the cache cannot be validly used. For more details and example see my blog post:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://durablescope.blogspot.com/2009/11/caching-how-and-why-it-works.html" target="_new"&gt;http://durablescope.blogspot.com/2009/11/caching-how-and-why-it-works.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;One way to change the scoping and hence the cachability is to have a layer in your system which extracts the params from the http request space and puts them onto the request. (you could use the mapper to do this). That way for an identical value of a parameter you would be able to retrieve the response representation from cache (all other factors willing)&lt;br/&gt;&lt;br/&gt;Cheers, Tony&lt;/div&gt;</description><pubDate>Thu, 11 Mar 2010 12:47:00 GMT</pubDate></item><item><title>Why doesn't this cache?</title><link>http://www.1060.org/forum/entry/2454</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2454</guid><description>&lt;div&gt;A confusing piece of behavior I ran into.  &lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;context.source("httpRequest:/params");&lt;br/&gt;response=context.createResponseFrom("xyz:"+Math.round(Math.random()*1000));&lt;br/&gt;response.setExpiry(response.EXPIRY_DEPENDENT);&lt;br/&gt;context.setResponse(response);&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;This is close to as simple a groovy script as you can have.  The expected behavior is that it will return a string like "xyz:123" once, cache that value, and after that keep returning the same result.  It doesn't.  You get a new result every time.  My first thought was that 'httpRequest:/params' is always expired, which would prevent something dependent on it from getting cached.  So I tried instead&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;context.source("httpRequest:/params");&lt;br/&gt;response=context.createResponseFrom("xyz:"+Math.round(Math.random()*1000));&lt;br/&gt;response.setExpiry(response.EXPIRY_NEVER);&lt;br/&gt;context.setResponse(response);&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;But the result is the same - a new random number every time.  I checked with the visualizer, and the uppermost resource indicates that it is not expired, yet it is not retrieved from cache.  And the representation cache shows many instances of the same resource.&lt;br/&gt;&lt;br/&gt;So what's going on?  Does any access of http request parameters simply render a request completely non-cacheable, counter to both reasonable expectations and an explicit declaration that it is cacheable forever?&lt;/div&gt;</description><pubDate>Thu, 11 Mar 2010 08:41:00 GMT</pubDate></item><item><title>Request Clone - Change URI</title><link>http://www.1060.org/forum/entry/2444</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2444</guid><description>&lt;div&gt;There is no immediate need given your suggested work around (Thank you). &lt;br/&gt;&lt;br/&gt;The scenario is when you want to fork a process into separate threads of work (via subrequests) and you want to clone the existing requests (verb, parameters, headers, primary representation) but obviously just need to change the URI. &lt;/div&gt;</description><pubDate>Sun, 07 Mar 2010 16:51:00 GMT</pubDate></item><item><title/><link>http://www.1060.org/forum/entry/2443</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2443</guid><description>&lt;div&gt;Hi Jeremy,&lt;br/&gt;yes it could. The INKFRequest interface used to have a setIdentifier() method but that was removed because of the issues wrt to constructing requests targeting endpoints and the valid that does against the endpoint interface specification. Your suggested method of:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;INKFRequest INKFRequestReadOnly.createIssuableClone(String aIdentifier)&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;would work. What are you timescales for needed this enhancement? As a workaround you can use the code inside the method to achieve the same result:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;NKFRequestImpl req= (NKFRequestImpl)mContext.createRequest(this.getIdentifier());&lt;br/&gt;req.setVerb(this.getVerb());&lt;br/&gt;req.setRepresentationClass(this.getRepresentationClass());&lt;br/&gt;INKFResponseReadOnly primaryResponse = this.getPrimaryAsResponse();&lt;br/&gt;if (primaryResponse!=null)&lt;br/&gt;{   req.addPrimaryArgumentFromResponse(primaryResponse);&lt;br/&gt;}&lt;br/&gt;IRequestResponseFields headers=mRequest.getHeaders();&lt;br/&gt;for (int i=0; i&amp;lt;headers.size(); i++)&lt;br/&gt;{   req.setHeader(headers.getKey(i), headers.getValue(i), headers.isSticky(i));&lt;br/&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;Cheers, Tony&lt;/div&gt;</description><pubDate>Sun, 07 Mar 2010 15:21:00 GMT</pubDate></item><item><title>NetKernel News Volume 1 Issue 17</title><link>http://www.1060.org/forum/entry/2442</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2442</guid><description>&lt;div&gt;[This was posted to the mailing list 1 week ago]&lt;br/&gt;&lt;br/&gt;What's new?  A series of enhancements to detect and prevent commission-time space circularities.  Detailed analysis of the insides of the Portal application.&lt;br/&gt;&lt;br/&gt;NKSE Repository&lt;br/&gt;&lt;br/&gt;NetKernel uses the ROC abstraction to bootstrap the commissioning of address spaces.  The dynamic import capability means that spaces can be commissioned and discovered in any order.  In architectures with multiple tiers of dynamic import it is therefore possible to have very exotic discovery.  To prevent recursive behaviour there is circularity detection at commission time.  The following enhancements were made...&lt;br/&gt;&lt;br/&gt;layer0:   detection and stable handling of misconfigured modules containing circular dependencies. Fix to HDSUtils.inOrderTraversalNext()&lt;br/&gt;&lt;br/&gt;standard-module: Fixes to startup stability during space commission of certain multiple tiered dynamic import spacial configurations.&lt;br/&gt;&lt;br/&gt;layer1: Changed hds aggregate/simple dynamic import to avoid circular dependencies.&lt;br/&gt;&lt;br/&gt;Other changes...&lt;br/&gt;&lt;br/&gt;kernel: changed some interfaces to enable thread profiling&lt;br/&gt;&lt;br/&gt;nkse-control-panel: added pds config so that it doesn't rely on finding another in fulcrum&lt;br/&gt;&lt;br/&gt;http-server:  Just when you think you've got Jetty's encoding sorted out you launch a portal and get someone registering with an umlaut in their name.  Turns out, that last week we fixed the encoding when Jetty was guessing, but now find that when the client is well behaved (JQuery AJAX) and provides the encoding on the Content-Type header, then Jetty actually uses it correctly and mangling is not needed.  So this week we trapped this corner case too and relaxed the mangling.  (Thanks to  Thomas).&lt;br/&gt;&lt;br/&gt;lang-xrl:  Documentation typos fixed.&lt;br/&gt;&lt;br/&gt;NKEE Repo&lt;br/&gt;&lt;br/&gt;All of the above NKSE updates are available in the NKEE 4.0.0 preview-3.1 repository along with a feature enhancement...&lt;br/&gt;&lt;br/&gt;nkee-dev-tools:  Enhanced health check, now provides a space integrity check and reporting tool.&lt;br/&gt;&lt;br/&gt;Portal Architecture&lt;br/&gt;&lt;br/&gt;We've had some great feedback from people trying out the portal - we think we've fixed all the issues that were reported to us - so we'll be going public next week.  If you've not tried it you can get to it (and join) here...&lt;br/&gt;&lt;br/&gt;https://cs.1060research.com/csp/&lt;br/&gt;&lt;br/&gt;We thought it would be interesting to provide some deep and detailed statistics of this codebase now that its in production.  A high-level architectural overview is available here...&lt;br/&gt;&lt;br/&gt;http://resources.1060research.com/docs/2010/02/CSPPortalArch.pdf&lt;br/&gt;&lt;br/&gt;It shows the outline of the portlet pattern we're using and shows how we actually have a double level architecture - there is a second "1060-in-house" portal that dynamically imports a large set of 1060 portlets (70% of the system is "dark-matter" in house stuff).  The 1060 portal is itself deployed as a portlet into the main services portal! Not shown are the infrastructural components: virtual host space, async HTTP transport, throttle, sessions, double-gatekeepers, decorating XRL template wrapper.&lt;br/&gt;&lt;br/&gt;We've had a number of people asking if we can talk through the design in detail.  So we'll host a webmeeting session for a deep dive through the code, as well as tour of the dark matter side of the system.  Send us a support ticket expressing your interest and we'll arrange a time that covers the most timezones.&lt;br/&gt;&lt;br/&gt;Finally some statistics, the following spreadsheet provides a very detailed analysis of the code, static resources, database, spacial topologies and development time...&lt;br/&gt;&lt;br/&gt;http://resources.1060research.com/docs/2010/02/CSP-analysis.ods&lt;br/&gt;http://resources.1060research.com/docs/2010/02/CSP-analysis.xls&lt;br/&gt;&lt;br/&gt;A few extracts:&lt;br/&gt;&lt;br/&gt;* There are 14 modules to the solution deployed from a custom application repository with hot-updates&lt;br/&gt;* There are 33 rootspaces with a further 38 spaces contained within.&lt;br/&gt;* There are 192 application channels (= distinct REST/URL interfaces) of which 64 are AJAX micro-services (we use JQuery).&lt;br/&gt;* There are 145 custom accessors all of which are written in groovy with the mapper used to bind them to the address space grammar.&lt;br/&gt;* There are 49 tables in the RDBMS&lt;br/&gt;* There are 1182 unique points where requests are issued.&lt;br/&gt;* The average number of requests per application channel is 6.&lt;br/&gt;* The average NetKernel response time (transport request to transport response) per channel is 10ms (network and browser rendering latency dominate) (The NKEE visualizer provides high resolution/high granularity request timing data).&lt;br/&gt;* It took 1 person (guess who) 288 hours to develop with a 50:50 split between data model development (working out just what we needed and developiong the DB schema) and actual physical "coding" (144hrs - spacial architecture, pattern implementation, implementing channels, cutting resource endpoints).&lt;br/&gt;* The development rate translates to about 8 endpoints per hour.&lt;br/&gt;* The system was written from scratch since the start of this year.&lt;br/&gt;* This week in production it has taken an average 5 minutes end-to-end to fix a bug, cut an update, deploy to repository, sync and deploy to production.(NKEE has ARP a repo building tool which you can do the same with).&lt;br/&gt;&lt;br/&gt;********&lt;br/&gt;Advertorial Alert: We are available to solve your problems. No job too small (after all, with ROC most jobs are small). Great rates and access to the horses mouth (is that a benefit?).&lt;br/&gt;********&lt;br/&gt;&lt;br/&gt;ROC News&lt;br/&gt;&lt;br/&gt;Randy Kahle will be speaking at the Denver Open Source group meeting on Tuesday next week:&lt;br/&gt;&lt;br/&gt;http://denveropensource.org/upcoming&lt;br/&gt;&lt;br/&gt;Still no time to blog - sorry.&lt;br/&gt;&lt;br/&gt;Have a great weekend!&lt;br/&gt;&lt;br/&gt;The 1060 Team&lt;/div&gt;</description><pubDate>Sun, 07 Mar 2010 13:32:00 GMT</pubDate></item><item><title>Request Clone - Change URI</title><link>http://www.1060.org/forum/entry/2441</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2441</guid><description>&lt;div&gt;The API allows you to clone the existing request and update the verb.&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;INKFRequest request =  context.getThisRequest().getIssuableClone();&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;But the does not allow you to change the URI. Could this be added to the API?&lt;br/&gt;For example:&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;String uri = "res:/blah/foo"&lt;br/&gt;INKFRequest request =  context.getThisRequest().getIssuableClone(uri)&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description><pubDate>Sun, 07 Mar 2010 02:11:00 GMT</pubDate></item><item><title>NetKernel News Volume 1 Issue 16</title><link>http://www.1060.org/forum/entry/2440</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2440</guid><description>&lt;div&gt;Hi ROCers,&lt;br/&gt;&lt;br/&gt;What's new this week?  Several performance optimizatons including a 40% faster kernel.  Some optimization updates to core modules.&lt;br/&gt;&lt;br/&gt;NKSE Repository Updates&lt;br/&gt;-----------------------&lt;br/&gt;&lt;br/&gt;kernel:  We are preparing an NKperf system benchmarking tool. This work resulted in some enhancements to the kernel (the first significant changes for nearly 2 years).  Firstly we removed a very narrow, but potential, race condition when receiving an asynchronous exception response - we'd never seen this but its fixed anyway.&lt;br/&gt;&lt;br/&gt;The second update is a redesigned data structure for the scheduler request queue - this eliminates a Java level contention that limited throughput (especially with asnyc requests).  Net result of these changes is that the kernel is faster, for async requests this can be up to 40% in some scenarios.&lt;br/&gt;&lt;br/&gt;layer0: removed synchronization from RegexRewriteRule this improves concurrent throughput of the http bridge and filesets indirectly.&lt;br/&gt;&lt;br/&gt;standard module: fix to overlay base classes to enable metadata for non-absolute logical endpoint identifiers to be resolved correctly. For example. this update eliminates the possibility of prototype discovery failure inside a mapper.&lt;br/&gt;&lt;br/&gt;http-server:  Another performance enhancement, we increased throughput of http sessions by optimising stale session reaping.&lt;br/&gt;&lt;br/&gt;nkse-control-panel: made endpoints threadsafe to increase throughput.&lt;br/&gt;&lt;br/&gt;system-core services: updated to account for kernel changes&lt;br/&gt;&lt;br/&gt;nkse-unit-tests: updated with tests for new kernel etc.&lt;br/&gt;&lt;br/&gt;layer1: active:exec accessor fixed stderr processing and has improved documentation.&lt;br/&gt;&lt;br/&gt;nkse-docs:  Javadoc generation now works again after a screw up when we removed a cross-package dependency last week.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Short and sweet this week but lots of stuff will break cover next week. Watch this space...&lt;/div&gt;</description><pubDate>Thu, 25 Feb 2010 19:10:00 GMT</pubDate></item><item><title>NetKernel News Volume 1 Issue 15</title><link>http://www.1060.org/forum/entry/2439</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2439</guid><description>&lt;div&gt;Hi ROCers,&lt;br/&gt;&lt;br/&gt;What's new this week?  Refinements to the request nesting feature in NKF, tweaks to http-client and server, a few minor fixes.  The first appearance of NetKernel Enterprise Edition preview 2 and NKEE repository.  CSP updates.&lt;br/&gt;&lt;br/&gt;NKSE Repository Updates&lt;br/&gt;-----------------------&lt;br/&gt;&lt;br/&gt;layer0 - refinement to request nesting to make scope of inner request follow the scope of the outer request when using mapper to define wrapped request chains.&lt;br/&gt;&lt;br/&gt;http-client - now exports its Apache commons http classes.&lt;br/&gt;&lt;br/&gt;http-server - Session overlay now has a configuration option to set the name of the Cookie to use for correlating the session.&lt;br/&gt;&lt;br/&gt;layer1 - the BinaryStream2String transreptor now handles streams that don't report their length.&lt;br/&gt;&lt;br/&gt;nkse-dev-tools - control panel search indexer updated, granularity of the request throughput chart was enhanced.&lt;br/&gt;&lt;br/&gt;visualizer - a fix was made to prevent possible NPEs when saving a visualizer trace.&lt;br/&gt;&lt;br/&gt;nkse-control-panel - now eliminates dependencies in the search results when they are not local resources.&lt;br/&gt;&lt;br/&gt;CSP&lt;br/&gt;---&lt;br/&gt;We're still in pre-release testing but getting close to a public launch.  For those who are in the test programme there are two new portlets...&lt;br/&gt;&lt;br/&gt;A wiki portlet has been added. So now every project has a shared team wiki. A license portlet has been added for license management&lt;br/&gt;&lt;br/&gt;https://cs.1060research.com/csp/&lt;br/&gt;&lt;br/&gt;NetKernel Enterprise Edition - Preview 2&lt;br/&gt;----------------------------------------&lt;br/&gt;We've started a limited access programme for NKEE preview 2 with a corresponding long-term enterprise repository.  Once initial shakedown is complete we'll be widening access and sending out invitations to join the portal and get hold of the NKEE release.&lt;br/&gt;&lt;br/&gt;ROC News&lt;br/&gt;--------&lt;br/&gt;Sorry - we've been flat out to get NKEE ready so too busy to blog.  Next week! Promise!&lt;br/&gt;&lt;br/&gt;Have a great weekend!&lt;br/&gt;&lt;br/&gt;The 1060 Team&lt;/div&gt;</description><pubDate>Thu, 25 Feb 2010 19:09:00 GMT</pubDate></item><item><title>NetKernel News Volume 1 Issue 14</title><link>http://www.1060.org/forum/entry/2438</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2438</guid><description>&lt;div&gt;Hi ROCers,&lt;br/&gt;&lt;br/&gt;What's new this week?  Plenty of updates, mostly enhancements - such as better search results etc.&lt;br/&gt;&lt;br/&gt;Probably the most important new feature is an enhancement to NKF and declarative requests to support request chaining.  This enables lazy evaluation of functional f(g(x)) style requests and introduces the potential of "micro-overlay" patterns.&lt;br/&gt;&lt;br/&gt;Repository Updates&lt;br/&gt;------------------&lt;br/&gt;&lt;br/&gt;The following packages are updated in the repository - to update use Apposite-&amp;gt;admin-&amp;gt;sync then look at packages and "install all updates".&lt;br/&gt;&lt;br/&gt;http-server: Thanks to Miles, Jeff and Menzo's diligence it was discovered that Jetty 6.1.x has been repeatedly changing its mind between release versions about what it thinks the default content encoding of a POST should be.  To take control we've added a configuration property that will allow you to definitively set this for an individual transport instance...&lt;br/&gt;&lt;br/&gt;&amp;lt;config&amp;gt;&lt;br/&gt;...&lt;br/&gt;&amp;lt;defaultPostParamEncoding&amp;gt;UTF-8&amp;lt;/defaultPostParamEncoding&amp;gt;&lt;br/&gt;&amp;lt;/config&amp;gt;&lt;br/&gt;&lt;br/&gt;If this parameter is not set we ensure that the NK default is always UTF-8 - we've introduced a trick to convert Jetty's "flavour of the day" when necessary.&lt;br/&gt;&lt;br/&gt;layer0:&lt;br/&gt;&lt;br/&gt;When transrepting a binary stream XML resource to HDS, the SAX handler now correctly deals with namespaces and, like with the existing DOM to HDS, represents the XML in the HDS tree.&lt;br/&gt;&lt;br/&gt;The module change detection now recommissions dependent modules even when they have no public spaces.  This update resolves the Cookie class cast on http-server update problem from last week - it turned out that the Fulrcums were not being recommissioned since they had private spaces.&lt;br/&gt;&lt;br/&gt;NKF f(g(x)) request nesting - requests can now be added as first class arguments on a constructed request.  Therefore it is now possible to create lazily evaluated request chains similar to how DPML's lazy evaluation model works.  This enhancement to NKF enables a raft of new patterns - for example, with it, you can now create a local wrapper function around any endpoint without needing the static structure of overlay's and nested spaces.  In short you can do micro-overlays.  Tony has promised to blog in detail about this new capability (but you know what that means).&lt;br/&gt;&lt;br/&gt;For completeness, the declarative request also supports nested requests - so you can create overlays just using the mapper alone.&lt;br/&gt;&lt;br/&gt;nkse-control-panel:&lt;br/&gt;&lt;br/&gt;Added indexing/resolving to control panels - so that they come up in searches.&lt;br/&gt;&lt;br/&gt;nkse-cron:  A fix to the control panel so that buttons work properly. The onclick() events had stopped working after changes to the control panel  rendering (lesson here, watch out for attribute case sensitivity with XHTML).&lt;br/&gt;&lt;br/&gt;nkse-dev-tools:&lt;br/&gt;&lt;br/&gt;Class trace tool now works for modules with no public spaces (eg Fulcrums).&lt;br/&gt;&lt;br/&gt;nkse-docs:&lt;br/&gt;&lt;br/&gt;Updated with better glossary and more keywords to help search.  Doc indexing was also tweaked so that the book name is shown in a search result - to provide better search context.&lt;br/&gt;&lt;br/&gt;nkse-visualizer:&lt;br/&gt;&lt;br/&gt;Primary arguments (ie SINK or TRANSREPT payloads) are now captured and visible for inspection.&lt;br/&gt;&lt;br/&gt;pds-core:&lt;br/&gt;&lt;br/&gt;Tweak to error messages so that you can see the zone if you have a resolution failure.&lt;br/&gt;&lt;br/&gt;NetKernel Servlet Beta 2&lt;br/&gt;------------------------&lt;br/&gt;&lt;br/&gt;A Beta 2 update version of the The Servlet embedded version of NetKernel is available incorporating some compatibility tweaks based on user feedback.  We're still looking for feedback and coverage in containers.&lt;br/&gt;&lt;br/&gt;Download it here...&lt;br/&gt;&lt;br/&gt;http://resources.1060research.com/aux/nkse/4/servlet/beta/netkernel-servlet-beta-2.zip&lt;br/&gt;&lt;br/&gt;The solution is self-contained and includes a complete NKSE system ready to go within a servlet environment.&lt;br/&gt;&lt;br/&gt;There are three files in this distribution, netkernelservlet.jar, web.jar and timeservice.war. The timeservice.war file is a complete ready-to-use web application which implements a RESTful time web service.&lt;br/&gt;&lt;br/&gt;The netkernelservlet.jar file contains the NetKernel Servlet. This is a traditional servlet that can be installed in the WEB-INF/lib/ directory of a web application and configured in the web.xml&lt;br/&gt;&lt;br/&gt;A detailed installation and usage guide is provided here...&lt;br/&gt;&lt;br/&gt;http://resources.1060research.com/aux/nkse/4/servlet/beta/servlet-documentation.pdf&lt;br/&gt;&lt;br/&gt;1060 CSP Testing&lt;br/&gt;----------------&lt;br/&gt;&lt;br/&gt;We've started public testing of the new Customer Services Portal (CSP).  We'll be progressively broadening access over the next week or so, after which we will declare it officially open.  Thanks very much to our early access users for their feedback.&lt;br/&gt;&lt;br/&gt;Production tip: We discovered during the staging cycle that updating the Sun JVM to the most recent 1.6.18 build has solved a lot of GC segfault bugs we were seeing on the 64bit linux JVM.&lt;/div&gt;</description><pubDate>Thu, 25 Feb 2010 19:08:00 GMT</pubDate></item><item><title>Yes!</title><link>http://www.1060.org/forum/entry/2437</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2437</guid><description>&lt;div&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt; &lt;tr&gt;&lt;td&gt;&lt;div class="forum-quote"&gt;In addition, if I defined an pluggable overlay in a module (urn:infrastructure:overlay) and wrapped all my other modules in that space, could I then dynamically import the overlay into the front-end fulcrum rather than dynamically importing each of the wrapped modules?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Yes you certainly can. That is a good way to achieve the result you want. The control panel uses that pattern to ensure each tool gets wrapped with a template.&lt;br/&gt;&lt;br/&gt;Tony&lt;/div&gt;</description><pubDate>Tue, 23 Feb 2010 12:10:00 GMT</pubDate></item><item><title/><link>http://www.1060.org/forum/entry/2436</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2436</guid><description>&lt;div&gt;Hi, the pluggable overlay only supports a single preProcess and/or postProcess. There are three ways to achieve the pipes&amp;amp;filters pattern. &lt;br/&gt;&lt;br/&gt;Firstly you can use the branch-merge accessor which instantiates a set of pipes for different subsets of the address space and channels all request/responses through a set of overlays. This is the best approach if you have lots of logical channels which want different overlay behaviours.&lt;br/&gt;&lt;br/&gt;Secondly you can just nest pluggable overlays in the module definition. This is simplest if every request wants the same behaviour (I think this is what you need for this example)&lt;br/&gt;&lt;br/&gt;Thirdly you can created nested requests using the new nested request capability of declarative request. This approach doesn't use overlays so it a more dynamic but might not be suitable for your example.&lt;br/&gt;&lt;br/&gt;Tony&lt;/div&gt;</description><pubDate>Tue, 23 Feb 2010 12:08:00 GMT</pubDate></item><item><title>Pluggable Overlay Questions - Pipes &amp; Filter &amp; Dynamic HTTP Fulcrum Import</title><link>http://www.1060.org/forum/entry/2435</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2435</guid><description>&lt;div&gt;This is example is taken from the REST tutorial.&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;    &amp;lt;pluggable-overlay&amp;gt;&lt;br/&gt;      &amp;lt;preProcess&amp;gt;&lt;br/&gt;        &amp;lt;identifier&amp;gt;active:java&amp;lt;/identifier&amp;gt;&lt;br/&gt;        &amp;lt;argument name="class"&amp;gt;tutorial.rest.part4.part4b.HTTPVerbTranslationAccessor&amp;lt;/argument&amp;gt;&lt;br/&gt;        &amp;lt;argument name="request"&amp;gt;arg:request&amp;lt;/argument&amp;gt;&lt;br/&gt;      &amp;lt;/preProcess&amp;gt;&lt;br/&gt;      &amp;lt;space&amp;gt;&lt;br/&gt;        &amp;lt;mapper&amp;gt;&lt;br/&gt;          &amp;lt;config&amp;gt;res:/tutorial/rest/part4/part4b/mapperConfig.xml&amp;lt;/config&amp;gt;&lt;br/&gt;          &amp;lt;space&amp;gt;&lt;br/&gt;            &amp;lt;fileset&amp;gt;&lt;br/&gt;              &amp;lt;regex&amp;gt;res:/tutorial/rest/part4/part4b/.*&amp;lt;/regex&amp;gt;&lt;br/&gt;            &amp;lt;/fileset&amp;gt;&lt;br/&gt;            &amp;lt;import&amp;gt;&lt;br/&gt;              &amp;lt;uri&amp;gt;urn:org:netkernel:ext:layer1&amp;lt;/uri&amp;gt;&lt;br/&gt;            &amp;lt;/import&amp;gt;&lt;br/&gt;          &amp;lt;/space&amp;gt;&lt;br/&gt;        &amp;lt;/mapper&amp;gt;&lt;br/&gt;      &amp;lt;/space&amp;gt;&lt;br/&gt;    &amp;lt;/pluggable-overlay&amp;gt;&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Can a pluggable overlay have many pre-processors (Pipes &amp;amp; Filters pattern)? In other words could I add another audit pre-process and it would be called next (with the results from the first pre-process) before calling the wrapped space?&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;    &amp;lt;pluggable-overlay&amp;gt;&lt;br/&gt;      &amp;lt;preProcess&amp;gt;&lt;br/&gt;        &amp;lt;identifier&amp;gt;active:java&amp;lt;/identifier&amp;gt;&lt;br/&gt;        &amp;lt;argument name="class"&amp;gt;tutorial.rest.part4.part4b.HTTPVerbTranslationAccessor&amp;lt;/argument&amp;gt;&lt;br/&gt;        &amp;lt;argument name="request"&amp;gt;arg:request&amp;lt;/argument&amp;gt;&lt;br/&gt;      &amp;lt;/preProcess&amp;gt;&lt;br/&gt;      &amp;lt;preProcess&amp;gt;&lt;br/&gt;        &amp;lt;identifier&amp;gt;active:java&amp;lt;/identifier&amp;gt;&lt;br/&gt;        &amp;lt;argument name="class"&amp;gt;tutorial.rest.part4.part4b.AuditAccessor&amp;lt;/argument&amp;gt;&lt;br/&gt;        &amp;lt;argument name="request"&amp;gt;arg:request&amp;lt;/argument&amp;gt;&lt;br/&gt;      &amp;lt;/preProcess&amp;gt;&lt;br/&gt;      &amp;lt;space&amp;gt;&lt;br/&gt;        &amp;lt;mapper&amp;gt;&lt;br/&gt;          &amp;lt;config&amp;gt;res:/tutorial/rest/part4/part4b/mapperConfig.xml&amp;lt;/config&amp;gt;&lt;br/&gt;          &amp;lt;space&amp;gt;&lt;br/&gt;            &amp;lt;fileset&amp;gt;&lt;br/&gt;              &amp;lt;regex&amp;gt;res:/tutorial/rest/part4/part4b/.*&amp;lt;/regex&amp;gt;&lt;br/&gt;            &amp;lt;/fileset&amp;gt;&lt;br/&gt;            &amp;lt;import&amp;gt;&lt;br/&gt;              &amp;lt;uri&amp;gt;urn:org:netkernel:ext:layer1&amp;lt;/uri&amp;gt;&lt;br/&gt;            &amp;lt;/import&amp;gt;&lt;br/&gt;          &amp;lt;/space&amp;gt;&lt;br/&gt;        &amp;lt;/mapper&amp;gt;&lt;br/&gt;      &amp;lt;/space&amp;gt;&lt;br/&gt;    &amp;lt;/pluggable-overlay&amp;gt;&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;In addition, if I defined an pluggable overlay in a module (urn:infrastructure:overlay) and wrapped all my other modules in that space, could I then dynamically import the overlay into the front-end fulcrum rather than dynamically importing each of the wrapped modules? &lt;/div&gt;</description><pubDate>Mon, 22 Feb 2010 13:39:00 GMT</pubDate></item><item><title>NK4.0.2 (updated as of 2/19/2010) on Windows XP</title><link>http://www.1060.org/forum/entry/2434</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2434</guid><description>&lt;div&gt;Grammar:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;grammar&amp;gt;&lt;br/&gt;    &amp;lt;group&amp;gt;&lt;br/&gt;        res:/cogito/business/employee/&lt;br/&gt;        &amp;lt;group name="employeeID"&amp;gt;&amp;lt;regex type="alphanum"/&amp;gt;&amp;lt;/group&amp;gt;&lt;br/&gt;        &amp;lt;regex type="anything"/&amp;gt;&lt;br/&gt;    &amp;lt;/group&amp;gt;&lt;br/&gt;&amp;lt;/grammar&amp;gt;&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;Target URI: &lt;br/&gt;&lt;a href="res:/cogito/business/employee/1234" target="_new"&gt;res:/cogito/business/employee/1234&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Each time I parse this URI using the grammar above ever increasing white-pace is added.&lt;/div&gt;</description><pubDate>Mon, 22 Feb 2010 13:23:00 GMT</pubDate></item><item><title/><link>http://www.1060.org/forum/entry/2433</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2433</guid><description>&lt;div&gt;Hi Jeremy, I can't reproduce this. I remember the grammar kitchen used to have this issue for me but it was fixed a while back. What platform/browser are you using? And can you give me an example grammar?&lt;br/&gt;&lt;br/&gt;Cheers, Tony&lt;/div&gt;</description><pubDate>Mon, 22 Feb 2010 11:36:00 GMT</pubDate></item><item><title/><link>http://www.1060.org/forum/entry/2432</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2432</guid><description>&lt;div&gt;Hi Jeremy sorry about the sparseness of the documentation for JMS still it's great that you found the answer in the source code. We are going to be having another round of documentation refinement soon which will increase the coverage of reference documentation.&lt;br/&gt;&lt;br/&gt;The HDS you've found will transrept to XML. What the transreptor does in this case is insert a &amp;lt;hds&amp;gt; root node so you end up with this:&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-xml"&gt;&lt;div class="xmlverb-default codeblock"&gt;&amp;lt;&lt;span class="xmlverb-element-name"&gt;hds&lt;/span&gt;&amp;gt;&lt;br/&gt;  &amp;lt;&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;span class="xmlverb-text"&gt;value&lt;/span&gt;&amp;lt;/&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;br/&gt;  &amp;lt;&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;span class="xmlverb-text"&gt;value&lt;/span&gt;&amp;lt;/&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;br/&gt;  &amp;lt;&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;span class="xmlverb-text"&gt;value&lt;/span&gt;&amp;lt;/&lt;span class="xmlverb-element-name"&gt;name&lt;/span&gt;&amp;gt;&lt;br/&gt;&amp;lt;/&lt;span class="xmlverb-element-name"&gt;hds&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description><pubDate>Mon, 22 Feb 2010 11:25:00 GMT</pubDate></item><item><title/><link>http://www.1060.org/forum/entry/2431</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2431</guid><description>&lt;div&gt;Hi Jeremy, good question! We don't discussion the tradeoffs much in the documentation. The design intent of HDS is to be a lightweight replacement for DOM based XML (which DOMXDA is a wrapper for) for representing hierarchical data. That has always been the most common usage of XML in processing with NetKernel. It allows random access to the structure and is much lighter weight in terms of memory and processing time than DOM because it has less complexity and corner cases. It also allows for the carriage of POJOs rather than strings. HDS is also immutable which is a big positive too. HDS supports forests! Not a statement about it's green credentials but rather it's ability to have more than one root node - this makes it useful for representing lists.&lt;br/&gt;&lt;br/&gt;There are two negatives with HDS vs. DOM XML which may or may not be an issued depending up what you are doing. Firstly HDS doesn't support full XPath so you need build up expressions using a combination of the simple path selection XPath subset it does support and the HDSPredicate based filtering. You can do most stuff with this but if you do need complex expressions you'd be better off using DOM. The second negative is that it isn't designed for representing documents with mixed content, basically each node in the tree has a single value, not values dispersed with children.&lt;br/&gt;&lt;br/&gt;Yes transreptors exists to convert between XML and HDS. Most permutations are covered.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Tony&lt;/div&gt;</description><pubDate>Mon, 22 Feb 2010 11:20:00 GMT</pubDate></item><item><title>NK4.0.2: JMS Transport Documentation</title><link>http://www.1060.org/forum/entry/2430</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2430</guid><description>&lt;div&gt;In the JMS Transport Documentation&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt; &lt;tr&gt;&lt;td&gt;&lt;div class="forum-quote"&gt;/book/view/book:tpt:jms/doc:tpt:jms:transport&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;it is stated that the header and properties can be sourced from the context as HDS or XML. But an example of the XML is not provided. I had to unpack urn.org.netkernel.tpt.jms-0.3.0.jar to see that it is valid HDS but not well formed XML (no root element):&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;HDSBuilder b=new HDSBuilder();&lt;br/&gt;      for (Enumeration e=aMessage.getPropertyNames(); e.hasMoreElements(); )&lt;br/&gt;      {   String propertyName = (String)e.nextElement();&lt;br/&gt;         String propertyValue = aMessage.getStringProperty(propertyName);&lt;br/&gt;         b.addNode(propertyName, propertyValue);&lt;br/&gt;      }&lt;br/&gt;      properties=b.getRoot();&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;The code above produces:&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;name&amp;gt;value&amp;lt;/name&amp;gt;&lt;br/&gt;&amp;lt;name&amp;gt;value&amp;lt;/name&amp;gt;&lt;br/&gt;&amp;lt;name&amp;gt;value&amp;lt;/name&amp;gt;&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Which I believe would fail if you attempted to source this as a document.&lt;/div&gt;</description><pubDate>Sun, 21 Feb 2010 22:21:00 GMT</pubDate></item><item><title>NK4.0.2: HDS vs XDA</title><link>http://www.1060.org/forum/entry/2429</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2429</guid><description>&lt;div&gt;What is the relationship between HDS and XDA (e.g. immutable/mutable, performance/flexibility)? &lt;br/&gt;&lt;br/&gt;And is there automatic transrepretion between the two? &lt;br/&gt;&lt;br/&gt;For example an overlay may would use HDS to XML log data but the ultimate endpoint might use XDA to modify the XML values.&lt;/div&gt;</description><pubDate>Fri, 19 Feb 2010 20:53:00 GMT</pubDate></item><item><title>Grammar Kitchen Issue (NK4.0.2)</title><link>http://www.1060.org/forum/entry/2428</link><guid isPermaLink="true">http://www.1060.org/forum/entry/2428</guid><description>&lt;div&gt;Every time I parse grammar it adds unnecessary white space between each of the elements. This makes iteratively building grammar a pain.&lt;/div&gt;</description><pubDate>Thu, 18 Feb 2010 16:57:00 GMT</pubDate></item></channel></rss>