javawebservice?java开发webservice的几种方式
大家好,今天我将为大家揭秘javawebservice和java开发webservice的几种方式的奥秘,希望我的分享能给你带来新的启发和知识。
java的WebService最大的好处是什么,最多的使用场合是什么
1.web service本身不能做太多事,各种功能都是你自己编程实现的,但是你的程序只能自己用,自己看,别人根本不知道你的程序是什么样的。而web service就是规定了一种方式,告诉你将你的程序如何的部署到服务器上,然后大家通过一种协商好的地址能找到你的程序的说明,说明的格式也是大家都协商好的,所以可以读懂……然后你就可以根据那个地址来调用这个程序的方法了。
你看,web service本身貌似没干什么,它就是让你可以发布自己的程序和调用别人发布的程序。
2.协议基本就是上面提到的那些大家协商好的东西了,什么形式?什么格式?什么样式?之类的,可以说协议被库支持,其实顺序应该是先有了这个协议,然后这个库遵从这个协议来解析,就说支持这个协议。
3.其实webservice传的数据可以是任意啊,规定用各种格式只是考虑到webservice是牵扯到多方的,不规定的话就好像两个人用不同语言交流,完全互相都不懂,那么就没意义了。xml是最通用的,你也可以说是和库绑定的,但是因为它简单通用,基本各种环境都支持解析xml
java如何调用webservice接口
Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService{
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint="WebService服务地址";
//创建 Service实例
Service service= new Service();
//通过Service实例创建Call的实例
Call call=(Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint));//为Call设置服务的位置
//由于需要认证,故需要设置调用的SOAP头信息。
Name headerName= new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url","string_itemName"));
org.apache.axis.message.SOAPHeaderElement header= new SOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement= new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url","SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
//{
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
//}
// catch(SOAPException e)
//{
// e.printStackTrace();
//}
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper= new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param= new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("","arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("","return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),
true
));
call.setOperation( oper);
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","opName"));
//调用Web Service,传入参数
String res=( String) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
*@param args
*/
public static void main(String[] args){
try{
System.out.println(getResult());
} catch(MalformedURLException e){
e.printStackTrace();
} catch(RemoteException e){
e.printStackTrace();
} catch(ServiceException e){
e.printStackTrace();
} catch(SOAPException e){
e.printStackTrace();
}
}
}
2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:
String endpoint="服务器的WebService的地址";
YourWebServiceNameProxy umsp= new YourWebServiceNameProxy(endpoint);
try{
String resultStr= umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
} catch(Exception e){
System.out.println("异常");
e.printStackTrace();
} catch(RemoteException e){
System.out.println("RemoteException异常");
e.printStackTrace();
}
如果还有疑问的话还有视频,如果对你有帮助请采纳!
用java怎么写webservice
Web Services以XML作为数据交换的标准格式,它是跨平台的应用,允许以任何方式创建Web Services,在.NET、Java平台上访问。
在Java平台创建和访问Web Service多通过Axis完成。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的。在使用Axis访问Web Service时,需要引入以下包(10个):axis-ant.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、activation-1.1.jar和mail-1.4.jar。
(1)访问Java创建的Web Service
在当前Java客户端应用中添加相应的10个Axis包,编写客户端程序:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Test{
public static void main(String[] args) throws Exception{
try{
String endpoint="http://localhost:8080/MyService/services/Hello";
Service service= new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("getHello");
String res=(String) call.invoke(new Object[]{});
System.out.println(res);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
其中两处代码加粗,第一处表示引用Java Web Service的URL,第二处表示公共的方法名称。
java开发webservice的几种方式
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。摘自中华考试网 http://www.examw.com/java/jichu/190181/index.html
1.Axis2
Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便。
2.Apche CXF
CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。
3.JDK开发webservice(jdk自带的jaxws)
关于javawebservice的内容到此结束,希望对大家有所帮助。