服务器端WebServiceDispatcher.java
package com.shoo.ws;import org.apache.axis.AxisFault;public interface WebServiceDispatcher
{ public abstract String[] dispatch(String s, String s1, String s2, String s3, String as[])
throws AxisFault;
}
服务器提供:
URL http://www.xxx.com/services/WebServiceDispatcher
Operation Name dispatch
returnQName dispatchReturn
returnType ArrayOfstring
parameter
Name Type Desc
username String 系统代码
password String 系统口令
springBean String 服务对象名称
beanMethod String 服务方法名称
args ArrayOfstring 传递给服务方法的参数
基本连接服务器端代码终于自己搞定了大侠们帮我看看怎么把参数传递过去,调用其提供的JobWSBean类的UpdateJob方法。
package com.shoo.ws;import org.apache.axis.AxisFault;public interface WebServiceDispatcher
{ public abstract String[] dispatch(String s, String s1, String s2, String s3, String as[])
throws AxisFault;
}
服务器提供:
URL http://www.xxx.com/services/WebServiceDispatcher
Operation Name dispatch
returnQName dispatchReturn
returnType ArrayOfstring
parameter
Name Type Desc
username String 系统代码
password String 系统口令
springBean String 服务对象名称
beanMethod String 服务方法名称
args ArrayOfstring 传递给服务方法的参数
基本连接服务器端代码终于自己搞定了大侠们帮我看看怎么把参数传递过去,调用其提供的JobWSBean类的UpdateJob方法。
解决方案 »
- 一个简单的刷新问题
- java web聊天程序
- 谁能给介绍下bo报表以及开发工具啊。。
- EJB 3.0:EJB能够抛出异常给调用方吗
- spring2.5+Hibernate3.2,applicationContext.xml文件报错
- 用Hibernate3注解映射出现的问题!
- java代码正则表达式替换的问题
- 用Tomcat作为应用服务器的WEB应用程序的远程维护问题,请大家指教。
- 各位老师,您们使用MYECLIPSE开发HIERNATE方便吗??我感觉怎么没有开发STRUTS方便呢?
- 最好用的Hibernate开发工具-CownewStudio测试版发布
- JAVA如何控制摄像头?大送分!!!
- ServletInputStream!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1 wsif
2 axis-client
3 wsdl2java通过客户端来调用服务,还有在配置webservices服务时要注意把配置参数!
import java.util.Random;import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;import com.dayang.archive.api.param.ArchiveFileInfo;
import com.dayang.archive.api.param.ArchiveParam;
import com.dayang.archive.api.param.CopyFileInfo;
import com.dayang.archive.api.param.DownloadFileInfo;
import com.dayang.archive.api.param.DownloadParam;
import com.dayang.archive.api.param.FileCopyParam;
import com.dayang.archive.structure.TaskInfo;
import com.dayang.archive.structure.TaskProgress;import junit.framework.TestCase;public class TestArchiveAPIWebServices extends TestCase {
Service service = null;
Call call = null;
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}
protected void setUp() throws Exception {
super.setUp();
//建立请求服务框架实例。
service = new Service();
//从框架中生成一个维护调用的实例。
call = (Call) service.createCall();
//注册输出参数类型
QName qn = new QName("urn:archive_api","TaskProgress");
call.registerTypeMapping(TaskProgress.class,qn,
new BeanSerializerFactory(TaskProgress.class, qn),
new BeanDeserializerFactory(TaskProgress.class, qn) ); QName qn1 = new QName("urn:archive_api","TaskInfo");
call.registerTypeMapping(TaskInfo.class,qn1,
new BeanSerializerFactory(TaskInfo.class, qn1),
new BeanDeserializerFactory(TaskInfo.class, qn1) ); QName qn2 = new QName("urn:archive_api","FileCopyParam");
call.registerTypeMapping(FileCopyParam.class,qn2,
new BeanSerializerFactory(FileCopyParam.class, qn2),
new BeanDeserializerFactory(FileCopyParam.class, qn2) );
QName qn3 = new QName("urn:archive_api","CopyFileInfo");
call.registerTypeMapping(CopyFileInfo.class,qn3,
new BeanSerializerFactory(CopyFileInfo.class, qn3),
new BeanDeserializerFactory(CopyFileInfo.class, qn3) );
QName qn4 = new QName("urn:archive_api","DownloadParam");
call.registerTypeMapping(DownloadParam.class,qn4,
new BeanSerializerFactory(DownloadParam.class, qn4),
new BeanDeserializerFactory(DownloadParam.class, qn4) );
QName qn5 = new QName("urn:archive_api","DownloadFileInfo");
call.registerTypeMapping(DownloadFileInfo.class,qn5,
new BeanSerializerFactory(DownloadFileInfo.class, qn5),
new BeanDeserializerFactory(DownloadFileInfo.class, qn5) );
QName qn6 = new QName("urn:archive_api","ArchiveFileInfo");
call.registerTypeMapping(ArchiveFileInfo.class,qn6,
new BeanSerializerFactory(ArchiveFileInfo.class, qn6),
new BeanDeserializerFactory(ArchiveFileInfo.class, qn6) );
QName qn7 = new QName("urn:archive_api","ArchiveParam");
call.registerTypeMapping(ArchiveParam.class,qn7,
new BeanSerializerFactory(ArchiveParam.class, qn7),
new BeanDeserializerFactory(ArchiveParam.class, qn7) );
// 调用的web服务的url地址
call.setTargetEndpointAddress(new URL("http://localhost:8080/archive_api_ws/services/archive_api"));
}
public void testGetTaskInfo() throws Exception{
//设置需要调用的函数名称
call.setOperationName(new QName("archive_api","getTaskInfo"));
//设置参数
call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
//设置返回参数
call.setReturnClass(TaskInfo.class);
String taskID = "4BF56AB9-DAE3-437C-815B-85C341ABA9C8";
Object[] aryObj = new Object[] {taskID};
TaskInfo a = (TaskInfo) call.invoke(aryObj);
System.out.println(a);
if (a != null) {
System.out.println(a.getCreated());
}
}
当你已经开发好了一个webservices,也发布了,你如果希望调用试一试,可以自己写java代码调用,或者别的语言的代码,更方便的是从xmlspy2007中调用。(我目前还不知道如何写java代码调用document literal的web service)
你只要在选择SOAP/Create new SOAP request,然后输入url,比如我的是http://localhost:8080/archive_api_ws/services/archive_api?wsdl
它就会解析出这个webservices对应的operation,你选择一个后它就会帮你生成一个request的SOAP,你只要将参数改改就可以调用了,调用完了还可以看到返回的soap结果。的确是方便,这就体现了web services作为标准的优势。
上面在“对于不同的类型style和use的分析和理解”中我列出来的几个例子就都是xmlspy生成的。
2、根据你用的语言,比如java用axis的wsdl2java, C可以用gsoap的soapcpp2,这些工具都可以根据wsdl生成一大堆底层的代码。
3、根据工具生成的代码放到自己建立的工程中去,然后进行调用,具体方法可以参考各种工具的documents
按上楼的下个包,再到这个地方看看就行了.很简单的:
http://blog.csdn.net/lyj_china/archive/2006/05/18/743610.aspx
java.lang.ClassNotFoundException:oracle:jdbc.driver.OracleDriver请问有什么办法可以解决吗,与build.xml写法有关吗?
用生成的stub测试呢