%@ page import="java.io.*, java.util.*, org.w3c.dom.*" %>
<%@ page import="org.apache.soap.Constants, org.apache.soap.util.*, org.apache.soap.util.xml.*, org.apache.soap.server.*" %>
Deploy a Service
<%
String configFilename = config.getInitParameter(Constants.CONFIGFILENAME);
if (configFilename == null)
configFilename = application.getInitParameter(Constants.CONFIGFILENAME);
ServiceManager serviceManager =
org.apache.soap.server.http.ServerHTTPUtils.getServiceManagerFromContext(application, configFilename);
if (!request.getMethod().equals ("POST")) {
%>
<%
} else {
String id = request.getParameter ("id");
DeploymentDescriptor dd = new DeploymentDescriptor ();
dd.setID (id);
// get the provider info
int scope = Integer.parseInt (request.getParameter ("scope"));
String providerTypeStr = request.getParameter ("providerType");
String className = request.getParameter ("providerClass");
boolean isStatic = request.getParameter ("isStatic").equals ("true");
String scriptLang = request.getParameter ("scriptLanguage");
String userClass = request.getParameter ("userProviderClassString");
if (scriptLang.equals ("other")) {
scriptLang = request.getParameter ("scriptLanguageTypeIn");
}
String scriptFilename = request.getParameter ("scriptFilename");
String script = request.getParameter ("script");
String methodsStr = request.getParameter ("methods");
StringTokenizer st = new StringTokenizer (methodsStr);
int nTokens = st.countTokens ();
String[] methods = new String[nTokens];
for (int i = 0; i < nTokens; i++) {
methods[i] = st.nextToken ();
}
dd.setScope (scope);
dd.setMethods (methods);
if (providerTypeStr.equals ("0")) {
dd.setProviderType (DeploymentDescriptor.PROVIDER_JAVA);
dd.setProviderClass (className);
dd.setIsStatic (isStatic);
} else {
if (providerTypeStr.equals("3")) {
dd.setProviderType (DeploymentDescriptor.PROVIDER_USER_DEFINED);
dd.setServiceClass(userClass);
dd.setProviderClass (className);
dd.setIsStatic (isStatic);
// get any options
int optnum = 0;
try {
optnum = Integer.parseInt (request.getParameter ("noOpts"));
} catch (NumberFormatException e) {
optnum = 0;
}
if (optnum != 0) {
Hashtable optionsTble = new Hashtable();
for (int j = 1; j <= optnum; j++) {
String keyS= request.getParameter ("optionkey" + j);
String valueS= request.getParameter ("optionvalue" + j);
optionsTble.put(keyS, valueS);
}
dd.setProps(optionsTble);
}
} else {
if (!scriptFilename.equals ("")) { // filename specified
dd.setProviderType (DeploymentDescriptor.PROVIDER_SCRIPT_FILE);
} else { // there better be a script to run
dd.setProviderType (DeploymentDescriptor.PROVIDER_SCRIPT_STRING);
}
dd.setScriptLanguage (scriptLang);
dd.setScriptFilenameOrString (scriptFilename);
}
}
String[] encs = {org.apache.soap.Constants.NS_URI_SOAP_ENC,
org.apache.soap.Constants.NS_URI_XMI_ENC};
// set up any type mappings
int nmaps = 0;
try {
nmaps = Integer.parseInt (request.getParameter ("nmaps"));
} catch (NumberFormatException e) {
}
if (nmaps != 0) {
TypeMapping[] mappings = new TypeMapping[nmaps];
for (int i = 1; i <= nmaps; i++) { // the form is hard-coded to a max of 10
int encStyle = Integer.parseInt (request.getParameter ("encstyle" + i));
String nsuri = request.getParameter ("nsuri" + i);
String localPart = request.getParameter ("localpart" + i);
String classNameStr = request.getParameter ("classname" + i);
String java2XMLClass = request.getParameter ("java2xml" + i);
String xml2JavaClass = request.getParameter ("xml2java" + i);
QName elementType = (nsuri.equals ("") || localPart.equals (""))
? null : new QName (nsuri, localPart);
// map "" to null (the unfilled params come as empty strings because
// they are infact actual parameters)
classNameStr = classNameStr.equals ("") ? null : classNameStr;
java2XMLClass = java2XMLClass.equals ("") ? null : java2XMLClass;
xml2JavaClass = xml2JavaClass.equals ("") ? null : xml2JavaClass;
mappings[i-1] = new TypeMapping (encs[encStyle], elementType,
classNameStr, java2XMLClass,
xml2JavaClass);
}
dd.setMappings (mappings);
}
String defaultSMR = request.getParameter("defaultSMR");
if (defaultSMR != null) {
dd.setDefaultSMRClass(defaultSMR);
}
// ok now deploy it
serviceManager.deploy (dd);
// show what was deployed
out.println ("Service " + dd.getID () + " deployed.
");
}
%>