webservice 完整的例子
发布时间:2020-12-17 00:22:34 所属栏目:安全 来源:网络整理
导读:1、开发webservice 服务器端 ? 1.1建立一个javabean ? package com.sinosoft.bean; ????public class User ????{ ????????private String name ; ????????private String pwd ; ????????public String getName() ????????{ ????????????return name ; ??????
1、开发webservice 服务器端
? 1.1建立一个javabean
?
package com.sinosoft.bean;
????public class User
????{
????????private String name;
????????private String pwd;
????????public String getName()
????????{
????????????return name;
????????}
????????public void setName(String name)
????????{
????????????this.name = name;
????????}
????????public String getPwd()
????????{
????????????return pwd;
????????}
????????public void setPwd(String pwd)
????????{
????????????this.pwd = pwd;
????????}
}
这是一个很普通的javabean到时用于webservice参数
?
1.2写webservcie方法
?
package com.sinosoft.webservice;
import com.sinosoft.bean.User;
public class EntityAgres
{
????public User mYUser(User user)
????{
????????User u=new User();
????????u.setName(user.getName());
????????u.setPwd(u.getPwd());
????????return u;
????}
}
//这个方法是webserivce 传递的参数和返回的参数都是javabean形式
1.3、些方法是传递的接收的都是普通的参数形式
package com.sinosoft.webservice;
?
public class HelloService
{
??????????? /** *//**?
???????????? * 不带参数的函数?
???????????? *?
???????????? * @return 返回Hello字符串?
???????????? */?
??????????? public String sayHello()
??????????? {?
??????????????? return "Hello";?
??????????? }?
?
??????????? /** *//**?
???????????? * 带参数的函数?
???????????? *?
???????????? * @param name?
???????????? * 名称?
???????????? * @return 返回加上名称的欢迎词?
???????????? */?
??????????? public String sayHelloToPerson(String name)
???? ?????? {?
??????????????? if (name == null || name.equals(""))
?????????????? ?{?
??????????????????? name = "nobody";?
??????????????? }?
??????????????? return "Hello " + name;?
????????????}?
?
?
}
2、发布webserivce
?2.1、新建一个文件夹在里面新建deploy.wsdd文件和deploywebservice.bat批处理文件,
deploy.wsdd内容如下
?<?xml version="1.0" encoding="UTF-8"?>?
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">?
<service name="HelloServices" provider="java:RPC">?
????<parameter name="className" value="com.sinosoft.webservice.HelloService"/>?
????<parameter name="allowedMethods" value="*"/>?
</service>?
<service name="HelloServicesEntity" provider="java:RPC">?
????<parameter name="className" value="com.sinosoft.webservice.EntityAgres"/>?
????<parameter name="allowedMethods" value="*"/>?
????<beanMapping qname="myNS:User" xmlns:myNS="urn:AnalyzUser" languageSpecificType="java:com.sinosoft.bean.User"/>
</service>?
</deployment>?
2.2 deploywebservice.bat 文件内容如下
java -cp axis-ant.jar;axis-schema.jar;axis.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;wsdl4j-1.5.1.jar;xmlsec-1.3.0.jar org.apache.axis.client.AdminClient -lhttp://localhost:8080/ws/services/AdminService deploy.wsdd?? pause?
?
3、客户端
package com.sinosoft.test;
?
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
?
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
?
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
?
public class TString {
?
???? private static final String HELLO_SERVICE_ENDPOINT = "http://127.0.0.1:8080/ws/services/HelloServices?wsdl";?
?
????/**
???? * @param args
???? */
????public static void main(String[] args) {
?
????????//callSayHello();
????????TBean();
?
????????// TODO Auto-generated method stub
?
????}
?
?
????public static void callSayHello() {?
??????????????? try {?
??????????????????? Service service = new Service();?
?????????????????? Call call = (Call) service.createCall();?
??????????????????? call.setTargetEndpointAddress(new java.net.URL(?
?????????????????????????? HELLO_SERVICE_ENDPOINT));?
?????????????????? //下面名字查询的http://121:8080/WebServiceTest/services/HelloServices?wsdl文件里有?
??????????????????? call.setOperationName(new QName("http://webservice.sinosoft.com",?
?????????????????????????? "sayHello"));?
??????????????????? call.setReturnType(org.apache.axis.Constants.XSD_STRING);?
??????????????????? try {?
??????????????????????? //远程调用发布的方法?
?????????????????????? String ret = (String) call.invoke(new Object[] {});?
??????????????????????? System.out.println("The return value is:" + ret);?
??????????????????????? return;?
??????????????????? } catch (IOException e) {?
??????????????????????? e.printStackTrace();?
??????????????????? }?
??????????????? } catch (MalformedURLException e) {?
??????????????????? e.printStackTrace();?
??????????????? } catch (ServiceException e) {?
??????????????????? e.printStackTrace();?
??????????????? }?
?
??????????? }?
?
????public static void TBean() {?
????????Service service = new Service();?
???????? Call call;
????????try {
?
?
??????????? call = (Call) service.createCall();
?
??????????? QName qn = new QName("urn:AnalyzUser","User");
?
??????????? call.registerTypeMapping(User.class,qn,
?
????????????????????????? new BeanSerializerFactory(User.class,qn),
????????????????????????? new org.apache.axis.encoding.ser.BeanDeserializerFactory(User.class,qn));
?
?
?
????????????call.setTargetEndpointAddress("http://localhost:8080/ws/services/HelloServicesEntity?wsdl");?????
?
?????????????????? call.setOperationName(new QName("EntityAgresService","mYUser"));
?
?????????????????? call.addParameter("user",ParameterMode.IN);
?
?????????????????? call.setReturnClass(User.class);
?????????????????? User u=new User();
?????????????????? u.setName("22222");
?????????????????? u.setPwd("22222");
?
?????????????????? User s= (User) call.invoke(new Object[]{u});
?????????????????? System.err.print(s.getName());
?
?
?
?????????? }catch(Exception e) {
?
??????????????? System.out.println( "Error : " + e.toString());
?
??????????? }???????
?
?
????????}?
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |