[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] Re: REGEX/XPATH subscriptions - newbie requests assistance

Schuhmacher, Bret wrote:

Thanks Marcel. I found the zvon.org XPath tutorial and found the contains()
function. I'm new to XPath - I didn't realize you could do all that with

I definitely need IE 5.5+ support or I'll have to find another alternative.
More and more people are going to zero-install, completely thin clients like
IE.  Maybe I can look into why it's stopped working...  Is there a How-To on
getting the servlet working?  Looks like I'll need Tomcat and a web server
(Apache, probably).  I've had all that working in the past and it wasn't
terribly difficult.  A little documentation on the stuff (like what goes
where, what to set up to get it all working, etc.) would give me a
jump-start, though.

Have a look into:


You can try the persistent http online demo with:


it will work with mozilla and netscape.
With Opera and IE i think there are problems.

------------------------------------------------------------------------------------ You can try it with tomcat locally (no apache is necessary, i had tomcat 3.2.4 to test it, others should work as well):

1. Create a war file:

 cd xmlBlaster

 build.sh all      (assure xmlBlaster is compiled)

 build.sh  -DTOMCAT_HOME=/opt/jakarta_tomcat   deploy_war

Set TOMCAT_HOME to point to your installation and the xmlBlaster.war
and xmlBlaster.jar will be automatically deployed.

2. Start it

 java org.xmlBlaster.Main -admin.remoteconsole.port 0 -cluster false

 java  http.dhtml.systemInfo.SystemInfoPublisher

cd /opt/jakarta-tomcat/bin
export TOMCAT_OPTS="-Xms18M -Xmx64M"

3. Start your browser:



o Another task is to repaint the HTML page in the browser with Javascript.
You can update the DOM or you can try to use SVG in your browser (see Micheles online chess
demo in xmlBlaster/demo/javaclients/svg/rhino/README).

o A good resource for this topic is the pushlet framework, see
   One possibility is to use pushlets with xmlBlaster, if you try
   this it would be nice to get feedback about your success.

o Your probably need to port our demo to XTHML for IE or for
  using it in frameworks like cocoon.

o The demo tunnels firewalls and proxies, but note that
   if one proxy decides to drop the http connection you
   are lost (playing with minimal data rate and pings helps here).



Thanks for the response! :-)



-----Original Message-----
From: Marcel Ruff [mailto:mr at marcelruff.info] Sent: Monday, June 16, 2003 4:36 PM
To: xmlblaster at server.xmlBlaster.org
Subject: [xmlblaster] Re: REGEX/XPATH subscriptions - newbie requests

Hi Bret,

First - thanks for the wonderful work on xmlBlaster! I haven't yet figured it all out, but it looks like it'll be _enormously_ useful. I've been looking for a MoM/JMS options that can do HTTP
to a browser as well as standard PtP and Pub/Sub messaging and the
infrastructure for
xmlBlaster seems quite open and workable. :-)

My question is this... I need some guidance on how to implement the following using xmlBlaster to achieve optimal performance and usability. Here's the situation:

1) I have a hierarchy of people that looks like this: enterprise
  enterprise data
       site data
             data for groups
                        data for individuals

2) I'd like to report real-time statistics to browsers, stand-alone applications, pagers, email, etc. I envision people opening their tool of choice (i.e. the stand-alone app), which would
subscribe them to a certain class of messages in the hierarchy.

The real-time callback to browsers is tricky.
The idea is that instant callbacks tunnel through all firewalls and internet proxies.
This works fine for mozilla, but the current IE and Opera don't work, we have not
investigated yet why (once upon a time IE 5 worked).

Other protocols can be plugged in to xmlBlaster.
But plan some days for each missing protocol, if you donate the plugins back
plan some additional days for automatic testing and documentation. See
http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.html  ff

3) I'd like people to get **ONLY** the information to which they're privileged to see. This means group managers can only see their subordinates' information. Individuals can only see their
information. Site administrators can see everything below them.


admins can see **

Your specific authorization must be done by a plugin as well, see

4) I'd like to subscribe using this nomenclature: ent_companyname.site_siteid.grp_groupnumber.user_usernumber.data

In practice this would look like this: ent_foobar.site_123.grp_12.agt_2108.x=y (where x=y is the datapoint and value). The x=y could be the body of the message, I guess. I suppose the message would look like this:
<foobar> <site id = "123"> <grp id = "12"> <agt id="2108">
<datapoint = value/>
</grp> </site> </foobar>

Group managers would subscribe to the information that includes their group number (e.g. regex = ".*grp_12.*". Agents would subscribe to only their agent information using a regex =
".* agt_2108", etc.

Ideally I think I'd subscribe using a regex on the user or groupnumber, but I don't see that option -- did I miss it? I see the ability to subscribe to an EXACT match on an oid, or to
use the REGEX on the *message body*, but not to subscribe using a regex on
the oid.

Sorry, regex is not supported in the core. The internal query interface is currently XPath
only. Changing this to be pluggable will be some days of work. You can use
XPath to filter the oid directly, so probably you don't need regex to do what you need,
try 'starts-with()', 'contains()' etc.

As I've only just started using xmlBlaster I'm sure I don't quite understand the paradigm, so I'd appreciate any suggestions or guidance you might have. :-) I have built working versions
of this subscription scheme using XPATH, but is it the most efficient way


doing this? Have I just described the "contains()" function of the XPATH? Should I use this
for an XPATH subscription?
//agt [ at id='2108']

Why not. You can gain performance with absolute queries like

/xmlBlaster/key/foobar/site/grp/agt[ at id='2018']

Another quick question - is it possible to have different callback functions for each particular use? In a single program I might want to have some callbacks call the xyz() method,
while others call the abc() method. This would keep the update() method

from being just a

big case-oriented traffic-cop ;-).  No big deal if that's what update() is
supposed to do -
again, I'm just asking, trying to understand the architecture better :-).

Over the remote connection we only support update() and 'oneway update()'.
But the java client library has a dispatching possibility:

SubscribeReturnQos qos = con.subscribe(sk, sq, new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) {
log.info(ME, "Receiving asynchronous message '" + updateKey.getOid() +
"' state=" + updateQos.getState() + " in HelloWorld4 handler");
return "";
}); // subscribe with our specific update handler

See xmlBlaster/demo/javaclients/HelloWorld4.java