Hi,
I am trying to write a generic service that works against another framework.
This service has to support a few data types that are specified as Java
Beans, but are not known at development time as they will be specified at
deployment time.
A good analogy will be a service that inserts Java Beans to a database using
something like hibernate. The user can choose the list of tables to expose,
and gets an operation for each table. The WSDL should contain the schema of
the input record, which maps to a Java Bean. So if I decide to expose the
tables “CUSTOMER” and “ORDER”, the WSDL will contain two operations, one for
each table. The operations must contain a request schema that matches the
bean associated with the table by hibernate, “beans.Customer” and
“beans.Order”.
It is not possible to write a function for each operation, because it relies
on the list of tables that the user configures, and the java beans
associated with the tables are extracted by hibernate. This is configurable
by the user and not known at development time.
I have the feeling that all the pieces are there and it should be a fairly
quick task, but I am having a hard time finding the starting point after
reading all the documentation. The documentation deals extensively with
static signatures, where the WSDL is generated dynamically based on a Java
function signature that is strongly typed, but not when the Java function is
generic and the request object is a configuration property.
I am thinking of something like this:
service name=InsertToTables
class=sample.InsertToTablesService scope=application
messageReceivers
messageReceiver mep=http://www.w3.org/2004/08/wsdl/in-only;
class=org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver/
/messageReceivers
parameter name=ServiceClasssample.InsertSingleRecord/parameter
parameter name=tables
tables
tableCUSTOMER/table
tableORDER/table
/tables
/parameter
/service
Or even add the operations individually:
operation name=customer
messageReceiver
class=org.apache.axis2.receivers.RPCInOnlyMessageReceiver /
actionMappingurn:insert/actionMapping
parameter name=tableCUSTOMER/parameter
/operation
operation name=order
messageReceiver
class=org.apache.axis2.receivers.RPCInOnlyMessageReceiver /
actionMappingurn:insert/actionMapping
parameter name=tableORDER/parameter
/operation
The service class should be generic:
public void insert(Object javaBeanRecord)
or:
public void insert(OMElement xmlRecord)
but still have the WSDL generated properly form the Java Bean of the table.
I am looking for a place to plug in the schema in the WSDL generation, the
rest seems very straight forward.
Any help will be greatly appreciated!
--
View this message in context:
http://www.nabble.com/Generate-WSDL-for-dynamic-types-tf2728713.html#a7610898
Sent from the Axis - User mailing list archive at Nabble.com.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]