- JBoss Fuse 教程
- JBoss Fuse – 主頁
- JBoss Fuse - ESB 簡介
- Fuse 是什麼?
- JBoss Fuse – Apache Karaf
- JBoss Fuse – Apache Camel
- JBoss Fuse – Camel 概念
- JBoss Fuse – Apache CXF
- JBoss Fuse – REST Web 服務
- JBoss Fuse – Apache AMQ
- JBoss Fuse – AMQ 及 Camel
- JBoss Fuse – Fabric
- JBoss Fuse – 子容器
- JBoss Fuse – 問題和解決方案
- JBoss Fuse 有用資源
- JBoss Fuse - 快速指南
- JBoss Fuse - 有用資源
- JBoss Fuse - 討論
JBoss Fuse - REST Web 服務
首先,REST 代表表述性狀態轉移。它是一種基於無狀態、可快取、客戶端-伺服器協議(大多數情況下是 HTTP)開發 Web 服務的方法。
REST Web 服務使用 HTTP 請求從網路張貼、獲取和刪除資料。
使用 CXF 的 REST 開發
建立一個簡單的 Maven 快速啟動專案
mvn archetype:generate -DgroupId = com.tuts.abhinav -DartifactId = rest-service -DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false
新增依賴項
<dependency> <groupId>org.apache.servicemix.specs</groupId> <artifactId>org.apache.servicemix.specs.jsr311-api-1.1.1</artifactId> <version>1.9.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.servicemix</groupId> <artifactId>servicemix-http</artifactId> <version>2013.01</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency>
新增生成說明
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifalctId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>rest-example-database-post-method
</Bundle-SymbolicName>
<Import-Package>* </Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
新增 Fuse 外掛庫
<pluginRepositories>
<pluginRepository>
<id>fusesource.m2</id>
<name>FuseSource Community Release Repository</name>
<url>http://repo.fusesource.com/nexus/content/repositories/releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
<pluginRepositories>
新增庫
<repositories>
<repository>
<id>fusesource.m2</id>
<name>FuseSource Community Release Repository</name>
<url>http://repo.fusesource.com/nexus/content/repositories/releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>fusesource.ea</id>
<name>FuseSource Community Early Access Release Repository</name>
<url>http://repo.fusesource.com/nexus/content/groups/ea</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
建立服務類
在 com/tuts/ 下建立類 UserService.java
package com.tuts;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/UserService_1")
public class UserService {
@GET
@Path("/get_data")
@Produces(MediaType.APPLICATION_JSON)
public String getUser() {
String reponse = "This is standard response from REST";
return reponse;
}
}
建立 Blueprint.xml
/src/main/resources/OSGI-INF/blueprint blueprint.xml 下建立 blueprint.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<blueprint xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs = "http://cxf.apache.org/blueprint/jaxrs"
xsi:schemaLocation = "http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://cxf.apache.org/blueprint/jaxrs
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd">
<jaxrs:server id = "service" address = "/users">
<jaxrs:serviceBeans>
<ref component-id = "userService" />
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id = "userService" class = "com.tuts.UserService" />
</blueprint>
在 Fuse 中安裝 Rest 服務
install -s mvn:com.tuts.abhinav/rest-service/1.0-SNAPSHOT
檢查 Bundle 是否有已註冊的 Web 服務
開啟 URL https://:8181/cxf
測試 Web 服務
開啟 URL https://:8181/cxf/users12/UserService_1/get_data
廣告