Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Member Functions
vmi1.SimpleService Interface Reference

Public Member Functions

Map< String, MessageReceiver > getMessageReceiverClassMap ()
 
String getTargetNamespace ()
 
String getSchemaNamespace ()
 
String getSchemaNamespacePrefix ()
 
String getSchemaResourcePath ()
 
String getServiceName ()
 
Map< String, QName > getStaticTypeMapping ()
 
Map< String, String > getMethodClassNameMapping ()
 
Map< String, QName > getDynamicTypeMapping ()
 

Detailed Description

Definition at line 8 of file SimpleService.java.

Member Function Documentation

Map<String,QName> vmi1.SimpleService.getDynamicTypeMapping ( )

Basically, if your web service RPCs start with an uppercase letter, and you use Axis to generate your service skeleton, it will lowercase the letter – BUT it will generate a class representing that RPC SOAP message with the letter still uppercased! So, we have to map between these things.

We also have to map them to XML schema elements. This function does this!

So, return a HashMap of lowercase service method name to fully-qualified class name for the message that calls it. i.e.,

probeEventNotification -> new QName(getTargetNamespace(), "ProbeEventNotification")

etc.

(The dynamic type map is only consulted for methods right now; but we could extend it!)

Map<String,MessageReceiver> vmi1.SimpleService.getMessageReceiverClassMap ( )

This tells the SimpleServiceServer which MessageReceiver this service requires. Then it can tell Axis.

Note, you must use special strings as the keys in the map. They come from org.apache.axis2.description.WSDL2Constants, and which one you use depends on whether your service operations do in/out messages, in-only, out-only, etc.

Probably just use WSDL2Constants.MEP_URI_IN_OUT because you'll probably have service operations that do both input/output.

Unfortunately, there doesn't seem to be any of this information inside the MessageReceiver object itself, or I would have just used that!

Map<String,String> vmi1.SimpleService.getMethodClassNameMapping ( )

Basically, if your web service RPCs start with an uppercase letter, and you use Axis to generate your service skeleton, it will lowercase the letter – BUT it will generate a class representing that RPC SOAP message with the letter still uppercased! So, we have to map between these things.

So, return a HashMap of lowercase service method name to fully-qualified class name for the message that calls it. i.e.,

probeEventNotification -> vmi1.ProbeEventNotification

etc.

String vmi1.SimpleService.getSchemaNamespace ( )

Return the schema namespace in your WSDL file. If you use JSR-181 web service annotations, make sure this is the same thing as in your annotation!

If this is not the same as getTargetNamespace(), everything will probably break. So don't do it!

String vmi1.SimpleService.getSchemaNamespacePrefix ( )

Return the schema namespace prefix.

String vmi1.SimpleService.getSchemaResourcePath ( )

Right now, this must be a relative JAR path to a WSDL file.

String vmi1.SimpleService.getServiceName ( )

Return the service name. If you return null, we will just use the name of the class that implements this interface; this will probably fail. You must use a real service name that corresponds to a WSDL service location. This should be the last thing in the WSDL location path, too; i.e., the part after the final '/'.

Also, if you use JSR-181 web service annotations, make sure this is the same thing as in your annotation!

Map<String,QName> vmi1.SimpleService.getStaticTypeMapping ( )

Don't use this right now; just provide an empty HashMap.

String vmi1.SimpleService.getTargetNamespace ( )

Return the target namespace. If you use JSR-181 web service annotations, make sure this is the same thing as in your annotation!


The documentation for this interface was generated from the following file: