日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

oracle json入参调用ws服务返回请求失败_Spring 5.2.2技术集成 —Spring HTTP调用程序和JAXWS...

發(fā)布時間:2023/12/18 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle json入参调用ws服务返回请求失败_Spring 5.2.2技术集成 —Spring HTTP调用程序和JAXWS... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? 下面提到的AccountService接口類需要看Spring 5.2.2 技術的集成—RMI、Hessian,就不在此贅述了。

一、Spring HTTP調用程序

? ? ? 與Hessian相反,Spring HTTP 調用程序都是輕量級協(xié)議,它們使用自己的便捷的序列化機制,并使用標準Java序列化機制通過HTTP公開服務。如果參數(shù)和返回類型是無法使用Hessian使用的序列化機制進行序列化的復雜類型,則這有很大的優(yōu)勢。

? ? 其實是Spring使用JDK或Apache?HttpComponents提供的標準工具來執(zhí)行HTTP調用。如果你需要更高級、更易于使用的功能,請使用后者。

? ? ?請注意由于不安全的Java反序列化導致的漏洞:在反序列化步驟中,被操縱的輸入流可能導致服務器上執(zhí)行不需要的代碼。因此,不要向不受信任的客戶端公開HTTP調用程序端點。相反,只在您自己的服務之間公開它們。一般來說,我們強烈建議使用其他任何消息格式(如JSON)。

? ??如果你擔心Java序列化導致的安全漏洞,請考慮核心JVM級別的通用序列化filter 機制,該機制最初是為JDK 9開發(fā)的,但同時移植到JDK 8、7和6。

1、暴露服務對象

? ? ?為服務對象設置HTTP 調用程序與使用Hessian進行相同操作的方式非常相似。由于Hessian支持提供HessianServiceExporter,Spring的HttpInvoker支持提供org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter。

? ? ??要在Spring Web MVC DispatcherServlet中暴露AccountService?(前面提到過,Spring 5.2.2 技術的集成—RMI、Hessian),需要在調度器的應用程序上下文中設置以下配置,如下例所示:

"/AccountService" <property name="service" ref="accountService"/> <property name="serviceInterface" value="example.AccountService"/>bean>

這樣的暴露服務定義通過DispatcherServlet?實例的標準映射工具公開。或者,可以在根應用程序上下文(例如,在“WEB-INF”中)中創(chuàng)建HttpInvokerServiceExporter?在'WEB-INF/applicationContext.xml''),如下例所示:

"accountExporter" <property name="service" ref="accountService"/> <property name="serviceInterface" value="example.AccountService"/>bean>

此外,你可以在中為此暴露服務定義相應的servlet??web.xml文件,servlet名稱與目標暴露服務的bean名稱匹配,如下例所示:

<servlet> <servlet-name>accountExporterservlet-name> <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServletservlet-class>servlet><servlet-mapping> <servlet-name>accountExporterservlet-name> <url-pattern>/remoting/AccountServiceurl-pattern>servlet-mapping>

2、客戶端鏈接服務

? ? ?同樣,從客戶端鏈接服務與使用Hessian時的方式非常相似。通過使用代理,Spring可以將你對HTTP POST請求的調用轉換為指向暴露服務的URL。以下示例顯示如何配置此排列:

"httpInvokerProxy" <property name="serviceUrl" value="https://remotehost:8080/remoting/AccountService"/> <property name="serviceInterface" value="example.AccountService"/>bean>

如前所述,你可以選擇要使用的HTTP客戶端。默認情況下,HttpInvokerProxy?使用JDK的HTTP功能,但是你也可以通過設置httpInvokerRequestExecutor?屬性來使用Apache? HttpComponents?客戶端。下面的示例演示如何執(zhí)行此操作:

<property name="httpInvokerRequestExecutor"> <bean class="org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor"/>property>

二、Java Web服務

Spring完全支持標準Java web services API:

  • 使用JAX-WS暴露web服務

  • 使用JAX-WS訪問web服務

除了?Spring Core中對JAX-WS的支持外,Spring portfolio?還提供了SpringWeb服務,它是協(xié)議優(yōu)先、文檔驅動的Web服務的解決方案,強烈推薦用于構建現(xiàn)代的、面向未來的Web服務。

1、使用JAX-WS暴露基于Servlet的Web服務

? ?Spring為JAX-WS servlet實現(xiàn)提供了一個方便的基類:SpringBeanAutowiringSupport。為了暴露AccountService,我們擴展了Spring的SpringBeanAutowiringSupport?類,并在這里實現(xiàn)業(yè)務邏輯,通常將調用委托給業(yè)務層。我們使用Spring的@Autowired注解來表達對Spring托管bean的依賴性。將SpringBeanAutowiringSupport繼承到以下示例:

/** * 符合JAX-WS的AccountService實現(xiàn),它簡單地委托給根?* web應用程序上下文中的實現(xiàn)AccountService。 *?*?這個封裝類是必需的,因為JAX-WS需要使用專用的類。如果需要暴露?*?現(xiàn)有服務,那么繼承springbeanautowringsupport的封裝器(通過?*?@Autowired注解)是最簡單的JAX-WS兼容方式。 * *?*這是在服務器端JAX-WS實現(xiàn)中注冊的類。對于java服務器,這將簡單 * 地定義為web.xml文件,服務器檢測到這是一個JAX-WS端點并作出相應?*?的響應。servlet名稱通常需要與指定的WS-service名稱匹配 *?* web服務引擎管理此類實例的生命周期。SpringBean引用將被連接到這里 */import org.springframework.web.context.support.SpringBeanAutowiringSupport;@WebService(serviceName="AccountService")public class AccountServiceEndpoint extends SpringBeanAutowiringSupport { @Autowired private AccountService biz; @WebMethod public void insertAccount(Account acc) { biz.insertAccount(acc); } @WebMethod public Account[] getAccounts(String name) { return biz.getAccounts(name); }}

我們的AccountServiceEndpoint?需要在與Spring上下文相同的web應用程序中運行,以允許訪問Spring的結構。在java環(huán)境中,這是默認情況,使用JAX-ws ?servlet部署的標準協(xié)議。

2、使用JAX-WS導出獨立的Web服務

? ? Oracle JDK附帶的內置JAX-WS提供程序通過使用JDK中包含的內置HTTP服務器來支持web服務的公開。Spring的SimpleJaxWsServiceExporter?檢測Spring應用程序上下文中所有帶@WebService注解的bean,并通過默認的JAX-WS服務器(jdk ?http服務器)暴露它們。

? ??在這個場景中,端點實例被定義和管理為Spring beans?本身。它們在JAX-WS引擎中注冊,但它們的生命周期取決于Spring應用程序上下文。這意味著你可以將Spring功能(例如依賴注入)應用于端點實例。通過@Autowired的注解驅動注入也可以工作。下面的示例演示如何定義這些bean:

class= <property name="baseAddress" value="http://localhost:8080/"/>bean>"accountServiceEndpoint" ...</bean>

? ??AccountServiceEndpoint?可以但不必從Spring的SpringBeanAutowiringSupport派生,因為本例中的端點是一個完全由Spring管理的bean。這意味著端點實現(xiàn)可以如下所示(沒有聲明任何超類?,Spring的@Autowired配置注解仍然適用):

@WebService(serviceName="AccountService")public class AccountServiceEndpoint { @Autowired private AccountService biz; @WebMethod public void insertAccount(Account acc) { biz.insertAccount(acc); } @WebMethod public ListgetAccounts(String name) { return biz.getAccounts(name); }}

3、使用JAX-WS?RI的Spring支持暴露Web服務

? ? ?作為GlassFish項目的一部分開發(fā)的Oracle的JAX-WS RI將Spring支持作為其JAX-WS commons項目的一部分提供。這允許將JAX-WS端點定義為Spring托管bean,類似于上一節(jié)討論的獨立模式,但這次是在Servlet環(huán)境中。

? ??與暴露基于servlet的端點的標準樣式的不同之處在于,端點實例本身的生命周期由Spring管理,并且只有一個JAX-WS servlet在中定義web.xml文件. 使用標準java樣式(如前所示),每個服務端點都有一個servlet定義,每個端點通常委托給spring ?bean(通過使用@Autowired,如前所示)。

4、使用JAX-WS訪問Web服務

? ? Spring提供了兩個工廠bean來創(chuàng)建JAX-WS web服務代理,即localjaxwsserviceactorybean和JaxWsPortProxyFactoryBean。前者只能返回一個JAX-WS服務類供我們使用。后者是完整的版本,可以返回實現(xiàn)業(yè)務服務接口的代理。在下面的示例中,我們使用JaxWsPortProxyFactoryBean為AccountService端點創(chuàng)建一個代理(同樣):

"accountWebService" "serviceInterface" "wsdlDocumentUrl" "namespaceUri" "serviceName" "portName"

?wsdlDocumentUrl?是WSDL文件的URL。Spring需要在啟動時使用它來創(chuàng)建JAX-WS服務。namespaceUri?對應于.wsdl文件中的targetNamespace?。serviceName?與.wsdl文件中的服務名稱相對應。portName?對應于.wsdl文件中的端口名。

? ??訪問web服務很容易,因為我們?yōu)樗峁┝艘粋€bean工廠,它將它暴露為一個名為AccountService的接口。下面的示例顯示了如何在Spring將其連接起來:

"client" ... "service" ref=bean>

從客戶端代碼中,我們可以像訪問普通類一樣訪問web服務,如下例所示:

public class AccountClientImpl { private AccountService service; public void setService(AccountService service) { this.service = service; } public void foo() { service.insertAccount(...); }}

?上面的內容稍微簡化了,因為JAX-WS要求端點接口和實現(xiàn)類用@WebService、@SOAPBinding等注解進行注解。這意味著你不能(輕松地)將純Java接口和實現(xiàn)類用作JAX-WS端點構件;你需要首先對它們進行相應的注解。

喜歡朋友幫忙關注和轉發(fā)Spring中文社區(qū)(加微信群,關注后加我微信入群):

spring其它技術鏈接:

https://mp.weixin.qq.com/mp/homepage?__biz=MzI3NTA5NzE5Ng==&hid=1&sn=963b73ffeefe61185f5db07ebad1a489

https://mp.weixin.qq.com/mp/homepage?__biz=MzI3NTA5NzE5Ng==&hid=3&sn=f1b18efa59446d82a467c59b20ab09c8

https://mp.weixin.qq.com/mp/homepage?__biz=MzI3NTA5NzE5Ng==&hid=2&sn=68bdaaf874131498b834cbecd7f29f0e

https://mp.weixin.qq.com/mp/homepage?__biz=MzI3NTA5NzE5Ng==&hid=4&sn=7273de72ef95a01b1893e1f6151ab7de

https://mp.weixin.qq.com/mp/homepage?__biz=MzI3NTA5NzE5Ng==&hid=5&sn=3145fd46c816ff11f209881c96a51187

總結

以上是生活随笔為你收集整理的oracle json入参调用ws服务返回请求失败_Spring 5.2.2技术集成 —Spring HTTP调用程序和JAXWS...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。