java web项目怎么使用wsdl文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web项目怎么使用wsdl文件相关的知识,希望对你有一定的参考价值。

webservice的发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。
注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。

1,直接AXIS调用远程的web service,直接调用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

public class caClient
public static void main(String[] args)
try
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用远程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL里面描述的接口名称
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
String temp = "测试人员";
String result = (String)call.invoke(new Object[]temp);
//给方法传递参数,并且调用方法
System.out.println("result is "+result);

catch (Exception e)
System.err.println(e.toString());




2,直接SOAP调用远程的webservice ,这种模式很少用,但是网络上有人贴出来,也转过来 :
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import java.io.*;
import java.net.*;
import java.util.Vector;

public class caService
public static String getService(String user)
URL url = null;
try
url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");
catch (MalformedURLException mue)
return mue.getMessage();

// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");
// This is the name of the method on the above object
soapCall.setMethodName("getUser");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();
// name, type, value, encoding style
Parameter isbnParam = new Parameter("userName", String.class, user, null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url,"");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault())
Fault fault = soapResponse.getFault();
String f = fault.getFaultString();
return f;
else
// read result
Parameter soapResult = soapResponse.getReturnValue ();
// get a string from the result
return soapResult.getValue().toString();

catch (SOAPException se)
return se.getMessage();


参考技术A 最简单的么,用Apache 的CXF webservice框架,里面有工具,wsdl2java,可以直接通过wsdl文档生成客户端实体和接口 参考技术B 请参考 cxf ,apache官网,有文件、例子。bin目录,就有转java类的命令
例子当中也有服务器、客户端
参考技术C 这是webservice的描述文件,需要加web服务模块

如何在Hybris中为WSDL文件生成Java类?

作为需求的一部分,我应该使用Soap Web服务,Web服务的WSDL可供我使用。

我通过使用自动生成工具(如wsimport)生成类来实现它。但我很好奇是否有更好的方法在Hybris中执行此操作,例如通过在ant中包含任务以自动生成这些类。怎么做到这一点?

答案

Hybris在spring框架上工作,所以我更喜欢使用Spring客户端的spring相关库。

另一方面,hybris为开发/调试Web服务唤醒时间非常长。我更喜欢再次使用相同的hybris spring版本创建独立的jar库,以便与hybris共享接口。通常,集成需要随时间变化。只更新此jar文件很容易。您也可以使用相同的界面为测试环境创建模拟jar。

以上是关于java web项目怎么使用wsdl文件的主要内容,如果未能解决你的问题,请参考以下文章

使用Myeclipse插件将wsdl生成java客户端代码

第一:怎么用cxf在MyEclipse6.5里面创建一个cxf工程... 第二:怎么用cxf将wsdl生成客户端...

自动生成webservice客户端代码后怎么调用

wsdl的web服务怎么调用

如何在Hybris中为WSDL文件生成Java类?

idea中运行jsp文件没有生成jsp脚本