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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Maven+Spring+CXF+Tomcat7 简单例子实现webservice

發(fā)布時間:2024/1/17 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven+Spring+CXF+Tomcat7 简单例子实现webservice 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這個例子需要建三個Maven項目,其中一個為父項目,另外兩個為子項目

?

首先,建立父項目testParent,選擇quickstart:

輸入項目名稱和模塊名稱,然后創(chuàng)建:

然后建立子項目testInterface:

再建立子項目projectImpl,過程跟上面以上,只是類型要選webapp(到時候啟動工程或者打包都是以這個項目為主的):

建好之后,在testParent的pom.xml里面寫入下面內容,主要是加入了cxf,junit,logback,springframework的依賴,在父項目加入依賴,子項目就不需要再加入依賴了:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>testParent</groupId><artifactId>testParent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>testParent</name><url>http://maven.apache.org</url><build><finalName>testParent</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration></plugin></plugins></build><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><org.springframework.version>3.2.8.RELEASE</org.springframework.version><cxf.version>2.7.7</cxf.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-api</artifactId><version>${cxf.version}</version><type>jar</type><scope>compile</scope></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-rs-security-cors</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-ws-policy</artifactId><version>${cxf.version}</version><type>jar</type></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-core</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxrs</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-rs-extension-providers</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><type>jar</type><scope>provided</scope></dependency><dependency> <groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>4.7</version><exclusions><exclusion><artifactId>logback-classic</artifactId><groupId>ch.qos.logback</groupId></exclusion><exclusion><artifactId>logback-core</artifactId><groupId>ch.qos.logback</groupId></exclusion><exclusion><artifactId>jackson-databind</artifactId><groupId>com.fasterxml.jackson.core</groupId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework.version}</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${org.springframework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework.version}</version></dependency></dependencies><modules><module>testInterface</module><module>projectImpl</module></modules> </project>

然后在testInterface的src/main/java下面新建類

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType;@Path("/a") public interface TestIn1 {@GET@Path("/doGet/{first}/{last}")@Produces(MediaType.APPLICATION_XML)public String doGet(@PathParam(value="first") String firstName,@PathParam(value="last") String lastName);@POST@Path("/itemComfirm")@Produces(MediaType.APPLICATION_XML)public String itemComfirm(String xmlParam,@Context HttpServletRequest req,@Context HttpServletResponse res); }

?然后在projectImpl的pom.xml修改,這里加入對testInterface子項目的依賴:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>testParent</groupId><artifactId>testParent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>projectImpl</artifactId><packaging>war</packaging><dependencies><dependency><groupId>testParent</groupId><artifactId>testInterface</artifactId><version>122</version><type>jar</type><scope>compile</scope></dependency></dependencies> </project>

然后在projectImpl的src/main/java下面新建類,并且實現(xiàn)testInterface子項目中的TestIn1接口:

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class TestIn1Impl implements TestIn1 {public String doGet(String firstName, String lastName) {return "hihihihi"+","+firstName+","+lastName;}public String itemComfirm(String xmlParam, HttpServletRequest req, HttpServletResponse res) {return "hahahaha"+","+xmlParam;}}

?

再然后在下圖路徑修改application.xml和web.xml,沒有文件的話就自己新建:

application.xml:

jaxrs:extensionMappings和jaxrs:languageMappings表示可根據(jù)URL后綴不同來進行不同的配置,例如/testURL.xml,那么該請求的請求頭就會設置為application/xml,為/testURL.en,則會用en-gb來解析請求內容。詳情可參考:http://cxf.apache.org/docs/jax-rs.html

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <bean id="TestIn1Impl" class="TestIn1Impl"/> <jaxrs:server id="TestIn1ImplServiceContainer"> <jaxrs:serviceBeans> <ref bean="TestIn1Impl" /> </jaxrs:serviceBeans> <jaxrs:extensionMappings> <entry key="xml" value="application/xml" /> </jaxrs:extensionMappings> <jaxrs:languageMappings> <entry key="en" value="en-gb"/> </jaxrs:languageMappings> </jaxrs:server> </beans>

?web.xml:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>fsp-api</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:application.xml</param-value> </context-param> <!-- spring context listener --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- CXF --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/testParent/*</url-pattern> </servlet-mapping> </web-app>

然后再寫一個測試類:

import javax.ws.rs.core.MediaType;import org.apache.cxf.jaxrs.client.WebClient; import org.junit.After; import org.junit.Before; import org.junit.Test;public class TestClient1 {private WebClient client;private String url="http://localhost:8080/testParent/testParent/a";@Beforepublic void setUp() throws Exception{System.out.println("setupbegan");client=WebClient.create(url).header("charset", "UTF-8").encoding("UTF-8").acceptEncoding("UTF-8");}@Afterpublic void tearDown() throws Exception{System.out.println("tearDownbegan");client=null;}@Testpublic void testItemConfirm(){System.out.println("began");String xmlaaParam="<a>ddd</a>";String responseMsg=client.path("itemComfirm").accept(MediaType.APPLICATION_XML).post(xmlaaParam,String.class);System.out.println("response :"+responseMsg);System.out.println("end");}@Testpublic void testDoGet() { System.out.println("began");String responseString = client.path("doGet/"+"dsdsd"+"/"+"uyuy"+"") .accept(MediaType.APPLICATION_XML) .get(String.class); System.out.println("response :"+responseString);System.out.println("end");}}

?

最后,在Eclipse的sever插件中加入ProjetImpl項目,然后啟動項目:

?

啟動成功之后,執(zhí)行測試類,控制臺輸出:

setupbegan
began
response :hihihihi,dsdsd,uyuy
end
tearDownbegan
setupbegan
began
response :hahahaha,<a>ddd</a>
end
tearDownbegan

?

如有錯誤,歡迎指出。

轉載請注明出處:http://www.cnblogs.com/Starshot/p/6889751.html

?

轉載于:https://www.cnblogs.com/Starshot/p/6889751.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的Maven+Spring+CXF+Tomcat7 简单例子实现webservice的全部內容,希望文章能夠幫你解決所遇到的問題。

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