2014年4月13日 星期日

使用Eclipse架設REST風格的Web service(一)

P.S. 64bit/32bit 選擇需一致

Eclipse選擇有Dynamic Web Project的版本(Ex:Java EE Juno)

JDK選擇7版本以上

Tomcat選擇非安裝類型的7.x版本

為了讓Tomcat正常運作必須先至電腦裡的環境變數設定

新增系統變數:變數名稱及變數值(若變數已存在便在變數值以分號隔開路徑)

1.CATALINA_HOME=>c:\apache-tomcat-7.0.53
2.JAVA_HOME=>C:\Program Files\Java\jdk1.7.0_51
3.TOMCAT_HOME=>c:\apache-tomcat-7.0.53
4.PATH=>%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
5.Classpath=>%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\bin

設定完成後便可至命令提示字元切換路徑至c:\apache-tomcat-7.0.53\bin

接著輸入service.bat install啟動服務

成功後測試本機ip與外部ip

若外部ip無法正常顯示則檢查IP分享器設定與防火牆設定

以上皆完成後換Eclipse的設定

Jersey 1.x 搭配 JAX-RS 1.x
Jersey 2.x 搭配 JAX-RS 2.x
2擇1

這邊是選擇Jersey 1.x 搭配 JAX-RS 1.x

先至Windows→Preferences→Server→Runtime Environments

Add一個Tomcat v7.0

再至Windows→Preferences→Java→Build Path→User Libaries

New一個給JAXRS用的Lib:jersey-bundle1.18.jar(Jersey 1.x)

接著創建一個Dynamic Web Project

Target runtime配置Tomcat v7.0

Configuration配置custom

再至修改按鈕內把JAX-RS項目打勾

專案建立完成後把asm-3.1.jar、jersey-bundle-1.18.jar、jsr311-api-1.1.1.jar

丟入專案裡的WebContent裡面的WEB-INF之下的lib資料夾

最後在web.xml的<load-on-startup>1</load-on-startup>這行之上添加

<init-param>
    <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
    <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
    </init-param>
    <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jaxrs</param-value>
</init-param>

這裡配合src之下的packge name:jaxrs

最後測試程式碼

在packge之下new class

程式碼如下

package jaxrs;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/helloworld")
public class HelloWorldResource {
@GET
    public String sayHello() {
        return "Hello";
    }
}

開啟Eclipse的Server後至瀏覽器輸入

http://你的ip:8080/專案名稱/jaxrs/helloworld

便會回傳"Hello"

2014年4月12日 星期六

使用D-LINK之IP分享器架設伺服器

若要使伺服器能夠讓外部電腦取得伺服器的資料

需要解決兩個問題

1.WINDOWS防火牆問題

2.D-LINK之外部IP轉換

第一個問題可以至控制台→Windows防火牆→進階設定→輸入規則

對Apache http server(這裡可針對特定程式)之內容→進階→設定檔

勾選【網域】、【私人】、【公用】並套用即可解決

第二個問題可以利用內部IP:192.168.0.1進入D-LINK設定

設定D-LINK接收到HTTP的類別全部轉傳至本機電腦即可解決