You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Florian Georg <fl...@uni-konstanz.de> on 2007/10/21 17:29:02 UTC

Best way to realize stateful services architecture with massive data?

I´m currently thinking of the best way to realize data-intensive
"workflows" composed of web services (similar e.g. to a BPEL engine).
I´ll looking at Axis2 engine for that, but I´m unsure how it could fit
my special needs:

What I need to do is to be able to call subsequent operations on a
service (e.g. configure(), execute(), getNextResults(), reset(), ..).
Background is that these are very long running services which consume
and produce potentially some GBs of data.
The services are dependend of each other, e.g. execute() may only be
called after a predecessor service has successfully executed.
Produced data should be re-usable by differend nodes, e.g. passing
around and re-generate should be minimized.

What do you think of this?
What does Axis provide me for this scenario? 
Should I use, e.g. WS-Resource (Muse) for this? An ESB ?
Or should I even consider mapping this into BPEL and use a process
engine?
(ok, I´ll stop here before it becomes too off-topic)

Any remarks would be greatly appreciated.

thanks in advance
  -- Florian



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


SV: SV: [Axis2] Custom object not returned correctly from webservice

Posted by "Peter A. Kirk" <pk...@alpha-solutions.dk>.
-----Oprindelig meddelelse-----
Fra: Deepal jayasinghe [mailto:deepalk@gmail.com] 
Sendt: 26. oktober 2007 17:34
Til: axis-user@ws.apache.org
Emne: Re: SV: [Axis2] Custom object not returned correctly from
webservice

>Peter A. Kirk wrote:
>> I can return Strings and even String[] no problem, but not my custom
>> type which after all only contains strings?
>>
>> Is it at all possible to return custom types from a java/axis2
>> webservice? I have found numerous other questions on the web
regarding
>   
>Yes you can.

Well, thanks. Nice to at least have that confirmed so I'm not completely
barking up the wrong tree trying to get this to work.

Are there any special "annotations" or anything else required to enable
this? I really can't see why a simple object holding a few strings isn't
very simple to return from a webservice.

Could there be a problem with the wsdl describing this object? Seems
strange though that the c# client "knows" about the class, but the
internal values are sent.


/Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: SV: [Axis2] Custom object not returned correctly from webservice

Posted by Deepal jayasinghe <de...@gmail.com>.
Peter A. Kirk wrote:
> I can return Strings and even String[] no problem, but not my custom
> type which after all only contains strings?
>
> Is it at all possible to return custom types from a java/axis2
> webservice? I have found numerous other questions on the web regarding
>   
Yes you can.

Thanks
Deepal
> this, but no definitive answer yet.
>
> /Peter
>
> -----Oprindelig meddelelse-----
> Fra: Peter A. Kirk [mailto:pk@alpha-solutions.dk] 
> Sendt: 26. oktober 2007 11:43
> Til: axis-user@ws.apache.org
> Emne: [Axis2] Custom object not returned correctly from webservice
>
> Hi, I have made a webservice with the following classes.
>
> I try to call this webservice from a c#/.net application, but the
> returned object is filled with nulls - can anyone help me find out why?
> As far as I can see I set the values in the return object. 
>
> Do I need to do something to tell Axis2 that the class
> Employees_WS_ReturnData should be available over a webservice? The c#
> application does indeed know about this type, and does get an object
> from the "easyData" method - this object is just not filled with data.
>
>
> Thanks,
> Peter
>
>
> //
> package dk.alphasolutions.niws.employees;
>
> import javax.jws.*;
>
> @WebService
> public class Employees_WS
> {
>   @WebMethod
>   public Employees_WS_ReturnData easyData()
>   {
>     System.out.println("Easy Data");
>     Employees_WS_ReturnData o = new Employees_WS_ReturnData();
>     o.setEmail("peter");
>     return o;
>   }
> }
>
> //
> package dk.alphasolutions.niws.employees;
>
> public class Employees_WS_ReturnData
> {
>   private String lastname = "a lastname";
>   private String firstname;
>   private String email;
>   private String id;
> 	
>   public String getLastname() 
>   {
>     return lastname;
>   }
> 	
>   public void setLastname(String lastname) 
>   {
>     this.lastname = lastname;
>   }
> 	
>   public String getFirstname() 
>   {
>     return firstname;
>   }
> 	
>   public void setFirstname(String firstname) 
>   {
>     this.firstname = firstname;
>   }
> 	
>   public String getEmail() 
>   {
>     return email;
>   }
> 	
>   public void setEmail(String email) 
>   {
>     this.email = email;
>   }
> 	
>   public String getId() 
>   {
>     return id;
>   }
> 	
>   public void setId(String id) 
>   {
>     this.id = id;
>   }
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


SV: [Axis2] Custom object not returned correctly from webservice

Posted by "Peter A. Kirk" <pk...@alpha-solutions.dk>.
I can return Strings and even String[] no problem, but not my custom
type which after all only contains strings?

Is it at all possible to return custom types from a java/axis2
webservice? I have found numerous other questions on the web regarding
this, but no definitive answer yet.

/Peter

-----Oprindelig meddelelse-----
Fra: Peter A. Kirk [mailto:pk@alpha-solutions.dk] 
Sendt: 26. oktober 2007 11:43
Til: axis-user@ws.apache.org
Emne: [Axis2] Custom object not returned correctly from webservice

Hi, I have made a webservice with the following classes.

I try to call this webservice from a c#/.net application, but the
returned object is filled with nulls - can anyone help me find out why?
As far as I can see I set the values in the return object. 

Do I need to do something to tell Axis2 that the class
Employees_WS_ReturnData should be available over a webservice? The c#
application does indeed know about this type, and does get an object
from the "easyData" method - this object is just not filled with data.


Thanks,
Peter


//
package dk.alphasolutions.niws.employees;

import javax.jws.*;

@WebService
public class Employees_WS
{
  @WebMethod
  public Employees_WS_ReturnData easyData()
  {
    System.out.println("Easy Data");
    Employees_WS_ReturnData o = new Employees_WS_ReturnData();
    o.setEmail("peter");
    return o;
  }
}

//
package dk.alphasolutions.niws.employees;

public class Employees_WS_ReturnData
{
  private String lastname = "a lastname";
  private String firstname;
  private String email;
  private String id;
	
  public String getLastname() 
  {
    return lastname;
  }
	
  public void setLastname(String lastname) 
  {
    this.lastname = lastname;
  }
	
  public String getFirstname() 
  {
    return firstname;
  }
	
  public void setFirstname(String firstname) 
  {
    this.firstname = firstname;
  }
	
  public String getEmail() 
  {
    return email;
  }
	
  public void setEmail(String email) 
  {
    this.email = email;
  }
	
  public String getId() 
  {
    return id;
  }
	
  public void setId(String id) 
  {
    this.id = id;
  }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


[Axis2] Custom object not returned correctly from webservice

Posted by "Peter A. Kirk" <pk...@alpha-solutions.dk>.
Hi, I have made a webservice with the following classes.

I try to call this webservice from a c#/.net application, but the
returned object is filled with nulls - can anyone help me find out why?
As far as I can see I set the values in the return object. 

Do I need to do something to tell Axis2 that the class
Employees_WS_ReturnData should be available over a webservice? The c#
application does indeed know about this type, and does get an object
from the "easyData" method - this object is just not filled with data.


Thanks,
Peter


//
package dk.alphasolutions.niws.employees;

import javax.jws.*;

@WebService
public class Employees_WS
{
  @WebMethod
  public Employees_WS_ReturnData easyData()
  {
    System.out.println("Easy Data");
    Employees_WS_ReturnData o = new Employees_WS_ReturnData();
    o.setEmail("peter");
    return o;
  }
}

//
package dk.alphasolutions.niws.employees;

public class Employees_WS_ReturnData
{
  private String lastname = "a lastname";
  private String firstname;
  private String email;
  private String id;
	
  public String getLastname() 
  {
    return lastname;
  }
	
  public void setLastname(String lastname) 
  {
    this.lastname = lastname;
  }
	
  public String getFirstname() 
  {
    return firstname;
  }
	
  public void setFirstname(String firstname) 
  {
    this.firstname = firstname;
  }
	
  public String getEmail() 
  {
    return email;
  }
	
  public void setEmail(String email) 
  {
    this.email = email;
  }
	
  public String getId() 
  {
    return id;
  }
	
  public void setId(String id) 
  {
    this.id = id;
  }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: getting following exception in making client connection to the service

Posted by Upul Godage <up...@gmail.com>.
Seems like you have enabled the JMS transport sender in the Axis2
configuration.  In this case Axis2 functions as a JMS client to a JMS
server.  To communicate with the JMS server Axis2 needs some JMS and JNDI
classes of which the implementation classes are specific to the used JMS
server. For that some jar files should be added to the Axis2 lib directory.

For example if you are using ActiveMQ the jars would be something like,
activeio-core-3.0-beta1.jar, activemq-core-4.0-RC2.jar,
geronimo-jms_1.1_spec-1.0.jar, geronimo-j2ee-management_1.0_spec-1.0.jar

If JBoss then probably jbossall-client.jar would have all the required
classes, I think.

Check this article. http://ws.apache.org/axis2/1_3/jms-transport.html

Upul

On 10/24/07, Shalab Goel <sh...@oracle.com> wrote:
>
> Appreciate any help on what I might be missing.
>
>
> java.lang.NoClassDefFoundError: javax/jms/BytesMessage
>         at java.lang.Class.getDeclaredConstructors0(Native Method)
>         at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
>         at java.lang.Class.getConstructor0(Unknown Source)
>         at java.lang.Class.newInstance0(Unknown Source)
>         at java.lang.Class.newInstance(Unknown Source)
>         at
> org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(
> AxisConfigBuilder.java:516)
>         at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(
> AxisConfigBuilder.java:109)
>         at
> org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(
> DeploymentEngine.java:640)
>         at
> org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(
> FileSystemConfigurator.java:105)
>         at
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext
> (ConfigurationContextFactory.java:60)
>         at
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem
> (ConfigurationContextFactory.java:174)
>         at org.apache.axis2.client.ServiceClient.initializeTransports(
> ServiceClient.java:211)
>         at org.apache.axis2.client.ServiceClient.configureServiceClient(
> ServiceClient.java:138)
>         at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java
> :133)
> ...
> ...
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>

RE: getting following exception in making client connection to theservice

Posted by "Walker, Jeff" <Je...@fmr.com>.
BytesMessage is also defined in j2ee.jar
-jeff
 

-----Original Message-----
From: Saket Raizada [mailto:saket.raizada.slnm@statefarm.com] 
Sent: Wednesday, October 24, 2007 1:35 PM
To: axis-user@ws.apache.org
Subject: RE: getting following exception in making client connection to
theservice 

Looks like you do not have the jms jar file in the classpath.


regards
-Saket Raizada
309-763-5492
Automation (Maintenance)

-----Original Message-----
From: Shalab Goel [mailto:shalab.goel@oracle.com] 
Sent: Wednesday, October 24, 2007 12:21 PM
To: axis-user@ws.apache.org
Subject: getting following exception in making client connection to
theservice 

Appreciate any help on what I might be missing.


java.lang.NoClassDefFoundError: javax/jms/BytesMessage
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown
Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at
org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(Ax
isConfigBuilder.java:516)
	at
org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigB
uilder.java:109)
	at
org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(D
eploymentEngine.java:640)
	at
org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(
FileSystemConfigurator.java:105)
	at
org.apache.axis2.context.ConfigurationContextFactory.createConfiguration
Context(ConfigurationContextFactory.java:60)
	at
org.apache.axis2.context.ConfigurationContextFactory.createConfiguration
ContextFromFileSystem(ConfigurationContextFactory.java:174)
	at
org.apache.axis2.client.ServiceClient.initializeTransports(ServiceClient
.java:211)
	at
org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClie
nt.java:138)
	at
org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:133)
...
...


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: getting following exception in making client connection to theservice

Posted by Saket Raizada <sa...@statefarm.com>.
Looks like you do not have the jms jar file in the classpath.


regards
-Saket Raizada
309-763-5492
Automation (Maintenance)

-----Original Message-----
From: Shalab Goel [mailto:shalab.goel@oracle.com] 
Sent: Wednesday, October 24, 2007 12:21 PM
To: axis-user@ws.apache.org
Subject: getting following exception in making client connection to
theservice 

Appreciate any help on what I might be missing.


java.lang.NoClassDefFoundError: javax/jms/BytesMessage
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown
Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at
org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(Ax
isConfigBuilder.java:516)
	at
org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigB
uilder.java:109)
	at
org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(D
eploymentEngine.java:640)
	at
org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(
FileSystemConfigurator.java:105)
	at
org.apache.axis2.context.ConfigurationContextFactory.createConfiguration
Context(ConfigurationContextFactory.java:60)
	at
org.apache.axis2.context.ConfigurationContextFactory.createConfiguration
ContextFromFileSystem(ConfigurationContextFactory.java:174)
	at
org.apache.axis2.client.ServiceClient.initializeTransports(ServiceClient
.java:211)
	at
org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClie
nt.java:138)
	at
org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:133)
...
...


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: getting following exception in making client connection to the service

Posted by ROSSILLE Samuel <sa...@cgi.com>.
This Exception means that the class loader can't find the class  javax.jms.ByteMessage.

This class is provided by one of the dependencies: geronimo-jms_1.1_spec-1.1.jar, so please check that this file is in your classpath.

Regards,

Samuel Rossille

-----Message d'origine-----
De : Shalab Goel [mailto:shalab.goel@oracle.com] 
Envoyé : mercredi 24 octobre 2007 19:21
À : axis-user@ws.apache.org
Objet : getting following exception in making client connection to the service 

Appreciate any help on what I might be missing.


java.lang.NoClassDefFoundError: javax/jms/BytesMessage
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:516)
	at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:109)
	at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:640)
	at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:105)
	at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:60)
	at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:174)
	at org.apache.axis2.client.ServiceClient.initializeTransports(ServiceClient.java:211)
	at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:138)
	at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:133)
...
...


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


getting following exception in making client connection to the service

Posted by Shalab Goel <sh...@oracle.com>.
Appreciate any help on what I might be missing.


java.lang.NoClassDefFoundError: javax/jms/BytesMessage
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:516)
	at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:109)
	at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:640)
	at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:105)
	at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:60)
	at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:174)
	at org.apache.axis2.client.ServiceClient.initializeTransports(ServiceClient.java:211)
	at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:138)
	at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:133)
...
...


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture withmassivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Very useful page. Thank you.
Swim easy.
-jeff




-----Original Message-----
From: robert lazarski [mailto:robertlazarski@gmail.com] 
Sent: Monday, October 22, 2007 12:30 PM
To: axis-user@ws.apache.org
Subject: Re: Best way to realize stateful services architecture
withmassivedata?

On 10/22/07, Walker, Jeff <Je...@fmr.com> wrote:
>
> The unswimmable sea of WS-* specifications helps only to muddy the
> waters. If there are no implementations, the specs mean little. I
> thought Axis 2 implements only these:
> WS-ReliableMessaging - Supported by Apache Sandesha2
> WS-Coordination and WS-AtomicTransaction - Supported by Apache
Kandula2
> WS-Security - Supported by Apache Rampart
> WS-Addressing -Module included as part of Axis2 core
> -jeff
>

One man's "unswimmable sea" is a mere channel to cross in a few hours
for others. As for implementations, think again.

http://wiki.apache.org/ws/StackComparison

HTH,
Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Best way to realize stateful services architecture withmassivedata?

Posted by robert lazarski <ro...@gmail.com>.
On 10/22/07, Walker, Jeff <Je...@fmr.com> wrote:
>
> The unswimmable sea of WS-* specifications helps only to muddy the
> waters. If there are no implementations, the specs mean little. I
> thought Axis 2 implements only these:
> WS-ReliableMessaging - Supported by Apache Sandesha2
> WS-Coordination and WS-AtomicTransaction - Supported by Apache Kandula2
> WS-Security - Supported by Apache Rampart
> WS-Addressing -Module included as part of Axis2 core
> -jeff
>

One man's "unswimmable sea" is a mere channel to cross in a few hours
for others. As for implementations, think again.

http://wiki.apache.org/ws/StackComparison

HTH,
Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Best way to realize stateful services architecture withmassivedata?

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
Jeff,

I think you forgot to mention the concurrency issues related with  
stateful WS. So, at least under this point of view, stateless WS are  
much more easier to build.

Michele


On 22 Oct 2007, at 17:08, Walker, Jeff wrote:

> Ok,
> So we have moved-off topic here.
> My original email was to Florian Georg, who asked about stateful
> services and very large data set transfer, via a stateful web service,
> if I remember correctly.
>
> Then Michele asked my opinion on stateful vs stateless.
> My point here is that stateless services are far easier than stateful,
> but almost useless because most situations require services in  
> front of
> stateful applications. That's an assertion that I'm sure many will
> refute! That's fine, that's what this board is for. (I'm here to learn
> as well).
>
> Yes, stateful services are relatively easy to build from an  
> engineering
> point of view. But retrofitting them into an existing architecture is
> very difficult. Also difficult is engineering them into an SOA.  
> Most SOA
> architectural layouts I have seen skirt the issue and assume stateless
> services.
>
> I haven't used WS-SecureConversation.
>
> REST to me is a completely different approach to architecture. But
> again, I've only read about it. I would think it also is not  
> appropriate
> for large data transfer. But I think it is stateless by default,  
> right?
>
> The unswimmable sea of WS-* specifications helps only to muddy the
> waters. If there are no implementations, the specs mean little. I
> thought Axis 2 implements only these:
> WS-ReliableMessaging - Supported by Apache Sandesha2
> WS-Coordination and WS-AtomicTransaction - Supported by Apache  
> Kandula2
> WS-Security - Supported by Apache Rampart
> WS-Addressing -Module included as part of Axis2 core
> -jeff
>
>
>
>
> -----Original Message-----
> From: robert lazarski [mailto:robertlazarski@gmail.com]
> Sent: Monday, October 22, 2007 10:59 AM
> To: axis-user@ws.apache.org
> Subject: Re: Best way to realize stateful services architecture
> withmassivedata?
>
> On 10/22/07, Walker, Jeff <Je...@fmr.com> wrote:
>> You can definitely create stateful web services. It's just that they
> are
>> very difficult to use. How do you force the client to make the
> operation
>> calls in the expected calling sequence? The client will likely  
>> need to
>> keep track of the order of the operations it has called. This is
>> complicated book-keeping and often the client unable or unwilling to
> do
>> this. Errors become a big issue. What do you do when the 5th call  
>> of 7
>> expected calls fails? Should you abandon altogether? How do you  
>> retry?
>> The complexity gets ugly, quickly.
>>
>
> Its not that difficult - its actually common and standardized via
> WS-SecureConversation. I personally have also used my own UUID scheme
> where WS-SecureConversation hasn't been supported on all sides. Coding
> up your own scheme takes about 2-3 days depending on the programmer -
> I've even seen beginner .net programmers implement UUID token passing
> easily.
>
> Calling DB transactions often also requires the right sequence, and
> people get by just fine. EJB stateful web services may not be as easy
> as a pojo, but people do that often enough too.
>
> In short, anything is easier when its stateless. The whole idea though
> behind WS-* is enterprise stuff like asynchronous calls, addressing,
> conversations, transactions and reliability. A good case could be made
> that its not needed a lot - that's where REST comes in. But if you do
> need common usage patterns beyond simple HTTP get and post, there are
> seemingly endless WS-* standards that thought of just about everything
> - and axis2 implements most of them.
>
> Robert
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture withmassivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Ok,
So we have moved-off topic here.
My original email was to Florian Georg, who asked about stateful
services and very large data set transfer, via a stateful web service,
if I remember correctly.

Then Michele asked my opinion on stateful vs stateless.
My point here is that stateless services are far easier than stateful,
but almost useless because most situations require services in front of
stateful applications. That's an assertion that I'm sure many will
refute! That's fine, that's what this board is for. (I'm here to learn
as well).

Yes, stateful services are relatively easy to build from an engineering
point of view. But retrofitting them into an existing architecture is
very difficult. Also difficult is engineering them into an SOA. Most SOA
architectural layouts I have seen skirt the issue and assume stateless
services.

I haven't used WS-SecureConversation.

REST to me is a completely different approach to architecture. But
again, I've only read about it. I would think it also is not appropriate
for large data transfer. But I think it is stateless by default, right?

The unswimmable sea of WS-* specifications helps only to muddy the
waters. If there are no implementations, the specs mean little. I
thought Axis 2 implements only these: 
WS-ReliableMessaging - Supported by Apache Sandesha2 
WS-Coordination and WS-AtomicTransaction - Supported by Apache Kandula2 
WS-Security - Supported by Apache Rampart 
WS-Addressing -Module included as part of Axis2 core 
-jeff


 

-----Original Message-----
From: robert lazarski [mailto:robertlazarski@gmail.com] 
Sent: Monday, October 22, 2007 10:59 AM
To: axis-user@ws.apache.org
Subject: Re: Best way to realize stateful services architecture
withmassivedata?

On 10/22/07, Walker, Jeff <Je...@fmr.com> wrote:
> You can definitely create stateful web services. It's just that they
are
> very difficult to use. How do you force the client to make the
operation
> calls in the expected calling sequence? The client will likely need to
> keep track of the order of the operations it has called. This is
> complicated book-keeping and often the client unable or unwilling to
do
> this. Errors become a big issue. What do you do when the 5th call of 7
> expected calls fails? Should you abandon altogether? How do you retry?
> The complexity gets ugly, quickly.
>

Its not that difficult - its actually common and standardized via
WS-SecureConversation. I personally have also used my own UUID scheme
where WS-SecureConversation hasn't been supported on all sides. Coding
up your own scheme takes about 2-3 days depending on the programmer -
I've even seen beginner .net programmers implement UUID token passing
easily.

Calling DB transactions often also requires the right sequence, and
people get by just fine. EJB stateful web services may not be as easy
as a pojo, but people do that often enough too.

In short, anything is easier when its stateless. The whole idea though
behind WS-* is enterprise stuff like asynchronous calls, addressing,
conversations, transactions and reliability. A good case could be made
that its not needed a lot - that's where REST comes in. But if you do
need common usage patterns beyond simple HTTP get and post, there are
seemingly endless WS-* standards that thought of just about everything
- and axis2 implements most of them.

Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Best way to realize stateful services architecture withmassivedata?

Posted by robert lazarski <ro...@gmail.com>.
On 10/22/07, Walker, Jeff <Je...@fmr.com> wrote:
> You can definitely create stateful web services. It's just that they are
> very difficult to use. How do you force the client to make the operation
> calls in the expected calling sequence? The client will likely need to
> keep track of the order of the operations it has called. This is
> complicated book-keeping and often the client unable or unwilling to do
> this. Errors become a big issue. What do you do when the 5th call of 7
> expected calls fails? Should you abandon altogether? How do you retry?
> The complexity gets ugly, quickly.
>

Its not that difficult - its actually common and standardized via
WS-SecureConversation. I personally have also used my own UUID scheme
where WS-SecureConversation hasn't been supported on all sides. Coding
up your own scheme takes about 2-3 days depending on the programmer -
I've even seen beginner .net programmers implement UUID token passing
easily.

Calling DB transactions often also requires the right sequence, and
people get by just fine. EJB stateful web services may not be as easy
as a pojo, but people do that often enough too.

In short, anything is easier when its stateless. The whole idea though
behind WS-* is enterprise stuff like asynchronous calls, addressing,
conversations, transactions and reliability. A good case could be made
that its not needed a lot - that's where REST comes in. But if you do
need common usage patterns beyond simple HTTP get and post, there are
seemingly endless WS-* standards that thought of just about everything
- and axis2 implements most of them.

Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Best way to realize stateful servicesarchitecturewithmassivedata?

Posted by Yo...@mizuhocbus.com.
Steps similar to MTOM sample with file caching enabled. Received 
dataStream is loaded in XML object for further transformation.



regards
Yogesh



"robert lazarski" <ro...@gmail.com> 
10/22/2007 05:17 PM
Please respond to
axis-user@ws.apache.org


To
axis-user@ws.apache.org
cc

Subject
Re: Best way to realize stateful servicesarchitecturewithmassivedata?






That's pretty kool. Did you use any streaming to avoid putting the data in 
memory and building the tree? Or did you just more or less follow the same 
steps in the mtom tutorial? 

Robert 

On 10/22/07, Yogesh.Dhake@mizuhocbus.com <Yo...@mizuhocbus.com> 
wrote:

Hi 

We were in similar situation we were planning to transfer 1GB file as SOAP 
as attachment. 

1)  Axis2 give pretty good support using MTOM and SWA for transferring any 
size file.  1GB file transferred in 67sec on local network. File caching 
feature is great. 
2) But it is not good idea to transfer SOAP with such large attachment. We 
also hit some our app server & service bus handling limitation. So we 
decided to process data in chunk.  We get file data in chunk and till we 
get all data correctly we dont send confirm to end point (which really 
delete file on source system . End of our getFile operation / confirming 
file received at server ). Same way on reverse we put data in chunk to 
some temp file on destination endpoint.  after placing all data at end we 
rename it to required file. 

Let me know your thoughts 

Regards 
Yogesh Dhake 



"Walker, Jeff" <Je...@fmr.com> 
10/22/2007 11:46 AM 

Please respond to
axis-user@ws.apache.org



To
<ax...@ws.apache.org> 
cc

Subject
RE: Best way to realize stateful servicesarchitecturewithmassivedata?








Michele,
I'm not sure JMS is a viable alternative if large amounts of data are
transferred. That statement would imply there is some sort of size
cutoff. There isn't. Just remember, that with JMS you can have persisted
queues and then all of that data would have to be stored temporarily.
Personally, I think some of the lessons from JMS (message queuing in
general) can be applied to web services; keep the msgs as small as
possible.

Large data transfer (across the network) is a serious problem. There is
no easy solution that I've seen. Having said that, there are quite a few
posters who have used attachments with their web services. I have used
the older DIME format, but other posters have used the newer MTOM. I
would be interested to see what their performance was like, with large
files (ie. around a Gigabyte, say). Since MTOM chunks up the files,
transferring any sized file should theoretically be possible.

Does anyone have any opinions on using MTOM for transferring Gb and and
multi-Gb files??
-jeff




-----Original Message-----
From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
Sent: Monday, October 22, 2007 11:21 AM
To: axis-user@ws.apache.org
Subject: RE: Best way to realize stateful
servicesarchitecturewithmassivedata?

Jeff,

I mentioned JMS as possible choice if one has to transfer large amount
of data since it is asynchronous.

Michele

On Mon, 2007-10-22 at 11:10 -0400, Walker, Jeff wrote:
> You mentioned WS over JMS. Again, added delay, since another protocol
> layer is employed. 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


====================================================================================================== 

This transmittal and any attachments may contain confidential, privileged 
or sensitive information and is solely for the use of the intended 
recipient. If you are not the intended recipient, you are hereby notified 
that you have received this transmittal and any attachments in error and 
any review, dissemination, distribution or copying thereof is strictly 
prohibited. If you have received this transmittal and any attachments in 
error please notify the sender and immediately destroy the message and all 
its attachments. Any opinions herein expressed may be those of the author 
and not necessarily of Mizuho Corporate Bank, Ltd., Mizuho Corporate Bank 
(USA), Mizuho Securities USA Inc. or any other affiliates of Mizuho 
Financial Group ("Mizuho"). Mizuho accepts no responsibility for the 
accuracy or completeness of any information herein contained. 
E-Mail received by or sent from officer of Mizuho Securities USA Inc. 
(which is a registered U.S. broker-dealer and the entity through which 
Mizuho generally conducts its investment banking, capital markets, and 
securities business in the United States) is electronically archived and 
recorded and is subject to review and monitoring by and/or disclosure to 
persons other than the recipient, including (but not limited to) Mizuho 
Securities USA Inc. supervisory personnel. Such communications may be 
produced to regulatory authorities or others with legal rights to the 
information. 


Re: Best way to realize stateful servicesarchitecturewithmassivedata?

Posted by robert lazarski <ro...@gmail.com>.
That's pretty kool. Did you use any streaming to avoid putting the data in
memory and building the tree? Or did you just more or less follow the same
steps in the mtom tutorial?

Robert

On 10/22/07, Yogesh.Dhake@mizuhocbus.com <Yo...@mizuhocbus.com>
wrote:
>
>
> Hi
>
> We were in similar situation we were planning to transfer 1GB file as SOAP
> as attachment.
>
> 1)  Axis2 give pretty good support using MTOM and SWA for transferring any
> size file.  1GB file transferred in 67sec on local network. File caching
> feature is great.
> 2) But it is not good idea to transfer SOAP with such large attachment. We
> also hit some our app server & service bus handling limitation. So we
> decided to process data in chunk.  We get file data in chunk and till we get
> all data correctly we dont send confirm to end point (which really delete
> file on source system . End of our getFile operation / confirming file
> received at server ). Same way on reverse we put data in chunk to some temp
> file on destination endpoint.  after placing all data at end we rename it to
> required file.
>
> Let me know your thoughts
>
> Regards
> Yogesh Dhake
>
>
>
>  *"Walker, Jeff" <Je...@fmr.com>*
>
> 10/22/2007 11:46 AM  Please respond to
> axis-user@ws.apache.org
>
>   To
> <ax...@ws.apache.org>  cc
>
>  Subject
> RE: Best way to realize stateful servicesarchitecturewithmassivedata?
>
>
>
>
>
>
> Michele,
> I'm not sure JMS is a viable alternative if large amounts of data are
> transferred. That statement would imply there is some sort of size
> cutoff. There isn't. Just remember, that with JMS you can have persisted
> queues and then all of that data would have to be stored temporarily.
> Personally, I think some of the lessons from JMS (message queuing in
> general) can be applied to web services; keep the msgs as small as
> possible.
>
> Large data transfer (across the network) is a serious problem. There is
> no easy solution that I've seen. Having said that, there are quite a few
> posters who have used attachments with their web services. I have used
> the older DIME format, but other posters have used the newer MTOM. I
> would be interested to see what their performance was like, with large
> files (ie. around a Gigabyte, say). Since MTOM chunks up the files,
> transferring any sized file should theoretically be possible.
>
> Does anyone have any opinions on using MTOM for transferring Gb and and
> multi-Gb files??
> -jeff
>
>
>
>
> -----Original Message-----
> From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk]
> Sent: Monday, October 22, 2007 11:21 AM
> To: axis-user@ws.apache.org
> Subject: RE: Best way to realize stateful
> servicesarchitecturewithmassivedata?
>
> Jeff,
>
> I mentioned JMS as possible choice if one has to transfer large amount
> of data since it is asynchronous.
>
> Michele
>
> On Mon, 2007-10-22 at 11:10 -0400, Walker, Jeff wrote:
> > You mentioned WS over JMS. Again, added delay, since another protocol
> > layer is employed.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
> *
> ======================================================================================================
> This transmittal and any attachments may contain confidential, privileged
> or sensitive information and is solely for the use of the intended
> recipient. If you are not the intended recipient, you are hereby notified
> that you have received this transmittal and any attachments in error and any
> review, dissemination, distribution or copying thereof is strictly
> prohibited. If you have received this transmittal and any attachments in
> error please notify the sender and immediately destroy the message and all
> its attachments. Any opinions herein expressed may be those of the author
> and not necessarily of Mizuho Corporate Bank, Ltd., Mizuho Corporate Bank
> (USA), Mizuho Securities USA Inc. or any other affiliates of Mizuho
> Financial Group ("Mizuho"). Mizuho accepts no responsibility for the
> accuracy or completeness of any information herein contained.
> E-Mail received by or sent from officer of Mizuho Securities USA Inc.
> (which is a registered U.S. broker-dealer and the entity through which
> Mizuho generally conducts its investment banking, capital markets, and
> securities business in the United States) is electronically archived and
> recorded and is subject to review and monitoring by and/or disclosure to
> persons other than the recipient, including (but not limited to) Mizuho
> Securities USA Inc. supervisory personnel. Such communications may be
> produced to regulatory authorities or others with legal rights to the
> information.*
>

RE: Best way to realize stateful servicesarchitecturewithmassivedata?

Posted by Yo...@mizuhocbus.com.
Hi 

We were in similar situation we were planning to transfer 1GB file as SOAP 
as attachment. 

1)  Axis2 give pretty good support using MTOM and SWA for transferring any 
size file.  1GB file transferred in 67sec on local network. File caching 
feature is great.
2) But it is not good idea to transfer SOAP with such large attachment. We 
also hit some our app server & service bus handling limitation. So we 
decided to process data in chunk.  We get file data in chunk and till we 
get all data correctly we dont send confirm to end point (which really 
delete file on source system . End of our getFile operation / confirming 
file received at server ). Same way on reverse we put data in chunk to 
some temp file on destination endpoint.  after placing all data at end we 
rename it to required file. 

Let me know your thoughts

Regards
Yogesh Dhake 




"Walker, Jeff" <Je...@fmr.com> 
10/22/2007 11:46 AM
Please respond to
axis-user@ws.apache.org


To
<ax...@ws.apache.org>
cc

Subject
RE: Best way to realize stateful servicesarchitecturewithmassivedata?






Michele,
I'm not sure JMS is a viable alternative if large amounts of data are
transferred. That statement would imply there is some sort of size
cutoff. There isn't. Just remember, that with JMS you can have persisted
queues and then all of that data would have to be stored temporarily.
Personally, I think some of the lessons from JMS (message queuing in
general) can be applied to web services; keep the msgs as small as
possible.

Large data transfer (across the network) is a serious problem. There is
no easy solution that I've seen. Having said that, there are quite a few
posters who have used attachments with their web services. I have used
the older DIME format, but other posters have used the newer MTOM. I
would be interested to see what their performance was like, with large
files (ie. around a Gigabyte, say). Since MTOM chunks up the files,
transferring any sized file should theoretically be possible.

Does anyone have any opinions on using MTOM for transferring Gb and and
multi-Gb files??
-jeff


 

-----Original Message-----
From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
Sent: Monday, October 22, 2007 11:21 AM
To: axis-user@ws.apache.org
Subject: RE: Best way to realize stateful
servicesarchitecturewithmassivedata?

Jeff,

I mentioned JMS as possible choice if one has to transfer large amount
of data since it is asynchronous.

Michele

On Mon, 2007-10-22 at 11:10 -0400, Walker, Jeff wrote:
> You mentioned WS over JMS. Again, added delay, since another protocol
> layer is employed. 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



======================================================================================================
This transmittal and any attachments may contain confidential, privileged or sensitive information and is solely for the use of the intended recipient. If you are not the intended recipient, you are hereby notified that you have received this transmittal and any attachments in error and any review, dissemination, distribution or copying thereof is strictly prohibited. If you have received this transmittal and any attachments in error please notify the sender and immediately destroy the message and all its attachments. Any opinions herein expressed may be those of the author and not necessarily of Mizuho Corporate Bank, Ltd., Mizuho Corporate Bank (USA), Mizuho Securities USA Inc. or any other affiliates of Mizuho Financial Group (”Mizuho”). Mizuho accepts no responsibility for the accuracy or completeness of any information herein contained.
E-Mail received by or sent from officer of Mizuho Securities USA Inc. (which is a registered U.S. broker-dealer and the entity through which Mizuho generally conducts its investment banking, capital markets, and securities business in the United States) is electronically archived and recorded and is subject to review and monitoring by and/or disclosure to persons other than the recipient, including (but not limited to) Mizuho Securities USA Inc. supervisory personnel.  Such communications may be produced to regulatory authorities or others with legal rights to the information.

RE: Best way to realize stateful servicesarchitecturewithmassivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Michele,
I'm not sure JMS is a viable alternative if large amounts of data are
transferred. That statement would imply there is some sort of size
cutoff. There isn't. Just remember, that with JMS you can have persisted
queues and then all of that data would have to be stored temporarily.
Personally, I think some of the lessons from JMS (message queuing in
general) can be applied to web services; keep the msgs as small as
possible.

Large data transfer (across the network) is a serious problem. There is
no easy solution that I've seen. Having said that, there are quite a few
posters who have used attachments with their web services. I have used
the older DIME format, but other posters have used the newer MTOM. I
would be interested to see what their performance was like, with large
files (ie. around a Gigabyte, say). Since MTOM chunks up the files,
transferring any sized file should theoretically be possible.

Does anyone have any opinions on using MTOM for transferring Gb and and
multi-Gb files??
-jeff


 

-----Original Message-----
From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
Sent: Monday, October 22, 2007 11:21 AM
To: axis-user@ws.apache.org
Subject: RE: Best way to realize stateful
servicesarchitecturewithmassivedata?

Jeff,

I mentioned JMS as possible choice if one has to transfer large amount
of data since it is asynchronous.

Michele

On Mon, 2007-10-22 at 11:10 -0400, Walker, Jeff wrote:
> You mentioned WS over JMS. Again, added delay, since another protocol
> layer is employed. 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecturewithmassivedata?

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
Jeff,

I mentioned JMS as possible choice if one has to transfer large amount
of data since it is asynchronous.

Michele

On Mon, 2007-10-22 at 11:10 -0400, Walker, Jeff wrote:
> You mentioned WS over JMS. Again, added delay, since another protocol
> layer is employed. 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecturewithmassivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Yes,
I agree. Coarse grained operations on the composite interface. But a
stateful service will be so difficult to build, coarse grained or not,
if you have little or no control over the clients. If you do have
control over them then a stateful service could possibly be the better
choice. (Just be careful with error situations).

I did forget network delay. Compare that to marshaling/unmarshaling of
data to XML for every fine-grained stateful call. Still, the composite
calls will take a long time and since it is difficult to estimate, the
client is better off making the calls asynchronously. That is the point
I really wanted to make.

You mentioned WS over JMS. Again, added delay, since another protocol
layer is employed. I've never built a web service running over JMS, but
it is certainly possible. Other posters have previously mentioned JMS
and web services. They might be able to help you out there.
-jeff


-----Original Message-----
From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
Sent: Monday, October 22, 2007 10:49 AM
To: axis-user@ws.apache.org
Subject: RE: Best way to realize stateful services
architecturewithmassivedata?

Ok, now I get your point. But solution # 3 will work *only* if the
"front-end" service exposes coarse grained operations, right? If so,
can't you expose coarse-grained operations in your stateful WS as well?

In point (c) of your conclusions you state that the third approach would
be a bit faster than the first one. However you forget to take the
network delay into account.

Michele

On Mon, 2007-10-22 at 10:38 -0400, Walker, Jeff wrote:
> Well,
> 
> 1st Approach: Stateful Service
> Most applications are finite state machines. People tend to want to
put
> a web service on the front of their application, to say they are "SOA
> compliant" or simply because they think a web service will give their
> application some advantage. But because the application itself is
> stateful, most likely a first attempt at the web service will produce
a
> stateful service.
> 
> You can definitely create stateful web services. It's just that they
are
> very difficult to use. How do you force the client to make the
operation
> calls in the expected calling sequence? The client will likely need to
> keep track of the order of the operations it has called. This is
> complicated book-keeping and often the client unable or unwilling to
do
> this. Errors become a big issue. What do you do when the 5th call of 7
> expected calls fails? Should you abandon altogether? How do you retry?
> The complexity gets ugly, quickly.
> 
> 
> 2nd Approach: Stateless Service
> Here, the designer begins to see that a stateless service is far
easier
> to handle and create. Any operation on the web service interface can
be
> called at any time. No sequence of calls is necessary. Each call is
> fully independent of each other. Errors are localized to that called
> operation, and soap faults sent back to the client are localized to
that
> operation. It's all very clean. It sounds great, but if my above
premise
> is true (that most applications are stateful) then how can you mesh
the
> multiple states of the application with a set of operations in a
> stateless service? What if a request comes in and is passed to the
> application and the application cannot service that request because it
> is no longer in a state that can satisfactorily create the right
> response?
> 
> 
> 3rd Approach: Intermediate Composite Service
> My suggestion (and it is just one of many possible design solutions,
I'm
> sure) is to create an intermediate web service that communicates to
the
> client. This intermediate, composite service offers a stateless
> interface to clients. Each stateless operation on it results in a
> sequence of stateful calls to the actual web service on behalf of the
> client. The composite has some intelligence to decide what to do when
> one of the calls in the middle of the sequence fails. (Usually it
> abandons the whole calling sequence and returns a soap fault to the
> client, but not always. It could conceivably abandon the current
> sequence and start a new one. But that requires memory of the calls
and
> data passed in previously, before the error occurred).
> 
> a). The client is saved from knowing anything about the statefulness
of
> your application.
> b). Your stateful application usually doesn't need altering. A big
plus
> if the code is old and hard to maintain.
> c). The composite service takes approx. as long as the sum of stateful
> calls would take. (Slightly less because the marshaling of data into
XML
> and back is less. It is only done on the one initial call from the
> client).
> d). Because the composite service is still a fairly long running
service
> (you don't know exactly how long it will take on each of its
> operations), it is best called asynchronously, but that is another
> story.
> e). There are drawbacks. It means another service has to be written,
> tested, maintained and deployed to production.
> 
> The best approach is obviously to simplify and just create a fully
> stateless service, if that will work with your application. But don't
be
> surprised if it doesn't fit well.
> -jeff
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
> Sent: Monday, October 22, 2007 9:41 AM
> To: axis-user@ws.apache.org
> Subject: RE: Best way to realize stateful services architecture
> withmassivedata?
> 
> On Mon, 2007-10-22 at 09:09 -0400, Walker, Jeff wrote:
> > 1. Web services shouldn't be stateful. (Far harder to keep that
> > promise than to recite it). My own current service is stateful, and
it
> > breaks the SOA rules we have in place here, causing me no end to
> > issues. Removing the statefulness once it creeps into your project
is
> > like getting blood from a stone. Best remedy is to create a
composite
> > service that is stateless, and that talks to the client. It also
> > formulates a series of web service calls to your stateful service
that
> > does the real work. The composite service then returns the result to
> > the client. BPEL could help here.
> 
> Jeff, can you tell me about a non-trivial stateless web service?
> What is the difference between the first (i.e. the stateful WS talks
to
> the client) and the second approach (i.e. the stateful WS is hidden by
a
> stateless one)?
> 
> > 
> > 2. Web services are not suitable for large data transfer, at all. I
> > have found past about 20Mb of data per request/response and the
> > service starts to timeout. That is even when RAM is added and
> > processors are upgraded. On one of my previous web services gigs I
was
> > asked to build a web service to transfer files. They grew from 20Mb
to
> > 75Mb with few troubles except for the occasional timeout, then to 1
> > Gig in size. The remedy was to call the service asynchronously.
There
> > are various Microsoft and IBM websites that will explain that mode
of
> > calling. (If you need them, I can send you the article urls, I just
> > don't have them handy right now).
> > Remedy is to rethink your architecture. Web services will perform
very
> > badly for you on large data sets. (So bad as to be totally
unusable).
> > So simply don't use the web services for the data transfer. Try FTP
> > instead, and use the web service to generate the files and pass back
> > the address of where to find the files. It sounds like the
granularity
> > of your service is too fine-grained. You need to think in higher
terms
> > for the web service operations. 
> 
> What about WS with JMS?
> 
> 
> Michele
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture withmassivedata?

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
Ok, now I get your point. But solution # 3 will work *only* if the
"front-end" service exposes coarse grained operations, right? If so,
can't you expose coarse-grained operations in your stateful WS as well?

In point (c) of your conclusions you state that the third approach would
be a bit faster than the first one. However you forget to take the
network delay into account.

Michele

On Mon, 2007-10-22 at 10:38 -0400, Walker, Jeff wrote:
> Well,
> 
> 1st Approach: Stateful Service
> Most applications are finite state machines. People tend to want to put
> a web service on the front of their application, to say they are "SOA
> compliant" or simply because they think a web service will give their
> application some advantage. But because the application itself is
> stateful, most likely a first attempt at the web service will produce a
> stateful service.
> 
> You can definitely create stateful web services. It's just that they are
> very difficult to use. How do you force the client to make the operation
> calls in the expected calling sequence? The client will likely need to
> keep track of the order of the operations it has called. This is
> complicated book-keeping and often the client unable or unwilling to do
> this. Errors become a big issue. What do you do when the 5th call of 7
> expected calls fails? Should you abandon altogether? How do you retry?
> The complexity gets ugly, quickly.
> 
> 
> 2nd Approach: Stateless Service
> Here, the designer begins to see that a stateless service is far easier
> to handle and create. Any operation on the web service interface can be
> called at any time. No sequence of calls is necessary. Each call is
> fully independent of each other. Errors are localized to that called
> operation, and soap faults sent back to the client are localized to that
> operation. It's all very clean. It sounds great, but if my above premise
> is true (that most applications are stateful) then how can you mesh the
> multiple states of the application with a set of operations in a
> stateless service? What if a request comes in and is passed to the
> application and the application cannot service that request because it
> is no longer in a state that can satisfactorily create the right
> response?
> 
> 
> 3rd Approach: Intermediate Composite Service
> My suggestion (and it is just one of many possible design solutions, I'm
> sure) is to create an intermediate web service that communicates to the
> client. This intermediate, composite service offers a stateless
> interface to clients. Each stateless operation on it results in a
> sequence of stateful calls to the actual web service on behalf of the
> client. The composite has some intelligence to decide what to do when
> one of the calls in the middle of the sequence fails. (Usually it
> abandons the whole calling sequence and returns a soap fault to the
> client, but not always. It could conceivably abandon the current
> sequence and start a new one. But that requires memory of the calls and
> data passed in previously, before the error occurred).
> 
> a). The client is saved from knowing anything about the statefulness of
> your application.
> b). Your stateful application usually doesn't need altering. A big plus
> if the code is old and hard to maintain.
> c). The composite service takes approx. as long as the sum of stateful
> calls would take. (Slightly less because the marshaling of data into XML
> and back is less. It is only done on the one initial call from the
> client).
> d). Because the composite service is still a fairly long running service
> (you don't know exactly how long it will take on each of its
> operations), it is best called asynchronously, but that is another
> story.
> e). There are drawbacks. It means another service has to be written,
> tested, maintained and deployed to production.
> 
> The best approach is obviously to simplify and just create a fully
> stateless service, if that will work with your application. But don't be
> surprised if it doesn't fit well.
> -jeff
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
> Sent: Monday, October 22, 2007 9:41 AM
> To: axis-user@ws.apache.org
> Subject: RE: Best way to realize stateful services architecture
> withmassivedata?
> 
> On Mon, 2007-10-22 at 09:09 -0400, Walker, Jeff wrote:
> > 1. Web services shouldn't be stateful. (Far harder to keep that
> > promise than to recite it). My own current service is stateful, and it
> > breaks the SOA rules we have in place here, causing me no end to
> > issues. Removing the statefulness once it creeps into your project is
> > like getting blood from a stone. Best remedy is to create a composite
> > service that is stateless, and that talks to the client. It also
> > formulates a series of web service calls to your stateful service that
> > does the real work. The composite service then returns the result to
> > the client. BPEL could help here.
> 
> Jeff, can you tell me about a non-trivial stateless web service?
> What is the difference between the first (i.e. the stateful WS talks to
> the client) and the second approach (i.e. the stateful WS is hidden by a
> stateless one)?
> 
> > 
> > 2. Web services are not suitable for large data transfer, at all. I
> > have found past about 20Mb of data per request/response and the
> > service starts to timeout. That is even when RAM is added and
> > processors are upgraded. On one of my previous web services gigs I was
> > asked to build a web service to transfer files. They grew from 20Mb to
> > 75Mb with few troubles except for the occasional timeout, then to 1
> > Gig in size. The remedy was to call the service asynchronously. There
> > are various Microsoft and IBM websites that will explain that mode of
> > calling. (If you need them, I can send you the article urls, I just
> > don't have them handy right now).
> > Remedy is to rethink your architecture. Web services will perform very
> > badly for you on large data sets. (So bad as to be totally unusable).
> > So simply don't use the web services for the data transfer. Try FTP
> > instead, and use the web service to generate the files and pass back
> > the address of where to find the files. It sounds like the granularity
> > of your service is too fine-grained. You need to think in higher terms
> > for the web service operations. 
> 
> What about WS with JMS?
> 
> 
> Michele
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture withmassivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Well,

1st Approach: Stateful Service
Most applications are finite state machines. People tend to want to put
a web service on the front of their application, to say they are "SOA
compliant" or simply because they think a web service will give their
application some advantage. But because the application itself is
stateful, most likely a first attempt at the web service will produce a
stateful service.

You can definitely create stateful web services. It's just that they are
very difficult to use. How do you force the client to make the operation
calls in the expected calling sequence? The client will likely need to
keep track of the order of the operations it has called. This is
complicated book-keeping and often the client unable or unwilling to do
this. Errors become a big issue. What do you do when the 5th call of 7
expected calls fails? Should you abandon altogether? How do you retry?
The complexity gets ugly, quickly.


2nd Approach: Stateless Service
Here, the designer begins to see that a stateless service is far easier
to handle and create. Any operation on the web service interface can be
called at any time. No sequence of calls is necessary. Each call is
fully independent of each other. Errors are localized to that called
operation, and soap faults sent back to the client are localized to that
operation. It's all very clean. It sounds great, but if my above premise
is true (that most applications are stateful) then how can you mesh the
multiple states of the application with a set of operations in a
stateless service? What if a request comes in and is passed to the
application and the application cannot service that request because it
is no longer in a state that can satisfactorily create the right
response?


3rd Approach: Intermediate Composite Service
My suggestion (and it is just one of many possible design solutions, I'm
sure) is to create an intermediate web service that communicates to the
client. This intermediate, composite service offers a stateless
interface to clients. Each stateless operation on it results in a
sequence of stateful calls to the actual web service on behalf of the
client. The composite has some intelligence to decide what to do when
one of the calls in the middle of the sequence fails. (Usually it
abandons the whole calling sequence and returns a soap fault to the
client, but not always. It could conceivably abandon the current
sequence and start a new one. But that requires memory of the calls and
data passed in previously, before the error occurred).

a). The client is saved from knowing anything about the statefulness of
your application.
b). Your stateful application usually doesn't need altering. A big plus
if the code is old and hard to maintain.
c). The composite service takes approx. as long as the sum of stateful
calls would take. (Slightly less because the marshaling of data into XML
and back is less. It is only done on the one initial call from the
client).
d). Because the composite service is still a fairly long running service
(you don't know exactly how long it will take on each of its
operations), it is best called asynchronously, but that is another
story.
e). There are drawbacks. It means another service has to be written,
tested, maintained and deployed to production.

The best approach is obviously to simplify and just create a fully
stateless service, if that will work with your application. But don't be
surprised if it doesn't fit well.
-jeff






-----Original Message-----
From: Michele Mazzucco [mailto:Michele.Mazzucco@ncl.ac.uk] 
Sent: Monday, October 22, 2007 9:41 AM
To: axis-user@ws.apache.org
Subject: RE: Best way to realize stateful services architecture
withmassivedata?

On Mon, 2007-10-22 at 09:09 -0400, Walker, Jeff wrote:
> 1. Web services shouldn't be stateful. (Far harder to keep that
> promise than to recite it). My own current service is stateful, and it
> breaks the SOA rules we have in place here, causing me no end to
> issues. Removing the statefulness once it creeps into your project is
> like getting blood from a stone. Best remedy is to create a composite
> service that is stateless, and that talks to the client. It also
> formulates a series of web service calls to your stateful service that
> does the real work. The composite service then returns the result to
> the client. BPEL could help here.

Jeff, can you tell me about a non-trivial stateless web service?
What is the difference between the first (i.e. the stateful WS talks to
the client) and the second approach (i.e. the stateful WS is hidden by a
stateless one)?

> 
> 2. Web services are not suitable for large data transfer, at all. I
> have found past about 20Mb of data per request/response and the
> service starts to timeout. That is even when RAM is added and
> processors are upgraded. On one of my previous web services gigs I was
> asked to build a web service to transfer files. They grew from 20Mb to
> 75Mb with few troubles except for the occasional timeout, then to 1
> Gig in size. The remedy was to call the service asynchronously. There
> are various Microsoft and IBM websites that will explain that mode of
> calling. (If you need them, I can send you the article urls, I just
> don't have them handy right now).
> Remedy is to rethink your architecture. Web services will perform very
> badly for you on large data sets. (So bad as to be totally unusable).
> So simply don't use the web services for the data transfer. Try FTP
> instead, and use the web service to generate the files and pass back
> the address of where to find the files. It sounds like the granularity
> of your service is too fine-grained. You need to think in higher terms
> for the web service operations. 

What about WS with JMS?


Michele


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture with massivedata?

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
On Mon, 2007-10-22 at 09:09 -0400, Walker, Jeff wrote:
> 1. Web services shouldn't be stateful. (Far harder to keep that
> promise than to recite it). My own current service is stateful, and it
> breaks the SOA rules we have in place here, causing me no end to
> issues. Removing the statefulness once it creeps into your project is
> like getting blood from a stone. Best remedy is to create a composite
> service that is stateless, and that talks to the client. It also
> formulates a series of web service calls to your stateful service that
> does the real work. The composite service then returns the result to
> the client. BPEL could help here.

Jeff, can you tell me about a non-trivial stateless web service?
What is the difference between the first (i.e. the stateful WS talks to
the client) and the second approach (i.e. the stateful WS is hidden by a
stateless one)?

> 
> 2. Web services are not suitable for large data transfer, at all. I
> have found past about 20Mb of data per request/response and the
> service starts to timeout. That is even when RAM is added and
> processors are upgraded. On one of my previous web services gigs I was
> asked to build a web service to transfer files. They grew from 20Mb to
> 75Mb with few troubles except for the occasional timeout, then to 1
> Gig in size. The remedy was to call the service asynchronously. There
> are various Microsoft and IBM websites that will explain that mode of
> calling. (If you need them, I can send you the article urls, I just
> don't have them handy right now).
> Remedy is to rethink your architecture. Web services will perform very
> badly for you on large data sets. (So bad as to be totally unusable).
> So simply don't use the web services for the data transfer. Try FTP
> instead, and use the web service to generate the files and pass back
> the address of where to find the files. It sounds like the granularity
> of your service is too fine-grained. You need to think in higher terms
> for the web service operations. 

What about WS with JMS?


Michele


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


RE: Best way to realize stateful services architecture with massivedata?

Posted by "Walker, Jeff" <Je...@fmr.com>.
Doesn't look like anyone replied. So here goes..
1. Web services shouldn't be stateful. (Far harder to keep that promise than to recite it). My own current service is stateful, and it breaks the SOA rules we have in place here, causing me no end to issues. Removing the statefulness once it creeps into your project is like getting blood from a stone. Best remedy is to create a composite service that is stateless, and that talks to the client. It also formulates a series of web service calls to your stateful service that does the real work. The composite service then returns the result to the client. BPEL could help here.

2. Web services are not suitable for large data transfer, at all. I have found past about 20Mb of data per request/response and the service starts to timeout. That is even when RAM is added and processors are upgraded. On one of my previous web services gigs I was asked to build a web service to transfer files. They grew from 20Mb to 75Mb with few troubles except for the occasional timeout, then to 1 Gig in size. The remedy was to call the service asynchronously. There are various Microsoft and IBM websites that will explain that mode of calling. (If you need them, I can send you the article urls, I just don't have them handy right now).
Remedy is to rethink your architecture. Web services will perform very badly for you on large data sets. (So bad as to be totally unusable). So simply don't use the web services for the data transfer. Try FTP instead, and use the web service to generate the files and pass back the address of where to find the files. It sounds like the granularity of your service is too fine-grained. You need to think in higher terms for the web service operations.
Just some thoughts.
-jeff

 

-----Original Message-----
From: Florian Georg [mailto:florian.georg@uni-konstanz.de] 
Sent: Sunday, October 21, 2007 11:29 AM
To: axis-user@ws.apache.org
Subject: Best way to realize stateful services architecture with massivedata?

I´m currently thinking of the best way to realize data-intensive
"workflows" composed of web services (similar e.g. to a BPEL engine).
I´ll looking at Axis2 engine for that, but I´m unsure how it could fit
my special needs:

What I need to do is to be able to call subsequent operations on a
service (e.g. configure(), execute(), getNextResults(), reset(), ..).
Background is that these are very long running services which consume
and produce potentially some GBs of data.
The services are dependend of each other, e.g. execute() may only be
called after a predecessor service has successfully executed.
Produced data should be re-usable by differend nodes, e.g. passing
around and re-generate should be minimized.

What do you think of this?
What does Axis provide me for this scenario? 
Should I use, e.g. WS-Resource (Muse) for this? An ESB ?
Or should I even consider mapping this into BPEL and use a process
engine?
(ok, I´ll stop here before it becomes too off-topic)

Any remarks would be greatly appreciated.

thanks in advance
  -- Florian



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org