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 đủ
pdf 62 trang myanh 19700 Free
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:

  • pdftai_lieu_huong_dan_tao_mathservice_tuong_thich_voi_globus_to.pdf