I've got a few ideas:

1) There is no rule that says your service class must be in an aar. In
can be in another jar or in WEB-INF/classes , for example. The
services.xml defines the ServiceClass, but that class can be anywhere
in a higher classloader. This means all your WAR options, such as
exploded, can apply.

2) Use the embedded option as described for a war, but for an aar:

http://www.wso2.net/kb/90

3) Use ehcache . I know this works in tomcat / axis2  as I use it in
my serviceClass sometimes. If you use hibernate you already have
ehcache.

HTH,
Robert
http://www.braziloutsource.com/

On 7/11/06, M S <[EMAIL PROTECTED]> wrote:
Hi,

 Well this is my Web Service file:


 import java.io.*;

 public class MyService2 {

     public String echo(String password) {

         int ctr = 1;
             FileInputStream fin;
             try {
             fin = (FileInputStream)
getClass().getClassLoader().getResourceAsStream("prime.txt");
             BufferedReader br
               = new BufferedReader(new InputStreamReader(fin));
             ctr = Integer.parseInt(br.readLine());
             fin.close();
             } catch (Exception e) { System.out.println("prime.txt does not
exist. Creating prime.txt...");}


             boolean primeReached = false;
             while (!primeReached) {
                 ctr++;
                 if (isPrime(ctr) && ctr!=4) {
                     primeReached = true;
                     break;
                 }
             }
             PrintWriter fout;
             try {
             fout = new PrintWriter(new FileWriter("c:\\prime.txt"));

             fout.println(String.valueOf(ctr));
             fout.close();
             } catch (Exception e) {e.printStackTrace();}


         return Integer.valueOf(ctr).toString();
     }

     private boolean isPrime(int p) {
         int i;
         for(i=2;i<(p/2);i++) {
             if ( i*(p/i) == p ) return(false);
         }
         return(true);
     }

 }

 This is my services.xml:
 <service>
     <operation name="echo">
         <messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
     </operation>
     <parameter name="ServiceClass"
locked="false">MyService2</parameter>
 </service>

 This is my WSDL:
 <wsdl:definitions targetNamespace="http://ws.apache.org/axis2";>
 -
     <wsdl:types>
 -
     <xs:schema targetNamespace="http:///xsd"; elementFormDefault="qualified"
attributeFormDefault="qualified">
 -
     <xs:element name="echo">
 -
     <xs:complexType>
 -
     <xs:sequence>
 <xs:element type="xs:string" name="param0"/>
 </xs:sequence>
 </xs:complexType>
 </xs:element>
 -
     <xs:element name="echoResponse">
 -
     <xs:complexType>
 -
     <xs:sequence>
 <xs:element type="xs:string" name="return"/>
 </xs:sequence>
 </xs:complexType>
 </xs:element>
 </xs:schema>
 </wsdl:types>
 -
     <wsdl:message name="echoMessage">
 <wsdl:part element="ns0:echo" name="part1"/>
 </wsdl:message>
 -
     <wsdl:message name="echoResponse">
 <wsdl:part element="ns0:echoResponse" name="part1"/>
 </wsdl:message>
 -
     <wsdl:portType name="MyService2PortType">
 -
     <wsdl:operation name="echo">
 <wsdl:input message="axis2:echoMessage"/>
 <wsdl:output message="axis2:echoResponse"/>
 </wsdl:operation>
 </wsdl:portType>
 -
     <wsdl:binding type="axis2:MyService2PortType"
name="MyService2SOAP11Binding">
 <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
 -
     <wsdl:operation name="echo">
 <soap:operation style="document" soapAction="urn:echo"/>
 -
     <wsdl:input>
 <soap:body use="literal"/>
 </wsdl:input>
 -
     <wsdl:output>
 <soap:body use="literal"/>
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
 -
     <wsdl:binding type="axis2:MyService2PortType"
name="MyService2SOAP12Binding">
 <soap12:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
 -
     <wsdl:operation name="echo">
 <soap12:operation style="document" soapAction="urn:echo"/>
 -
     <wsdl:input>
 <soap12:body use="literal"/>
 </wsdl:input>
 -
     <wsdl:output>
 <soap12:body use="literal"/>
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
 -
     <wsdl:binding type="axis2:MyService2PortType"
name="MyService2HttpBinding">
 <http:binding verb="POST"/>
 -
     <wsdl:operation name="echo">
 <http:operation location="echo"/>
 -
     <wsdl:input>
 <mime:content type="text/xml"/>
 </wsdl:input>
 -
     <wsdl:output>
 <mime:content type="text/xml"/>
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
 -
     <wsdl:service name="MyService2">
 -
     <wsdl:port binding="axis2:MyService2SOAP11Binding"
name="MyService2SOAP11port_http">
 <soap:address
location="http://localhost:8080/axis2/services/MyService2"/>
 </wsdl:port>
 -
     <wsdl:port binding="axis2:MyService2SOAP12Binding"
name="MyService2SOAP12port_http">
 <soap12:address
location="http://localhost:8080/axis2/services/MyService2"/>
 </wsdl:port>
 -
     <wsdl:port binding="axis2:MyService2HttpBinding"
name="MyService2Httpport0">
 <http:address
location="http://localhost:8080/axis2/rest/MyService2"/>
 </wsdl:port>
 </wsdl:service>
 </wsdl:definitions>

 And this is my client:
 public class Client {

     public static void main(String[] args) throws Exception {

         MyService2Stub stub = new MyService2Stub();

         //Create the request
         MyService2Stub.Echo request = new MyService2Stub.Echo();
         request.setParam0("3IsAnOddPrime");

         //Invoke the service
         EchoResponse response = stub.echo(request);

         System.out.println("Response : " + response.get_return());
     }


 I get "Response: 1" no matter what I do with the Web Service file for some
reason.



On 7/11/06, Rodrigo Ruiz <[EMAIL PROTECTED]> wrote:
> Hi again, :-)
>
> Mmmmh, I haven't heard anything about this kind of problems with .aar
> files. I am afraid I don't use Axis2 myself, so my knowledge is limited
:-P
>
> Where are you trying to write the file, and how do you get the path?
> Have you tried to write in a fixed absolute path? If you can't create a
> file, for example, at the user's home directory, it could be a
> permissions problem (either at file level, or at server security system
> level).
>
> AFAIK, .aar files can also be deployed as directories, but I will have
> to redirect you to the Axis documentation site (or to anyone else that
> could answer this), I'm sorry.
>
> Michael, there are several good articles at theserverside, and many
> implementations at a "google click" distance ;-)
>
> I would recommend you to start by looking at the ehcache project
> (http://ehcache.sourceforge.net/). It is pretty well documented.
>
> Regards,
> Rodrigo Ruiz
>
>
> Rodrigo Ruiz wrote:
> > Depending on the servlet container you are using, war archives may be
> > considered read-only. In this case you will not be able to write a file
> > within the application context.
> >
> > Some alternatives you have are:
> >
> > - Deploy your application as an "exploded war" (the exact name will vary
> > from container to container). When deploying in this mode, your classes
> > can write files at any location within your context.
> >
> > - Use an absolute path for your file. The path may be configured through
> > JNDI, or System properties, or you might put it into a subfolder of the
> > user home (this is very common in *nix environments).
> >
> >
> > Other options imply to use a different storage type:
> >
> > - Use the User Preferences API to store the value. This API is available
> > starting from Java 1.4.
> >
> > - Store it into the JNDI tree. This only works if the JNDI
> > implementation is writeable and persistent. For example, AFAIK, it will
> > not work in Tomcat
> >
> > - Use a DBMS. It may seem an overkill solution, but there are some very
> > lightweight databases there. They may be not appropriate for enterprise
> > solutions, but for a single value they are more than enough. Moreover,
> > it is possible that you already use one for another service.
> >
> > - Use a distributed cache. Another overkill solution, but you may be
> > already using it for another service, or find out other places where it
> > may be useful ;-)
> >
> > These options, although more complex to implement, bring you an extra
> > feature. They make your service "distributable", that is, deployable on
> > a cluster of redundant servers. With local files, each node in the
> > cluster would have its own "counter".
> >
> > Hope this helps,
> > Rodrigo Ruiz
> >
> > Michael McIntosh wrote:
> >> Your problem seems very similar to mine - It would be great if someone
> >> would point us to the documentation for the rules related to file
access
> >> (read/write, path, etc.)
> >>
> >> Thanks,
> >> Mike
> >>
> >> "M S" < [EMAIL PROTECTED]> wrote on 07/10/2006 10:40:47 AM:
> >>
> >>> Hi,
> >>>
> >>> I have a web service that is supposed to generate prime numbers. I
> >>> store the latest generated prime number in a file called prime.txt.
> >>> So for example, if the program is run and generated 3, 3 will be
> >>> stored in prime.txt and next time it will generate 5. If there is no
> >>> prime.txt, the program will generate 1 and try to create prime.txt.
> >>>
> >>> My problem is that my web service application does not seem to be
> >>> able to read/write a file. Any ideas on how this should be done?
> >>> Notice that the prime.txt must be able to saved for the duration of
> >>> the web service's lifetime.
> >>>
> >>> Regards
> >>
---------------------------------------------------------------------
> >> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >
>
> --
>
-------------------------------------------------------------------
> GRIDSYSTEMS                    Rodrigo Ruiz Aguayo
> Parc Bit - Son Espanyol
> 07120 Palma de Mallorca        mailto:[EMAIL PROTECTED]
> Baleares - EspaƱa              Tel:+34-971435085
Fax:+34-971435082
> http://www.gridsystems.com
>
-------------------------------------------------------------------
>
>
> --
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.1.394 / Virus Database: 268.9.10/384 - Release Date: 10/07/2006
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to