Tài liệu Hướng dẫn tạo MathService tương thích với Globus Toolkit 4.2.x - Nguyễn Quang Hùng
Hướng dẫn tạo MathService tương thích với Globus Toolkit 4.2.x
Guideline to program a MathService is compatible with Globus Toolkit 4.2.x
Mục lục
Hướng dẫn tạo MathService tương thích với Globus Toolkit 4.2.x
1
Pre-requirements:
-
You have a Java Globus container of Globus Toolkit version 4.2.x is running
successfully.
-
You have a ‘globus’ account to be able to deploy into the globus container, stop
and start the globus container.
Convert from CounterService change into MathService:
1. Copy source code: ‘counter’ service
2. Change name to ‘math’
3. Change some name:
Old name
wsrf_core_samples_counter wsrf_core_samples_math
CounterService MathService
New name
4. Copy a schema directory from ‘counter’ to ‘math’
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
a. cd /home/globus/gt4.2.1-all-source-installer/source-trees/wsrf/schema/core/
samples
b. cp –r counter math
c. Result: new path for ‘math’ schema:
/home/globus/gt4.2.1-all-source-installer/source-trees/wsrf/schema/core/samples/math
d. Copy ‘math’ schema into $GLOBUS_LOCATION/share/schema/core/samples/
cp -r /home/globus/gt4.2.1-all-source-installer/source-trees/wsrf/schema/core/samples/math /usr/
grid/globus-4.2.1/share/schema/core/samples/
5. Deploy math.gar into Globus container:
a. Run: /etc/init.d/globus-ws-java-container stop
b. ant clean
c. ant dist
d. ant undeploy
e. ant deploy
f. You should see your MathService is running in your globus container, for
example:
g. globus@netlabserver01:/usr/grid/globus-4.2.1$ bin/math-client -s
6. Test MathService:
globus@netlabserver01:/usr/grid/globus-4.2.1$ bin/math-create -s https://172.28.13.11:18443/wsrf/services/MathService -z no
erp
globus@netlabserver01:/usr/grid/globus-4.2.1$ cat /tmp/erp
xsi:type="ns2:ReferenceParametersType"><ns1:MathKey>15075988</ns1:MathKey></ns2:ReferenceParameters></ns1:Math
globus@netlabserver01:/usr/grid/globus-4.2.1$ bin/math-add -e /tmp/erp 2
2
globus@netlabserver01:/usr/grid/globus-4.2.1$ bin/math-add -e /tmp/erp 10
12
globus@netlabserver01:/usr/grid/globus-4.2.1$ bin/math-add -e /tmp/erp 15
27
Source code:
Bước 1: Tạo ra các file cho dịch vụ MathService
Yêu cầu:
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
-
-
-
Bạn nên đọc hướng dẫn Tutorial để biết 5 bước cần tạo một Grid service.
Copy các file trong ví dụ mẫu của dịch vụ ‘CounterService’ để tạo ra
‘MathService’. Thực hiện các bước bên trên để chuyển đổi Counter* -> Math* J
/* File: Math.java
*/
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.globus.wsrf.samples.math;
import java.util.Calendar;
import javax.xml.namespace.QName;
import org.globus.wsrf.Resource;
import org.globus.wsrf.ResourceIdentifier;
import org.globus.wsrf.ResourceProperties;
import org.globus.wsrf.ResourceProperty;
import org.globus.wsrf.ResourcePropertySet;
import org.globus.wsrf.Topic;
import org.globus.wsrf.TopicList;
import org.globus.wsrf.TopicListAccessor;
import org.globus.wsrf.ResourceLifetime;
import org.globus.wsrf.WSRFConstants;
import org.globus.wsrf.impl.ReflectionResourceProperty;
import org.globus.wsrf.impl.ResourcePropertyTopic;
import org.globus.wsrf.impl.SimpleResourcePropertySet;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
import org.globus.wsrf.impl.SimpleTopicList;
import org.globus.wsrf.impl.SimpleTopic;
import org.globus.wsrf.impl.SimpleResourceProperty;
import org.globus.wsrf.impl.SimpleResourcePropertyMetaData;
/**
* Resource Implementation
*/
public class Math
implements Resource,
ResourceLifetime,
ResourceIdentifier,
ResourceProperties,
TopicListAccessor {
public static final QName KEY =
new QName("http://math.com", "MathKey");
public static final QName RP_SET =
new QName("http://math.com", "Math");
public static final QName VALUE =
new QName("http://math.com", "Value");
private ResourcePropertySet propSet;
private TopicList topicList;
protected Calendar terminationTime = null;
protected Object key;
protected ResourceProperty value;
protected void initialize(Object key) {
this.key = key;
this.propSet = new SimpleResourcePropertySet(RP_SET);
this.topicList = new SimpleTopicList(this);
ResourceProperty prop = null;
try {
this.value = new ResourcePropertyTopic(
new SimpleResourceProperty(VALUE));
this.propSet.add(this.value);
this.topicList.addTopic((Topic) this.value);
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
this.value.add(new Integer(0));
prop = new
ReflectionResourceProperty(SimpleResourcePropertyMetaData.TERMINATION_TIME,
this);
this.propSet.add(prop);
this.topicList.addTopic(new SimpleTopic(
WSRFConstants.TERMINATION_TOPIC));
prop = new
ReflectionResourceProperty(SimpleResourcePropertyMetaData.CURRENT_TIME, this);
this.propSet.add(prop);
} catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
public ResourcePropertySet getResourcePropertySet() {
return this.propSet;
}
public TopicList getTopicList() {
return this.topicList;
}
public int getValue() {
return ((Integer) this.value.get(0)).intValue();
}
public void setValue(int value) {
this.value.set(0, new Integer(value));
}
/**
* Called when a new Math resource is created.
*
* @return the resource key
*/
public Object create() throws Exception {
// just an example, might be a file already...
this.key = new Integer(hashCode());
initialize(key);
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
return key;
}
public Object getID() {
return this.key;
}
public void setTerminationTime(Calendar time) {
this.terminationTime = time;
}
public Calendar getTerminationTime() {
return this.terminationTime;
}
public Calendar getCurrentTime() {
return Calendar.getInstance();
}
}
/* File: MathHome.java
*/
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.globus.wsrf.samples.math;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.globus.wsrf.ResourceKey;
import org.globus.wsrf.impl.ResourceHomeImpl;
import org.globus.wsrf.impl.SimpleResourceKey;
public class MathHome extends ResourceHomeImpl {
static Log logger =
LogFactory.getLog(MathHome.class.getName());
public ResourceKey create() throws Exception {
Math math = (Math)createNewInstance();
math.create();
ResourceKey key = new SimpleResourceKey(keyTypeName,
math.getID());
add(key, math);
return key;
}
}
/* File: PersistentMath.java
*/
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.globus.wsrf.samples.math;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Calendar;
import org.globus.wsrf.ResourceKey;
import org.globus.wsrf.ResourceException;
import org.globus.wsrf.PersistenceCallback;
import org.globus.wsrf.RemoveCallback;
import org.globus.wsrf.NoSuchResourceException;
import org.globus.wsrf.InvalidResourceKeyException;
import org.globus.wsrf.utils.FilePersistenceHelper;
import org.globus.wsrf.utils.SubscriptionPersistenceUtils;
/**
* Persistent Resource Implementation
*/
public class PersistentMath
extends Math
implements PersistenceCallback, RemoveCallback {
private FilePersistenceHelper persistenceHelper;
public void setValue(int value) {
super.setValue(value);
try {
store();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
public void setTerminationTime(Calendar time) {
super.setTerminationTime(time);
try {
store();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
/**
* User-defined function.
*
* @return the resource key
*/
public Object create() throws Exception {
Object key = super.create();
store();
return key;
}
/**
* Called when activating a Math resource by ResourceHomeImpl
*/
public void load(ResourceKey key) throws ResourceException {
File file = getKeyAsFile(key.getValue());
if (!file.exists()) {
throw new NoSuchResourceException();
}
initialize(key.getValue());
FileInputStream fis = null;
int value = 0;
try {
fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
value = ois.readInt();
this.terminationTime = (Calendar)ois.readObject();
SubscriptionPersistenceUtils.loadSubscriptionListeners(
this.getTopicList(), ois);
} catch (Exception e) {
throw new ResourceException("Failed to load resource", e);
} finally {
if (fis != null) {
try { fis.close(); } catch (Exception ee) {}
}
}
this.value.set(0, new Integer(value));
}
public synchronized void store() throws ResourceException {
FileOutputStream fos = null;
File tmpFile = null;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
try {
tmpFile = File.createTempFile(
"counter", ".tmp",
getPersistenceHelper().getStorageDirectory());
fos = new FileOutputStream(tmpFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(((Integer) this.value.get(0)).intValue());
oos.writeObject(this.terminationTime);
SubscriptionPersistenceUtils.storeSubscriptionListeners(
this.getTopicList(), oos);
} catch (Exception e) {
if (tmpFile != null) {
tmpFile.delete();
}
throw new ResourceException("Failed to store resource", e);
} finally {
if (fos != null) {
try { fos.close();} catch (Exception ee) {}
}
}
File file = getKeyAsFile(this.key);
if (file.exists()) {
file.delete();
}
if (!tmpFile.renameTo(file)) {
tmpFile.delete();
throw new ResourceException("Failed to store resource");
}
}
private File getKeyAsFile(Object key)
throws InvalidResourceKeyException {
if (key instanceof Integer) {
return getPersistenceHelper().getKeyAsFile(key);
} else {
throw new InvalidResourceKeyException();
}
}
public void remove() throws ResourceException {
getPersistenceHelper().remove(this.key);
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
}
protected synchronized FilePersistenceHelper getPersistenceHelper() {
if (this.persistenceHelper == null) {
try {
this.persistenceHelper =
new FilePersistenceHelper(getClass(), ".ser");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
return this.persistenceHelper;
}
}
File: MathService.java
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.globus.wsrf.samples.math;
import java.util.Set;
import java.util.Iterator;
import org.globus.wsrf.security.SecurityManager;
import java.rmi.RemoteException;
import org.apache.axis.MessageContext;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.globus.wsrf.utils.log4j.SystemAdminLogFactory;
import org.globus.axis.message.addressing.EndpointReferenceType;
import org.globus.wsrf.ResourceContext;
import org.globus.wsrf.ResourceKey;
import org.globus.wsrf.utils.AddressingUtils;
import org.globus.wsrf.utils.ContextUtils;
import org.globus.wsrf.utils.log4j.LogObject;
import com.math.CreateMath;
import com.math.CreateMathResponse;
import java.security.cert.X509Certificate;
import javax.security.auth.Subject;
import org.globus.wsrf.impl.security.util.EPRUtil;
/**
* Math service implementation.
*/
public class MathService
{
private static Log logger =
LogFactory.getLog(MathService.class.getName());
private static Log sysLogger =
SystemAdminLogFactory.getLog(MathService.class.getName());
public CreateMathResponse createMath(CreateMath request)
throws RemoteException
{
LogObject log = new LogObject("org.samples.math.create.start");
sysLogger.info(log);
ResourceContext ctx = null;
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
MathHome home = null;
ResourceKey key = null;
try
{
ctx = ResourceContext.getResourceContext();
home = (MathHome) ctx.getResourceHome();
key = home.create();
}
catch(RemoteException e)
{
sysLogger.error(new LogObject("org.samples.math.create.end",
"-1"));
logger.error("Error creating math", e);
throw e;
}
catch(Exception e)
{
sysLogger.error(new LogObject("org.samples.math.create.end",
"-1"));
throw new RemoteException("", e);
}
EndpointReferenceType epr = null;
try
{
epr = AddressingUtils.createEndpointReference(ctx, key);
}
catch(Exception e)
{
sysLogger.error(new LogObject("org.samples.math.create.end",
"-1"));
throw new RemoteException("", e);
}
MessageContext msgCtx = MessageContext.getCurrentContext();
String servicePath = ContextUtils.getTargetServicePath(msgCtx);
if (servicePath.equals("SecureMathService")) {
// try to get service's credential
SecurityManager manager = SecurityManager.getManager(msgCtx);
Subject subject = manager.getServiceSubject();
Set set = subject.getPublicCredentials(X509Certificate[].class);
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
Iterator it = set.iterator();
while (it.hasNext()) {
X509Certificate[] certs = (X509Certificate[])it.next();
EPRUtil.insertCertificates(epr, certs, null);
break;
}
}
CreateMathResponse response = new CreateMathResponse();
response.setEndpointReference(epr);
sysLogger.info(new LogObject("org.samples.math.create.end",
"0"));
return response;
}
public int add(int arg0) throws RemoteException
{
sysLogger.info(new LogObject("org.samples.math.add.start"));
Object resource = null;
try
{
resource = ResourceContext.getResourceContext().getResource();
}
catch(RemoteException e)
{
sysLogger.info(new LogObject("org.samples.math.add.end",
"-1"));
throw e;
}
catch(Exception e)
{
sysLogger.info(new LogObject("org.samples.math.add.end",
"-1"));
throw new RemoteException("", e);
}
Math math = (Math) resource;
synchronized(math)
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
{
}
int result = math.getValue();
result += arg0;
math.setValue(result);
sysLogger.info(new LogObject("org.samples.math.add.end", "0"));
return result;
}
}
Bước 2: Tạo các file WSDL cho dịch vụ MathService:
File: MathService.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="Math" targetNamespace="http://math.com/service"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:service name="MathService">
<wsdl:port name="MathPortTypePort" binding="binding:MathPortTypeSOAPBinding">
<soap:address location="http://localhost:8080/wsrf/services/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
File: deploy-server.wsdd
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultServerConfig"
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<service name="MathService" provider="Handler"
use="literal" style="document">
<parameter name="allowedMethodsClass"
value="com.math.MathPortType"/>
<parameter name="handlerClass"
value="org.globus.axis.providers.RPCProvider"/>
<parameter name="className"
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
value="org.globus.wsrf.samples.math.MathService"/>
<wsdlFile>share/schema/core/samples/math/math_service.wsdl</wsdlFile>
<parameter name="scope" value="Application"/>
<parameter name="providers" value="
DestroyProvider SetTerminationTimeProvider GetRPProvider
QueryRPProvider GetMRPProvider
SubscribeProvider GetCurrentMessageProvider"/>
</service>
</deployment>
File: math_bindings.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:binding name="MathPortTypeSOAPBinding" type="porttype:MathPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="createMath">
<soap:operation soapAction="http://math.com/MathPortType/createMathRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="add">
<soap:operation soapAction="http://math.com/MathPortType/addRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetResourceProperty">
GetResourcePropertyRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="InvalidResourcePropertyQNameFault">
<soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnavailableFault">
<soap:fault name="ResourceUnavailableFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="QueryResourceProperties">
QueryResourcePropertiesRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="InvalidResourcePropertyQNameFault">
<soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidQueryExpressionFault">
<soap:fault name="InvalidQueryExpressionFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="QueryEvaluationErrorFault">
<soap:fault name="QueryEvaluationErrorFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnavailableFault">
<soap:fault name="ResourceUnavailableFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="UnknownQueryExpressionDialectFault">
<soap:fault name="UnknownQueryExpressionDialectFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetMultipleResourceProperties">
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
GetMultipleResourcePropertiesRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="InvalidResourcePropertyQNameFault">
<soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnavailableFault">
<soap:fault name="ResourceUnavailableFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="Subscribe">
<soap:operation soapAction="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="TopicNotSupportedFault">
<soap:fault name="TopicNotSupportedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidTopicExpressionFault">
<soap:fault name="InvalidTopicExpressionFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="UnsupportedPolicyRequestFault">
<soap:fault name="UnsupportedPolicyRequestFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="UnacceptableInitialTerminationTimeFault">
<soap:fault name="UnacceptableInitialTerminationTimeFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidMessageContentExpressionFault">
<soap:fault name="InvalidMessageContentExpressionFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidProducerPropertiesExpressionFault">
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
<soap:fault name="InvalidProducerPropertiesExpressionFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="SubscribeCreationFailedFault">
<soap:fault name="SubscribeCreationFailedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="TopicExpressionDialectUnknownFault">
<soap:fault name="TopicExpressionDialectUnknownFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidFilterFault">
<soap:fault name="InvalidFilterFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="NotifyMessageNotSupportedFault">
<soap:fault name="NotifyMessageNotSupportedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="UnrecognizedPolicyRequestFault">
<soap:fault name="UnrecognizedPolicyRequestFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="GetCurrentMessage">
GetCurrentMessageRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="MultipleTopicsSpecifiedFault">
<soap:fault name="MultipleTopicsSpecifiedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="TopicNotSupportedFault">
<soap:fault name="TopicNotSupportedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="InvalidTopicExpressionFault">
<soap:fault name="InvalidTopicExpressionFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="NoCurrentMessageOnTopicFault">
<soap:fault name="NoCurrentMessageOnTopicFault" use="literal"/>
</wsdl:fault>
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
<wsdl:fault name="TopicExpressionDialectUnknownFault">
<soap:fault name="TopicExpressionDialectUnknownFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="Destroy">
DestroyRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ResourceNotDestroyedFault">
<soap:fault name="ResourceNotDestroyedFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnavailableFault">
<soap:fault name="ResourceUnavailableFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
<soap:fault name="ResourceUnknownFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="SetTerminationTime">
SetTerminationTimeRequest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ResourceUnavailableFault">
<soap:fault name="ResourceUnavailableFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="UnableToSetTerminationTimeFault">
<soap:fault name="UnableToSetTerminationTimeFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ResourceUnknownFault">
Nguyễn Quang Hùng
Khoa KH&KTMT, Trường Đại học Bách Khoa TPHCM
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Hướng dẫn tạo MathService tương thích với Globus Toolkit 4.2.x - Nguyễn Quang Hùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
tai_lieu_huong_dan_tao_mathservice_tuong_thich_voi_globus_to.pdf

