resource-oriented computing w/ netkerneljava.ociweb.com › javasig › knowledgebase › 2008-01...
TRANSCRIPT
![Page 1: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/1.jpg)
Resource-Oriented Computing w/ NetKernel :
Software forthe 21st Century
Brian SlettenZepheira, [email protected]
![Page 2: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/2.jpg)
Speaker Qualifications
Over 14 years of software development experience
Has own software consulting company for design, mentoring, training and development
Currently working in Semantic Web, AOP, Grid Computing, P2P and security consulting
Pinky Committer
![Page 3: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/3.jpg)
Agenda
What the heck is NetKernel?
Why We Care
NetKernel Overview
NetKernel Languages
Advanced Concepts
Pinky
![Page 4: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/4.jpg)
What the heck is NetKernel?
A micro-kernel based resource ecosystem built around the principles of REST, Unix Pipes and SOA
![Page 5: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/5.jpg)
Why We Care: The Simple Answer
Most enterprise systems use XML and are built in Java and this is still too much of a pain
Complicated
Different Languages for different technologies
Predicting scalability
![Page 6: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/6.jpg)
Why We Care : The Complicated Answer
This is hard because of a general mismatch at the intersection of languages, data model, processing abstractions, architectural tiers, etc.
![Page 7: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/7.jpg)
Larger Trends
1970s 1980s 1990s 2000s
Code written
Dataformatted
![Page 8: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/8.jpg)
NetKernel
A Ground-Up Resource-oriented computing environment
Modern, microkernel architecture
Takes the best of REST, Unix Pipes, SOA
Open Source w/ Dual License for non-open source uses
![Page 9: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/9.jpg)
Resource-Oriented Computing
Everything is a Resource
Everything is URI-Addressable (logical reference)
“Computation” is the turning of logical resource references into physical representation
Lossless conversion between representations
![Page 10: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/10.jpg)
REST
Representational State Transfer
Architectural style described in Roy Fielding’s Ph.D. thesis
URLs locate resources in Internet-sized address spaces
Client passes all state in request
![Page 11: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/11.jpg)
History of Addressing
Network
-----
-----
-----
Documents
http://myserver.com/docs/reports/3rdQtr/
![Page 12: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/12.jpg)
History of Addressing
Network
Data
http://myserver.com/data/graph/1
![Page 13: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/13.jpg)
History of Addressing
Network
Service A
Services
http://myserver.com/service/a
![Page 14: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/14.jpg)
URLs ! => Scalability
Addressability of the resources is important, but REST derives its properties from the architectural constraints
![Page 15: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/15.jpg)
REST Properties
![Page 16: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/16.jpg)
Unix Influences
Everything is a file (common interface/resource abstraction)
Small, focused, reusable tools
Tools are scripted
Processes have context from environment
![Page 17: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/17.jpg)
SOA Influences
Loosely-coupled
Asynchronous requests
Reusable services composed through orchestration languages
![Page 18: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/18.jpg)
Putting the Kernel in NetKernel
Internally, a microkernel manages threading resources
Maps URI requests to managed resources and schedules them
![Page 19: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/19.jpg)
General Concept
![Page 20: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/20.jpg)
Calling a BeanShell Script
![Page 21: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/21.jpg)
XQuery
![Page 22: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/22.jpg)
XSLT
![Page 23: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/23.jpg)
Active URIs
Internally, NetKernel uses a special URI naming scheme
A proposed IETF standard by HP and 1060 Research to encode complex URIs into standard forms
General formactive:<processURI>*(+<inputName>@<inputURI>)
http://ietf.mirror.netmonic.com/draft-butterfield-active-uri-01.txt
![Page 24: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/24.jpg)
Sample Active URIs
BeanShell
active:[email protected][email protected]
XQuery
active:[email protected][email protected]
active:[email protected][email protected]
XSLT
![Page 25: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/25.jpg)
NetKernel Benefits
“Deep” REST environment
Appropriate abstractionsFocus on information, not code!
Layered approach to building applications
Logical connections/requests get resolved at runtime (late-binding)
![Page 26: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/26.jpg)
NetKernel Properties
Fine-grained caching
Self-optimizing based on use
“Aspect-Oriented” architecture
Security, logging, etc. behind URI interception
Tiny Footprint
Can do “real” work in a VM w/ 10-12MB
Takes full advantage of multi-core, multi-CPU boxes
![Page 27: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/27.jpg)
Basic NetKernel Tour
![Page 28: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/28.jpg)
NetKernel Concepts(aka Really Cool Terms)
Accessors
Transports
Representations
Aspects
Transreptors
![Page 29: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/29.jpg)
Accessors
URI-addressable component that provides access to NetKernel resources and services
![Page 30: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/30.jpg)
Transport
A component that funnels requests from external sources into NetKernel URI requests (and ultimately Accessors)
ExamplesHTTP
SMTP
JMS
![Page 31: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/31.jpg)
Representations
The ‘R’ in REST
In NetKernel, an object representing the resource
Exposed via immutable, cacheable “views”
![Page 32: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/32.jpg)
Aspects
Not AOP “Aspects”
Immutable views of the underlying representation in a given form
ExamplesJDOM, DOM, String, BinaryStream
![Page 33: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/33.jpg)
Transreptors
Fancy term for “transforming representations”
Transreptors return a resource in a specified form if conversion is possible
Useful for converting between Aspects
![Page 34: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/34.jpg)
NetKernelLanguages
![Page 35: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/35.jpg)
DPML
A simple NetKernel scripting language for specifying URI requests
Supports conditionals, loops, subroutines, etc.
![Page 36: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/36.jpg)
DPML Sample
<idoc><seq><instr><type>copy</type><operand>ffcpl:/usr/local/NetKernel/modules/workbench/nfjs/hello.xml</operand><target>this:response</target>
</instr></seq>
</idoc>
![Page 37: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/37.jpg)
BasicExamples
![Page 38: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/38.jpg)
XQuery
XML Query Language
W3C Candidate Recommendation
Functional language
FLWOR (For Let Where Order By Return)
![Page 39: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/39.jpg)
XQuery Sample
<abbeysayings>{ for $author in doc("active:xquery+operator@file:/usr/local/ NetKernel/modules/workbench/nfjs/quotations/ authors.xq")//* where $author/name/last = 'Abbey' return $author/quotation}</abbeysayings>
![Page 40: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/40.jpg)
BeanShell
Supports embedded BSH interpreter
Java source interpreter
Interacts with other scripts, Java, etc.
Makes for very fast scripting
![Page 41: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/41.jpg)
BeanShell Sample
void main(){ // Extract all speeches with lines // containing the parameter argument req=context.createSubRequest(); req.setURI("active:xquery"); req.addArgument("operator","abbey.xq"); output=context.issueSubRequest(req);
//Finally return response response=context.createResponseFrom(output); context.setResponse(response);}
![Page 42: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/42.jpg)
“Real World”Examples
![Page 43: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/43.jpg)
XSLT Input Data
![Page 44: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/44.jpg)
XSLT Example
if( context.exists("this:param:param") ) { param=context.sourceAspect("this:param:param", IAspectNVP.class); mbid = param.getValue("mbid");} req=context.createSubRequest();req.setURI("active:httpGet");
url="http://musicbrainz.org/ws/1/artist/" +mbid+ "?type=xml&inc=sa-Album";req.addArgument("url", url);output=context.issueSubRequest(req);
sa= new StringAspect("<albums>" + mbid + "</albums>");req=context.createSubRequest();req.setURI("active:xslt");req.addArgument("operand", output); req.addArgument("operator", "albums.xsl");req.addArgument("band", sa);output=context.issueSubRequest(req);
![Page 45: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/45.jpg)
XSLT Stylesheet
<xsl:param name="band"/> <xsl:template match="mo:metadata/mo:artist/mo:release-list"> <html> <body> <h1>Results for <xsl:value-of select="../mo:name"/></h1> <table border="1"> <xsl:apply-templates/> </table> </body> </html></xsl:template> <xsl:template match="mo:release"> <tr><xsl:apply-templates/></tr></xsl:template> <xsl:template match="mo:title"> <xsl:variable name="id" select="../@id"/> <xsl:variable name="url" select="concat('http://musicbrainz.org/ws/1/release/',$id)"/> <td><a href="{$url}?type=xml&inc=tracks"><xsl:value-of select="."/></a></td></xsl:template>
![Page 46: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/46.jpg)
XSLTExamples
![Page 47: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/47.jpg)
Simple Tree Manipulation
Kind of a DSL for XML
XML is tree-oriented, let’s use it that way
STM
![Page 48: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/48.jpg)
Sets element values to the specified value
stm:set
<stm:set select=”/x/y” xpath=”/a/b[1]/c”><x><y>zebra</y>
</x></stm:set>
<a> <b> <c food="hay">horse</c> </b> <b> <c food="hay">donkey</c> </b></a>
<a> <b> <c food="hay">zebra</c> </b> <b> <c food="hay">donkey</c> </b></a>
![Page 49: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/49.jpg)
Inserts specified value after the selected element
stm:insert-after
<stm:insert-after xpath=”/a/b[1]”><x><y>zebra</y>
</x></stm:insert-after>
<a> <b> <c food="hay">horse</c> </b> <b> <c food="hay">donkey</c> </b></a>
<a> <b> <c food="hay">horse</c> </b><x><y>zebra</y>
</x> <b>
<c food="hay">donkey</c> </b></a>
![Page 50: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/50.jpg)
Applies the specified namespace to the selected elements
stm:apply-ns
<stm:apply-ns prefix=”ns” uri=”http://www.bosatsu.net/ns”xpath=”/a/b[2]”/>
<a> <b> <c food="hay">zebra</c> </b> <ns:b xmlns=”http://www.bosatsu.net/ns”> <ns:c food="hay">donkey</ns:c> </ns:b></a>
![Page 51: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/51.jpg)
AdvancedConcepts
![Page 52: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/52.jpg)
Asynchronous requests are easy in NetKernel
Asynchronous Requests
// Set up request 1req1=context.createSubRequest();req1.setURI("active:beanshell");req1.addArgument("operator", “script1.bsh” );req1.addArgument("param", param );handle1 = context.issueAsyncSubRequest(req1);
// Set up request 2req2=context.createSubRequest();req2.setURI("active:beanshell");req2.addArgument("operator", “script2.bsh” );req2.addArgument("param", param );handle2 = context.issueAsyncSubRequest(req2);
// Block until both calls finishretValue1 = handle1.join();retValue2 = handle2.join();
![Page 53: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/53.jpg)
Throttling requests is also easy
Throttling Requests
// attempt to issue 100 concurrent requests to script1.bshfor (int i=0; i<100; i++) { req=context.createSubRequest("active:throttle"); req.addArgument("id","throttle:my_throttle"); req.addArgument("uri","active:beanshell"); req.addArgument(“operator”,”myscript.bsh”); context.issueAsyncSubRequest(req);}
<throttle> <concurrency>4</concurrency> <queue>50</queue></throttle>
Expects to find a configuration file in ffcpl:/etc/ConfigThrottle.xml
![Page 54: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/54.jpg)
Golden Thread Pattern
Virtual Dependency Management
Powerful technique for invalidating arbitrary collections of resources
Easier to see than hear about!
![Page 55: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/55.jpg)
Long Computation wrapped in an Accessor called from a DPML script
Scalability - Scenario 1
![Page 56: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/56.jpg)
Shorter Computation called multiple times from DPML script
Scalability - Scenario 2
![Page 57: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/57.jpg)
Random document chosen from DPML script
Scalability - Scenario 3
![Page 58: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/58.jpg)
Real NetKernel Infrastructure is built around modules
Modules
![Page 59: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/59.jpg)
Ways of segmenting Address Space and functionality
Modules export public URIs and class packages
Separately Versioned units of deployment
Modules (cont)
![Page 60: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/60.jpg)
Modules (cont)
Can hold static resources, Java code, scripts, accessors, aspects, transreptors, transports, fragmentors and caches
Import module definitions to access another namespace
If you create a new module, you will need to at it to the deployedModules.xml
![Page 61: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/61.jpg)
Sample Modules
Module Functionality
ext-xml-core-1.4.2.jar DOM, JDom, SAX, XDA, XMLBean
ext-dpml-1.2.2.jar DPML Language runtime
ext-kernel-1.0.6.jar System component accessors
doc-netkernel-4.0.0.jar NetKernel Core Documentation
mod-fulcrum-frontend HTTP Server FrontEnd Fulcrum
mod-fulcrum-backend HTTP Server Backend Fulcrum
tpt-http-2.1.8.jar HTTP Transport
tpt-jms-1.0.2.jar JMS Transport
app-address-book-1.1.4.jar Address Book application
![Page 62: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/62.jpg)
Module Example
![Page 63: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/63.jpg)
Pipes in NK (Yahoo)Module for implementing Yahoo Pipes-like functionality
Runs in your computational space
No ads
Full control
Pinky
http://sourceforge.net/projects/pinky
![Page 64: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/64.jpg)
Union - combine one or more feeds
Truncate - keep things manageable
Unique - remove duplicate stories
Count - how many elements per feed
Filter - restrict feed elements to filter criteria
Pinky Accessors
![Page 65: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/65.jpg)
Pinky Example
![Page 66: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/66.jpg)
Sophisticated management consoleSystem Healthcheck
Manipulate Modules
Monitor Memory, Throttle Settings, Workload
Edit Kernel Parameters
NetKernel Administration
http://localhost:1060/ep+name@app_ext_introspect_controlpanel
![Page 67: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/67.jpg)
Non-XML Examples
![Page 68: Resource-Oriented Computing w/ NetKerneljava.ociweb.com › javasig › knowledgebase › 2008-01 › NetKernel.pdf · Resource-Oriented Computing w/ NetKernel : Software for the](https://reader034.vdocuments.site/reader034/viewer/2022042402/5f132e2e52778d001a097c76/html5/thumbnails/68.jpg)
NetKernel Links
Open Source Site http://www.1060.org
Commercial Site http://www.1060research.com
Article http://tinyurl.com/ghxg3
Front-End Fulcrum http://localhost:8080
Back-End Fulcrum http://localhost:1060
Slides http://zepheira.com/presentations/2008/NetKernel/NetKernel.pdf
Tutorial http://zepheira.com/presentations/2008/NetKernel/tutorial.txt
Examples http://zepheira.com/presentations/2008/NetKernel/NetKernel-Examples.zip