[xgws-dev] CVS Update: codes/xsul/java/tests/xsul/async_msg
Aleksander Andrzej Slominski
xgws-dev_at_extreme.indiana.edu
Tue Oct 3 16:23:01 2006
aslom 06/10/03 16:22:32
Modified: xsul/java/modules/common/xsul XsulVersion.java
xsul/java/modules/lead/xsul/lead lead-context.xsd
xsul/java/modules/monitoring/xsul/monitoring
XsulMonitoringStats.java XsulMonitoringUtil.java
xsul-monitoring.wsdl
xsul/java/modules/xservo_soap_http/xsul/xservo_soap_http
HttpBasedServices.java
xsul/java/tests/xsul/async_msg EchoAsyncService.java
Log:
added service-description? and service-wsdl*
Revision Changes Path
1.93 +3 -8 codes/xsul/java/modules/common/xsul/XsulVersion.java
Index: XsulVersion.java
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/common/xsul/XsulVersion.java,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -b -t -w -r1.92 -r1.93
--- XsulVersion.java 3 Oct 2006 15:43:35 -0000 1.92
+++ XsulVersion.java 3 Oct 2006 20:22:31 -0000 1.93
@@ -1,17 +1,17 @@
/* -*- mode: Java; c-basic-offset: 4; indent-tabs-mode: nil; -*- //------100-columns-wide------>|*/
/* Copyright (c) 2002-2006 Extreme! Lab, Indiana University. All rights reserved.
* This software is open source. See the bottom of this file for the licence.
- * $Id: XsulVersion.java,v 1.92 2006/10/03 15:43:35 aslom Exp $ */
+ * $Id: XsulVersion.java,v 1.93 2006/10/03 20:22:31 aslom Exp $ */
package xsul;
/**
* One place to put version number.
*
- * @version $Revision: 1.92 $
+ * @version $Revision: 1.93 $
* @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
*/
public class XsulVersion {
- public final static String SPEC_VERSION = "2.7.7";
+ public final static String SPEC_VERSION = "2.7.8";
private final static String BUILD = ""; //"_dev"; //"_f2"; //"_SPECIAL_EDITION";//"_b4";
private final static String PROJECT_NAME = "XSUL";
@@ -230,8 +230,3 @@
* SOFTWARE.
*/
-
-
-
-
-
1.6 +1 -1 codes/xsul/java/modules/lead/xsul/lead/lead-context.xsd
Index: lead-context.xsd
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/lead/xsul/lead/lead-context.xsd,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -t -w -r1.5 -r1.6
--- lead-context.xsd 3 Oct 2006 15:43:36 -0000 1.5
+++ lead-context.xsd 3 Oct 2006 20:22:31 -0000 1.6
@@ -98,7 +98,7 @@
<!-- for description see: http://www.xfront.com/ExtensibleContentModels.html -->
<!-- and http://www.xml.com/lpt/a/2002/07/03/schema_design.html -->
<element minOccurs="1" maxOccurs="1" ref="lead:user-dn"/>
- <any namespace="##any" minOccurs="0"/>
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded" />
<!-- <any namespace="##targetNamespace" processContents="strict"
minOccurs="0" maxOccurs="unbounded" />
<any namespace="##other" processContents="lax" minOccurs="0"
1.8 +52 -8 codes/xsul/java/modules/monitoring/xsul/monitoring/XsulMonitoringStats.java
Index: XsulMonitoringStats.java
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/monitoring/xsul/monitoring/XsulMonitoringStats.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -t -w -r1.7 -r1.8
--- XsulMonitoringStats.java 3 Oct 2006 17:40:44 -0000 1.7
+++ XsulMonitoringStats.java 3 Oct 2006 20:22:32 -0000 1.8
@@ -4,10 +4,11 @@
*
* This software is open source. See the bottom of this file for the licence.
*
- * $Id: XsulMonitoringStats.java,v 1.7 2006/10/03 17:40:44 aslom Exp $
+ * $Id: XsulMonitoringStats.java,v 1.8 2006/10/03 20:22:32 aslom Exp $
*/
package xsul.monitoring;
+import java.net.URI;
import org.xmlpull.v1.builder.XmlElement;
import org.xmlpull.v1.builder.XmlInfosetBuilder;
import org.xmlpull.v1.builder.XmlNamespace;
@@ -23,12 +24,15 @@
private final static MLogger logger = MLogger.getLogger();
private final static XmlInfosetBuilder builder = XmlConstants.BUILDER;
public final static XmlNamespace MONITORING_NS = builder.newNamespace(
- "m", "http://www.extreme.indiana.edu/xgws/xsul/monitoring/2005");
+ "m", "http://www.extreme.indiana.edu/xgws/xsul/monitoring/2006/");
public final static String PING_REQUEST = "Ping";
public final static String PING_RESPONSE = "PingResponse";
public final static String SERVICE_STATS = "service-stats";
public final static String SERVICE_NAME = "service-name";
+ public final static String SERVICE_DESCRIPTION = "service-description";
+ public final static String SERVICE_WSDL = "service-wsdl";
+ public final static String SERVICE_WSDL_NAME = "name";
public final static String TOOLKIT_NAME = "toolkit-name";
public final static String STARTTIME_SECONDS = "starttime-seconds";
public final static String XML_REQUESTS_COUNT = "xml-requests-count";
@@ -41,17 +45,40 @@
private String serviceName;
private long startTimeMs;
private long requestXmlMsgsCount;
+ private URI[] serviceWsdls;
+ private String[] serviceWsdlNames;
- protected XsulMonitoringStats(String serviceName, long startTimeInMs,
- long requestXmlMsgCount, long numberOfConnections) {
+ protected XsulMonitoringStats(String serviceName,
+ String serviceDescription,
+ String[] serviceWsdlNames,
+ URI[] serviceWsdls,
+ long startTimeInMs,
+ long requestXmlMsgCount,
+ long numberOfConnections) {
super(builder.newFragment(MONITORING_NS, SERVICE_STATS));
this.serviceName = serviceName;
+ this.serviceWsdls = serviceWsdls;
+ this.serviceWsdlNames = serviceWsdlNames;
this.startTimeMs = startTimeInMs;
this.requestXmlMsgsCount = requestXmlMsgCount;
{
XmlElement serviceNameEl = addElement(MONITORING_NS, SERVICE_NAME);
serviceNameEl.addChild(serviceName);
}
+ if(serviceDescription != null) {
+ XmlElement serviceDescEl = addElement(MONITORING_NS, SERVICE_DESCRIPTION);
+ serviceDescEl.addChild(serviceDescription);
+ }
+ if(serviceWsdls != null) {
+ for (int i = 0; i < serviceWsdls.length; i++)
+ {
+ XmlElement serviceWsdlEl = addElement(MONITORING_NS, SERVICE_WSDL);
+ serviceWsdlEl.addChild(serviceWsdls[i].toASCIIString());
+ if(serviceWsdlNames != null) {
+ serviceWsdlEl.addAttribute(null, SERVICE_WSDL_NAME, serviceWsdlNames[i]);
+ }
+ }
+ }
{
XmlElement toolkitNameEl = addElement(MONITORING_NS, TOOLKIT_NAME);
toolkitNameEl.addChild(defaultToolkitName);
@@ -61,13 +88,30 @@
starttimeEl.addChild(""+startTimeInMs/1000.0);
}
{
+ XmlElement numberOfConnectionsEl = addElement(MONITORING_NS, CONNECTIONS_COUNT);
+ numberOfConnectionsEl.addChild(""+numberOfConnections);
+ }
+ {
XmlElement requestsXmlCountEl = addElement(MONITORING_NS, XML_REQUESTS_COUNT);
requestsXmlCountEl.addChild(""+requestsXmlCountEl);
}
- {
- XmlElement numberOfConnectionsEl = addElement(MONITORING_NS, CONNECTIONS_COUNT);
- numberOfConnectionsEl.addChild(""+numberOfConnections);
}
+
+ public void setServiceWsdlNames(String[] serviceWsdlNames) {
+ this.serviceWsdlNames = serviceWsdlNames;
+ }
+
+ public String[] getServiceWsdlNames() {
+ return serviceWsdlNames;
+ }
+
+
+// public void setServiceWsdls(URI[] serviceWsdls) {
+// this.serviceWsdls = serviceWsdls;
+// }
+
+ public URI[] getServiceWsdls() {
+ return serviceWsdls;
}
/**
1.12 +41 -8 codes/xsul/java/modules/monitoring/xsul/monitoring/XsulMonitoringUtil.java
Index: XsulMonitoringUtil.java
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/monitoring/xsul/monitoring/XsulMonitoringUtil.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -t -w -r1.11 -r1.12
--- XsulMonitoringUtil.java 3 Oct 2006 17:40:44 -0000 1.11
+++ XsulMonitoringUtil.java 3 Oct 2006 20:22:32 -0000 1.12
@@ -4,21 +4,22 @@
*
* This software is open source. See the bottom of this file for the licence.
*
- * $Id: XsulMonitoringUtil.java,v 1.11 2006/10/03 17:40:44 aslom Exp $
+ * $Id: XsulMonitoringUtil.java,v 1.12 2006/10/03 20:22:32 aslom Exp $
*/
package xsul.monitoring;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
import java.util.Date;
+import java.util.Iterator;
import org.xmlpull.v1.builder.XmlDocument;
import org.xmlpull.v1.builder.XmlElement;
import org.xmlpull.v1.builder.XmlInfosetBuilder;
import org.xmlpull.v1.builder.XmlNamespace;
import xsul.MLogger;
import xsul.XmlConstants;
-import xsul.XsulVersion;
import xsul.soap.SoapUtil;
/**
@@ -62,11 +63,21 @@
}
//<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- public static XsulMonitoringStats createStats(String serverName, long startTime,
+ public static XsulMonitoringStats createStats(String serviceName, long startTime,
long requestXmlMsgCount, long numberOfConnections) {
- return new XsulMonitoringStats(serverName, startTime, requestXmlMsgCount, numberOfConnections);
+ return new XsulMonitoringStats(serviceName, null, null, null, startTime, requestXmlMsgCount, numberOfConnections);
}
+ public static XsulMonitoringStats createStats(String serviceName,
+ String serviceDescription,
+ String[] serviceWsdlNames,
+ URI[] serviceWsdls,
+ long startTime,
+ long requestXmlMsgCount,
+ long numberOfConnections) {
+ return new XsulMonitoringStats(serviceName, serviceDescription, serviceWsdlNames, serviceWsdls,
+ startTime, requestXmlMsgCount, numberOfConnections);
+ }
public static XmlDocument createXhtmlStatsDoc(XsulMonitoringStats s, String encoding) {
XmlDocument outgoingDoc = builder.newDocument("1.0", Boolean.TRUE, encoding);
@@ -134,7 +145,8 @@
p.addChild("Start time: ");
XmlElement spanStartTime = p.addElement(H, "span");
//spanStartTime.addChild(""+stats.getStarTimeInMs());
- spanStartTime.addChild(""+stats.getStarTimeInMs()/1000.0);
+ long startTimeInSeconds = stats.getStarTimeInMs()/1000;
+ spanStartTime.addChild(""+ startTimeInSeconds);
spanStartTime.addAttribute(null, "class", XsulMonitoringStats.STARTTIME_SECONDS);
//p.addChild(" [milliseconds] since UNIX epoch.");
p.addChild(" [seconds] since UNIX epoch.");
@@ -155,7 +167,28 @@
//spanVersion.addChild("" + XsulVersion.getUserAgent());
spanToolkit.addChild("" + stats.getDefaultToolkitName());
}
-
+ if(stats.getServiceWsdls() != null) {
+ XmlElement p = div.addElement(H, "p");
+ p.addChild("Service WSDL(s): ");
+ // add list of services
+ URI[] wsdls = stats.getServiceWsdls();
+ String[] wsdlNames = stats.getServiceWsdlNames();
+ for (int i = 0; i < wsdls.length; i++)
+ {
+ XmlElement spanListOfWsdls = p.addElement(H, "span");
+ spanListOfWsdls.addAttribute(null, "class", XsulMonitoringStats.SERVICE_WSDL);
+ XmlElement a = spanListOfWsdls.addElement("a");
+ String serviceWsdl = wsdls[i].toASCIIString();
+ String serviceName = "Service WSDL";
+ if(wsdlNames != null) {
+ serviceName = wsdlNames[i];
+ }
+ a.addAttribute("href", serviceWsdl);
+ a.addChild(serviceName);
+ //a.addChild(" WSDL");
+ p.addChild(" ");
+ }
+ }
return html;
}
1.5 +40 -9 codes/xsul/java/modules/monitoring/xsul/monitoring/xsul-monitoring.wsdl
Index: xsul-monitoring.wsdl
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/monitoring/xsul/monitoring/xsul-monitoring.wsdl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -t -w -r1.4 -r1.5
--- xsul-monitoring.wsdl 3 Oct 2006 17:40:44 -0000 1.4
+++ xsul-monitoring.wsdl 3 Oct 2006 20:22:32 -0000 1.5
@@ -34,11 +34,42 @@
<element name="service-name" type="xsd:string">
<annotation><documentation xml:lang="en">
- The name of service (add "/" version to indicate version major.minor[.revision])
- For example: "EchoService/2.7.7", "My Service"
+ The name of service and it is recommnded to follow generic conventions listed at
+ http://en.wikipedia.org/wiki/User_agent
+ (add "/" version to indicate version major.minor[.revision])
+ For example: "EchoService/2.7.7", "My-Service"
</documentation></annotation>
+ </element>
- <element name="toolkit-name" type="xsd:string minOccurs="0">
+ <element name="service-description" type="xsd:string" minOccurs="0">
+ <annotation><documentation xml:lang="en">
+ Description of the service (optional).
+ </documentation></annotation>
+ </element>
+
+<!--
+ <element name="service-wsdl" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded">
+ <annotation><documentation xml:lang="en">
+ URL to a service WSDL (optional).
+ </documentation></annotation>
+ </element>
+-->
+
+ <element name="service-wsdl" minOccurs="0" maxOccurs="unbounded">
+ <annotation><documentation xml:lang="en">
+ Optional URL to a service WSDL with optional name
+ (useful when service has more than one WSDL).
+ </documentation></annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anyURI">
+ <xsd:attribute name="name" type="xsd:string" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </element>
+
+ <element name="toolkit-name" type="xsd:string" minOccurs="0">
<annotation><documentation xml:lang="en">
Optional name (/ version) of underlying toolkit/platform/middleware technology
(such as AXIS, XSUL, BPEL, ...) used to implement the service.
@@ -52,6 +83,12 @@
</documentation></annotation>
</element>
+ <element name="connections-count" type="xsd:long" minOccurs="0">
+ <annotation><documentation xml:lang="en">
+ How many connections service accepted (SOAP or not SOAP) including monitoring requests.
+ </documentation></annotation>
+ </element>
+
<!--
<element name="xml-requests-per-second" type="xsd:float" minOccurs="0">
<annotation><documentation xml:lang="en">
@@ -68,12 +105,6 @@
</documentation></annotation>
</element>
- <element name="connections-count" type="xsd:long">
- <annotation><documentation xml:lang="en">
- How many connections service accepted (SOAP or not SOAP) including monitoring requests.
- </documentation></annotation>
- </element>
-
<!-- allow extensions to add any number of monitoring XML elements -->
<any namespace="##any" minOccurs="0" maxOccurs="unbounded" />
1.22 +56 -20 codes/xsul/java/modules/xservo_soap_http/xsul/xservo_soap_http/HttpBasedServices.java
Index: HttpBasedServices.java
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/modules/xservo_soap_http/xsul/xservo_soap_http/HttpBasedServices.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -t -w -r1.21 -r1.22
--- HttpBasedServices.java 29 Aug 2006 18:25:58 -0000 1.21
+++ HttpBasedServices.java 3 Oct 2006 20:22:32 -0000 1.22
@@ -4,7 +4,7 @@
*
* This software is open source. See the bottom of this file for the licence.
*
- * $Id: HttpBasedServices.java,v 1.21 2006/08/29 18:25:58 aslom Exp $
+ * $Id: HttpBasedServices.java,v 1.22 2006/10/03 20:22:32 aslom Exp $
*/
package xsul.xservo_soap_http;
@@ -13,7 +13,10 @@
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
+import java.net.URI;
import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.xmlpull.v1.XmlPullParser;
@@ -68,7 +71,7 @@
private long startTime = System.currentTimeMillis() - 1; //defensive programming ot avoid divide-per-zero
private long requestXmlMsgCount;
private long numberOfConnections;
- private String serverName = XsulVersion.getUserAgent();
+ private String serverName; // = XsulVersion.getUserAgent();
private Map services = new TreeMap();
@@ -110,6 +113,23 @@
return serverName;
}
+ public String getDefaultServicesName() {
+ StringBuffer defaultServiceName = new StringBuffer(64);
+ for(Iterator i = services.keySet().iterator(); i.hasNext(); ) {
+ String name = (String) i.next();
+ defaultServiceName.append(name);
+ if(i.hasNext()) {
+ defaultServiceName.append("-");
+ }
+ }
+ if(defaultServiceName.length() == 0) {
+ defaultServiceName.append("XSUL");
+ }
+ defaultServiceName.append("/");
+ defaultServiceName.append(XsulVersion.getImplementationVersion());
+ return defaultServiceName.toString();
+ }
+
// public void addGlobalHandler(XHandler handler) {
// //globalHandlers.add(handler);
// }
@@ -245,26 +265,42 @@
} else {
// print some monitoring statistics
- // alive, uptime, #msgs, average ($msgs/second)
- XsulMonitoringStats s = XsulMonitoringUtil.createStats(
- serverName, startTime, requestXmlMsgCount, numberOfConnections);
-
-
- XmlDocument xhtmlDoc = XsulMonitoringUtil.createXhtmlStatsDoc(s, UTF8);
- XmlElement htmlBody = xhtmlDoc.getDocumentElement().requiredElement(null, "body");
- XmlNamespace htmlNs = htmlBody.getNamespace();
- XmlElement p = htmlBody.addElement(htmlNs, "p");
- p.addChild("Services WSDL: ");
- // add list of services
+ // alive, uptime, #msgs, average (#msgs/second)
+ String serverName = getServerName(); // get listo of service name
+ if(serverName == null) {
+ serverName = getDefaultServicesName();
+ }
+ List listOfWsdls = new LinkedList();
+ List listOfWsdlNames = new LinkedList();
for(Iterator i = services.keySet().iterator(); i.hasNext(); ) {
String serviceName = (String) i.next();
String serviceWsdl = getServiceWsdl(serviceName);
- XmlElement a = p.addElement("a");
- a.addAttribute("href", serviceWsdl);
- a.addChild(serviceName);
- //a.addChild(" WSDL");
- p.addChild(" ");
- }
+ URI serviceWsdlUri = URI.create(serviceWsdl);
+ listOfWsdlNames.add(serviceName);
+ listOfWsdls.add(serviceWsdlUri);
+ }
+ URI[] wsdls = new URI[listOfWsdls.size()];
+ listOfWsdls.toArray(wsdls);
+ String[] wsdlNames = new String[listOfWsdlNames.size()];
+ listOfWsdlNames.toArray(wsdlNames);
+ XsulMonitoringStats s = XsulMonitoringUtil.createStats(
+ serverName, null, wsdlNames, wsdls, startTime, requestXmlMsgCount, numberOfConnections);
+
+ XmlDocument xhtmlDoc = XsulMonitoringUtil.createXhtmlStatsDoc(s, UTF8);
+// XmlElement htmlBody = xhtmlDoc.getDocumentElement().requiredElement(null, "body");
+// XmlNamespace htmlNs = htmlBody.getNamespace();
+// XmlElement p = htmlBody.addElement(htmlNs, "p");
+// p.addChild("Service WSDLs: ");
+// // add list of services
+// for(Iterator i = services.keySet().iterator(); i.hasNext(); ) {
+// String serviceName = (String) i.next();
+// String serviceWsdl = getServiceWsdl(serviceName);
+// XmlElement a = p.addElement("a");
+// a.addAttribute("href", serviceWsdl);
+// a.addChild(serviceName);
+// //a.addChild(" WSDL");
+// p.addChild(" ");
+// }
// XmlDocument outgoingDoc = builder.newDocument("1.0", Boolean.TRUE, UTF8);
// XmlElement xhtml = XsulMonitoringUtil.createXhtmlStats(s);
1.6 +2 -2 codes/xsul/java/tests/xsul/async_msg/EchoAsyncService.java
Index: EchoAsyncService.java
===================================================================
RCS file: /l/extreme/cvs/codes/xsul/java/tests/xsul/async_msg/EchoAsyncService.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -t -w -r1.5 -r1.6
--- EchoAsyncService.java 6 Jun 2006 20:17:24 -0000 1.5
+++ EchoAsyncService.java 3 Oct 2006 20:22:32 -0000 1.6
@@ -43,11 +43,11 @@
private void run(String[] args) {
XsulVersion.exitIfRequiredVersionMissing(XsulVersion.SPEC_VERSION); //sanity check
- XsulVersion.exitIfRequiredVersionMissing("2.1.3");
+ XsulVersion.exitIfRequiredVersionMissing("2.7.7");
if(args.length > 2) usage("");
int tcpPort = args.length > 0 ? Integer.parseInt(args[0]) : 0;
httpServices = new HttpBasedServices(tcpPort);
- httpServices.setServerName("XSUL-EchoAsync/"+XsulVersion.getImplementationVersion());
+ //httpServices.setServiceName("EchoAsync");
System.out.println("Server started on "+httpServices.getServerPort());