『壹』 java WebService消息格式SOAP1.1和SOAP1.2的区别
SOAP1.1和1.2发布的WebService的主要区别:
1、两者的命名空间不同。
1.1 -> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
1.2 -> xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
2、HTTP头信息上存在差异。
1.1 -> 为Content-Type: text/xml; charset=UTF-8
1.2 -> 为Content-Type: application/soap+xml;charset=UTF-8
3、发布的WSDL内容也不相同。
WSDL是Web Service的描述语言,版本不同,内容也就不尽相同了。
4、SOAP消息格式不同。
主要体现在消息格式的命名空间上。
『贰』 JAVA 如何解析soap
我觉得你的问题应该不是说如何解析这个xml吧,应该说如何吧这个xml转换为一个实际的java类调用把,那这个太多了,建议cxf吧。可以做soap的客户端也可以做服务端,不需要你写多少东西
『叁』 JAVA实现SOAP传输,不用tomcat
@WebService(targetNamespace = CNCConstant.SERVICES_TARGETNAMESPACE)
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface IUserService {
/**
* 用户登陆接口
*/
@WebMethod(operationName = "Login")
@WebResult(name = "LoginResponse", targetNamespace = CNCConstant.PARAMETERS_TARGETNAMESPACE)
public LoginResult Login(
@WebParam(name = "Login", targetNamespace = CNCConstant.PARAMETERS_TARGETNAMESPACE)com.xxx.entry.Login login);
soap消息包含和response这是我在公司解析登陆的soap消息用到的代码,作用直接用soap消息来调用login这个webservice的方法,entry.login是直接用jaxb解析soap消息出来的entry类,
——————————————————————————————————————
这个是jaxb直接build出来的entry类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Login", propOrder = {
"account",
"session"
}, namespace= CNCConstant.PARAMETERS_TARGETNAMESPACE)
public class Login{
/**
*
*/
@XmlElement(name="account", namespace = CNCConstant.PARAMETERS_TARGETNAMESPACE)
protected Account account;
@XmlElement(required = true)
protected String session;
/**
* Gets the value of the account property.
*
* @return
* possible object is
* {@link Account }
*
*/
public Account getAccount() {
return account;
}
/**
* Sets the value of the account property.
*
* @param value
* allowed object is
* {@link Account }
*
*/
public void setAccount(Account value) {
this.account = value;
}
/**
* Gets the value of the session property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getSession() {
return session;
}
/**
* Sets the value of the session property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setSession(String value) {
this.session = value;
}
}
————————————————————————————————
楼主教你一个方法,声请一个小号来答,然后把最佳给它,下次再回答一题小号200分的题目,分就不用付出了,我这soap答的也不好你就这样就不用损失分了。
『肆』 用java soap开发分布式系统有什么大的优势吗现在soap技术有没有...
1、研究什么是webservices 2、研究wsdl是干什么的 3、了解wsdd,uddi这些概念 4、学习axis,尝试写一个简单的版web服务 5、学会如何权调用一个web服务,也就是soap的消息格式
『伍』 java怎么用soap的方式访问一个接口
我之前写的一个实验是soap机制的,你看可以么,以下是实验内容
Web service 其运作原理如下 (下图引用官方网站简介):
+--------------------------------------+
web service registry
(aka service broker)
(UDDI)
+--------------------------------------+
^ ^
(2) (1)
(the client (the web service
WSDL finds the WSDL provider publishes
service the web service)
they want)
v v
+-----------+ +-----------+
service <--soap--> service
requestor provider
+-----------+ (3) +-----------+
(1) 发布 Web Service.
(2) 寻找已发布的 Web Service.
(3) 通过 SOAP 互相沟通.
(1) 及 (2) 均为 optional.
WSDL -- Web Services description Language. WSDL 描述 web service 的功能.
UDDI -- Universal Description, Discovery and Integration. 发布 web service 的协定.
SOAP -- Simple Object Access Protocol. SOAP 通过 HTTP 传送 XML message.
『陆』 java编程,为什么soa都要和webservice联系上呢
用一句话来概括基本的观点就是“SOA不是Web Service,Web Service是目前最适合实现SOA的技术”。 之所以SOA和Web Service被混为一谈,最可能的原因了也就在于此吧。
Web Service是就现在而言最适合实现SOA的一些技术的集合,事实上最近SOA的火爆在很大程度上归功于Web Service标准的成熟和应用的普及为广泛的实现SOA架构提供了基础。下面让我们看看Web Service中的各种协议是如何互相工作来满足SOA所需的特点的:
独立的功能实体:通过UDDI的目录查找,我们可以动态改变一个服务的提供方而无需影响客户端的应用程序配置。所有的访问都通过SOAP访问进行,只要WSDL接口封装良好,外界客户端是根本没有办法直接访问服务器端的数据的。
大数据量低频率访问:通过使用WSDL和基于文本(Literal)的SOAP请求,我们可以实现能一次性接收大量数据的接口。这里需要着重指出的是SOAP请求分文本方式和远程调用(RPC)两种方式,正如上文已经提到的,采用远程调用方式的SOAP请求并不符合这点要求。但是令人遗憾的是现有的大多数SOAP请求采用的仍然是远程调用(RPC)方式,在某些平台上,例如IBM WebSphere的早期版本,甚至没有提供文本方式的SOAP支持。
基于文本的消息传递:Web Service所有的通讯是通过SOAP进行的,而SOAP是基于XML的,不同版本之间可以使用不同的DTD或者XML Schema加以辨别和区分。因此只需要我们为不同的版本提供不同的处理就可以轻松实现版本控制的目标。
『柒』 JAVA通过soap访问webservice
我做过的一个例子:
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import com.yupont.utils.XMLUtil;
public class ServiceTest {
public String callSGCCService(String operationName,String inputXML,String serviceName,String serverContextRoot)
{
StringBuilder result=null;
try {
String endpoint = serverContextRoot+"/services/"+serviceName;
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new java.net.URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("http://service.yupont.com",operationName));
call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
System.out.println(result1);
result=new StringBuilder(result1);
result.append("@@@@@");
result.append(XMLUtil.getNodeTxtByNodeName(XMLUtil.strToXML(result1).getRootElement(), "URL"));
}
catch (Exception e)
{
System.err.println(e.toString());
}
return result.toString();
}
}
你可以参考一下
『捌』 java webservice中如何获取soap client发过来的消息头
楼主,是指这样的需求吗
『玖』 java soap客户端请求服务端发生错误
缺少Java包吧