『壹』 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包吧