Potential Answer to your question 1: This is a very good idea. We use a
payload which is a collection of named collections of elements of
field-name field-value pairs,; and we had to code the conversion from an
Axiom tree structure our self into several named axutil hash-table where
we can access elements by a name to get its value.  Unfortunately this
hash-table is not sorted among the names, and the sequence off adding
hash-table entries is not maintained for the iterator. But it is a fast
hash-table alog. Happy to see this as official code. 

 

Potential Answer to your Question2: Using AXIS2_FREE at the wrong time
results in crash; in this case not using AXIS2_FREE makes your code go.
So far we have not seen memory leaks just removing the crashing
statement. Better once too much first. And if something like blue-magic
has implicitly released the memory at a lower layer, i.e. like axutil or
libxml or the like, making your code now crash when you call AXIS2_FREE,
is a working fast approach for us.

 

Potential Answer to your Question 4: if your Client is coded in PHP and
you assume that your web service is implemented in Axis2/C, and you
understand that it is isolated by some protocol, then just making your
client calling the service should work. 

 

How to make PHP code call a C/C++ function is unknown to me as I never
used PHP so far. In Java it would be the JNI to use (Java Native
Interface) to call into C/C++ or have C/C++ call Java Classes. Maybe
there is a similar thing for PHP.

 

Josef

 

 

 

Von: dustfinger x [mailto:[email protected]] 
Gesendet: Freitag, 1. April 2011 21:42
An: [email protected]
Betreff: Questions regarding RESTful service,parameter parsing,php
client

 

Hi,

I am brand new to the list. I sent a request to
<[email protected]> before making this post, but there are no
FAQ's available yet. I am a newbie, so I apologize in advance to anyone
that I annoy with my amateur questions. I will present the environment
that I am working in, what I am trying to accomplish and finally a list
of questions that I hope to get answered.

 

Environment:

OS: 2.6.34-gentoo-r1 #2 SMP Mon Sep 13 00:17:55 MDT 2010 x86_64 Intel(R)
Core(TM)2 CPU 6600 @ 2.40GHz GenuineIntel GNU/Linux
Servers: axis2_http_server 1.6.0, www-servers/apache-2.2.16
C/C++ Compiler: sys-devel/gcc-4.4.3-r2
Web template language: dev-lang/php-5.3.5

Brief Goal Description:
To Write a RESTful service with the responsability of acting as the Data
Access Layer for an application. The service must be able to be called
from both PHP and another C++ application.

Questions:

//QUESTION 1
1. What is the cleanest way to access the values of the parameters that
I am passing to my restful service. Currently I have been calling
axiom_node_get_first_child followed by subsequent calls to
axiom_node_get_next_sibling to travers my parameter list. I was
wondering if the framework has a hash data structure that I could pass
in the name of the parameter and it would return me the value? If such a
structure is not provided by the framework, would writing one be a good
approach to make my code more maintainable? My plan would be to pass the
root node to a wrapper class and then implement a hasKey and getValue
method.

//QUESTION 2
2. I am not fully clear on when to use the AXIS2_FREE method to clean up
memory. Consider the following example that comes for a GET method:

if(AXIOM_ELEMENT == nodeType){
    axis2_char_t *nodeCharText = NULL;
    nodeCharText =
static_cast<axis2_char_t*>(axiom_element_to_string(childElement,
environment, type_node));
    AXIS2_LOG_USER(environment->log, AXIS2_LOG_SI, "type_node child text
of element= [%s] ", nodeCharText);

    if(NULL != nodeCharText){
      AXIS2_FREE(environment->allocator, nodeCharText);
      nodeCharText = NULL;
    }
  }

Am I correct to call AXIS2_FREE after I am done with nodeCharText? I did
not call any create methods, but perhaps it is still my responsibility
to clean up that memory? It has not cased any faults in the application
so far.

//QUESTION 3
3. Is it bad practice to use URI query parameters in a RESTLocation? for
example, is this bad practice:
<operation name="getQueryParamTest">
    <parameter name="RESTMethod">GET</parameter>
    <parameter
name="RESTLocation">query/param/type/{type}/name/{name}/test?color={colo
r}&flavor={flavor}</parameter>
  </operation>
I know that may seem like an odd question, but I have not found any
examples of people writing axis2c services that do this. They all seem
to write may operations with all different RESTLocations instead.
4. What is the propery way of appending query parameters?
<parameter
name="RESTLocation">query/param?color={color}&flavor={flavor}</parameter
>
or
<parameter
name="RESTLocation">query/param/?color={color}&flavor={flavor}</paramete
r>

I think that the last way leaves an empty node right before the query
parameters.

//QUESTION 4
4. What is the best way to call a RESTful service operation from PHP
code?

//END QUESTIONS

Since this was my first post I was wondering if my presentation was
acceptable? Should I have posted 4 separate times, one for each
question? IF I would have broken my email up into 4 separate emails it
would have been easier to write a descriptive subject heading. Were any
of my questions dumb-questions? I have only been using axis2c actively
for about a week now and I really like it so far, but I have loads to
learn and I am unsure if I am really using it correctly.

Sincerely,
dustfinger.

Reply via email to