Hello fellow developers,
I've tried to implement on resource handling framework that Paul has proposed
earlier. This framework will going to have a big impact on security and
rm mediator setup. I have attached the patch herewith for your review. Please
try to play with it and let your concern on the list.
I have attached a test case and a sample ResourceHandler with the notion of
REST to demonstrate the code base.
Thank you
Saminda
On 3/2/06, Saminda Abeyruwan <[EMAIL PROTECTED]>
wrote:
Saminda
I don't understand the scenario. I would say that was a misconfig and I would expect
an exception to be thrown when registering the second RH with the same URI
root.
Paul
So there is a one-to-one mapping between RH and uri-root. So the implementation
is much more simpler. I got it. Thanks Paul.
Saminda
Hi Paul,
I just need to clarify the following small matter.
i hope following scenario is valid. :-)
Assume, we have following synapse.xml for an example
...
<resource type="o.a.s.resources.HttpResource" uri-root="
http://fremantle.org/resources/">
<property
name="http.username">paul</property>
<property
name="http.password">pass</property>
<property name="
http.proxy">proxy:80</property>
</resource>
<resource type="o.a.s.resources.DatabaseResources" uri-root="
http://fremantle.org/resources/">
<property/>[1..n]
</resource>
...
so a mediator can register two resources handlers with the same uri-root.
Mediator can nicely say,
OMElement ele = se.getResourceHelper().get(some uri); to get
resources. But mediator has registered two resources helpers initially,
and mediator just need have database connection for this time. As i can see
there is no way mediator author can instruct this to ResourceHelper.
Please be kind enough to explain prior.
Thank you
Saminda
How about this implementation of what you
are describing.
1) Lets indirect this out of SynEnv:
SynapseEnvironment {
ResourceHelper getResourceHelper();
}
public interface ResourceHelper {
OMElement get(String uri); // get a resource
OMElement get(String uri, ResourceUpdateAware mediator); //
get a resource and be notified of changes
void registerResourceHandler(ResourceHandler rh, String
urlRoot);
// register a handler for a
given set of URLs (which share the same root)
void notifyUpdate(String uriRoot);
// a resource handler uses
this to notify that all resources with that root have changed (Resource Push
model)
}
public interface ResourceHandler {
OMElement get(String uri);
void setProperty(String name, String value);
String getProperty(String name);
String[] getPropertyNames();
boolean isUpdated(String uriRoot); // used to poll if
resource has changed (Pull model)
}
<synapse.xml>
<resource type="o.a.s.resources.HttpResource" uri-root="
http://fremantle.org/resources/">
<property
name="http.username">paul</property>
<property
name="http.password">pass</property>
<property name=" http.proxy">proxy:80</property>
</resource>
Paul
On 3/1/06, Soumadeep <
[EMAIL PROTECTED]> wrote:
Paul is right, instead of
passing an object we could have property files which will have the connection
related data. Further, we can generalize the way the get method is implemented,
what I mean is we can have an interface like ResourceHandler so that others can
implement it as required ... something like LDAPResourceHandler implements
ResourceHandler which will have a get method and depending on what was
configured the resource will be fetched.
We can put the property
values in Synapse.xml, so you might end up having multiple resource endpoints
with property sets required for making a connection, though we need to think
about whether to provide the flexibility in terms of mediators being able to
call different ResourceHandlers for a session.
-Soumadeep
-----Original Message-----
From: Paul Fremantle [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, February 28, 2006
5:59 PM
To: [email protected]
Subject: Re: get(String url)
issues for getting external resources
I think we should try to separate out the connection properties
associated with a URI and the mediators knowledge. So in other words lets try
to configure the mediator with the URI and the SynapseEnv with the
certs/uids/proxies, etc.
Paul
On 2/28/06, Saminda Abeyruwan <[EMAIL PROTECTED]>
wrote:
Hi Devs,
I have written a document on "how to configure mediators get resources via
SSL connection". This will address how to acquire resources from Axis2
repository which is deployed on Tomcat.
Thank you
Saminda
On 2/28/06, Saminda Abeyruwan <
[EMAIL PROTECTED]> wrote:
Hi all,
To fetch external resources using Axis2SynapseEnvironment's get(String url)
wouldn't suffice I think. For secured resources we might have to send the 1)
username/password http token or 2)WS Sec token or maybe 3) certificates or
4) we might also have to deal with enc/decryption.
+1. The underline transport mechanism for
SynapesEnvironment.get(String) uses HttpClient from commons-httpclient and it
provides full support for HTTP over SSL [1]. Thus, with minimum effort we can
integrate it here. But to introduce authentication details we may need to
insert a bean into SynapseEnvironment.get(String) and we may have to
change the signature as SynapseEnvironment.get(String url, Object
authentication). This will allow to get authentication details from run time.
More importantly, there might be a
situation where the resource could be
located in LDAP,Database or a file System.
Yes. We need to figure this out. IMHO this is can be considered as
multiple issues.
How do we handle situations where a
parameter could be required by the
resource server apart from what I have mentioned above? (HTTP GET maybe the
only way out) but then there should be a way to configure what type of
resource server it is and what details are required.
REST like invocation is the most simple yet the powerful way of getting
resources out a repository. So the current implementation of
SynapseEnviroment.get(String) would defiantly do that. We can integrate a very
powerful lookup for this resources, if we uses Axis2's ServiceClient (Once
Axis2-0.95 releases) REST invocation mechanism. But to integrate this, we
need to populate a Object and fill the right information.
IMHO, i guess commons-httpclient addresses most of the problems
with regular and ssl connection.
Thank you
Saminda
Resources: [1]. http://jakarta.apache.org/commons/httpclient/sslguide.html