顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

Playframework - Run application in the background


  • play run : Run the application in the current shell
  • play start : Start the application in the background


【相關閱讀】
Play Manual

在 Ubuntu 12.04 LTS 下安裝 Playframework (@ Amazon EC2)

在 Ubuntu 下要安裝 Playframework 也不是很困難,大致上就是下載 playframework 的壓縮檔,解壓縮之後,放到自己喜歡的位置,接著再設定一下 bashrc ,把 path export 出來。 

如果還沒有安裝 java jdk 的人,可以先執行以下的指令安裝:

1. sudo add-apt-repository ppa:webupd8team/java 
2. sudo apt-get update
3. sudo apt-get install oracle-java7-installer 

設定 Eclipse 程式碼提示(Content assist auto activation)功能

一般的 IDE 大多都會有【程式碼提示】的功能,幫助開發者能夠快速的取得相關的屬性、方法,而不需要花腦袋去記憶。



Playframework Dependencies Management

在 Playframework 中,dependencies 是由 conf/dependencies.yml 檔案所管理。在這個檔案中,你可以設定相關的 dependencies 是來自不同的 repositories。像是在下圖中,我的 project 分別從 play 官方的 repository 吃了 play 和 fbgraph;另外其他的 dependencies 是吃我放在 local 的 jar file。在設定自己的 repositories 時,格式如下圖所示。

Heroku Project 中,取得mysql(clearDB)的位置與帳號密碼

在 Heroku 中,如果你用 MySQL 作為專案的資料庫,可以用 heroku config 指令來查看目前專案的一些設定檔:


會有這樣的需求,是因為我想要用常用的 MySQL 管理工具(MySQL Workbench, MySQL Query Browser...etc)來管理我在 Heroku 上的資料庫。當你執行上述的指後,就可以看到該朱案的資料庫連線字串,其中上圖紅色的部分就是 MySQL DB 的位置,以我的專案來說,是放在 us-cdbr-east.cleardb.com 這裡。

至於 username 和 password ,可以在資料庫 Dashboard 裡面的  Endpoint information 中得知。



將git push heroku master時,發生no such app問題

最近在將 project 丟到 heroku 時,會發生 no such app 的問題。原因是我將 heroku 上的 app 更名後,會發生 remote 的名稱和目前的 master 不相符合。這時候可以按照下列的步驟解決。

Deploy Playframework application on Heroku - using ClearDB(MySQL)

最近在把一個用 Playframework 開發的 application deploy 到 Heroku,並且後端資料庫想要使用 MySQL ,在部屬的過程中,遇到一些小問題,不過也順利解決了,把整個步驟記錄下來。

在JPA中,將createNativeQuery的結果轉換成其他物件

在JPA中,當你使用createNativeQuery去下SQL語法時,你可能會用getResultList來取得查詢出來的結果:

但是當你執行時,會出現無法轉換的錯誤:ClassCastException occured : [Ljava.lang.Object; cannot be cast to models.Post

Tomcat 出現 JDBC Driver has been forcibly unregistered 錯誤

在deploy application的時候,偶爾會遇到 "SEVERE: A web application registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered." 這樣子的錯誤訊息。

查了一些資料後,發現在Tomcat 6.0.24之後增加了防止memory leak的feature,有幾個作法可以避免:

  • 忽略他
  • 使用6.0.23之前的版本
  • 將 JDBC Driver 的 library 放到 tomcat 下的 lib 目錄
  • 繼承 BasicDataSource,自己 close connection



【相關閱讀】
To prevent a memory leak, the JDBC Driver has been forcibly unregistered
Memory Leak Protection
MySQL create memory leak in Tomcat

Spring Bean Scope 學習

在Spring中定義一個Bean時,可以針對其scope加以設定。在新版的Spring中,共有五種不同的scope可以設定,分別為:

Spring Bean Definition

在Spring中,Bean是一個物件,藉由Spring IoC Container來初始化(instantiated)、管理組裝(assembled)。

Bean會由定義的設定檔(configuration metadata)來建立。例如,藉由在XML檔案中,<bean>的設定來建立。

設定檔(configuration metadata)需要瞭解下列事項:

  • 如何建立Bean
  • Bean的生命週期
  • Bean的相依關係(dependencies)

在一個Bean的設定檔中,透過下列的properties來進行設定:

  • class:必定存在。定義用來建立此顆bean的class
  • name:用來建立Bean的識別(identifier)
  • scope:定義Bean的Scope,包含:singleton、protopype、request、session和global-session
  • constructor-arg:用來注入dependencies
  • properties:用來注入dependencies
  • autowiring mode:用來注入dependencies
  • lazy-initialization mode:用來告知IoC Container在第一次request這個bean的時候再建立instance,而不是在startup時
  • initialization method:一個callback。在所有必要的properties被呼叫後執行
  • destructor method:一個callback。在bean被destroyed時後被呼叫

一個典型的Bean設定檔大致如下所示:

在該設定檔中,有一個HelloWorld的Bean,分別在初始和結束時,會去呼叫init和destroy方法。同時把message這個參數注入Hello World!的值。

設計良好的Web API

最近由於工作的關係,需要設計API提供給User使用,我們採用的是HTTP + RESTful + JSON Response的方式,剛好和近期讀到的一篇文章所建議的方法相同,在這邊稍微記錄一下。

這篇文章是:Designing robust web API

根據作者過去的經驗,提供幾個在設計API的Best Practice或個人經驗。分別為:

  • Use a RESTful Model:使用HTTP + RESTful + JSON作為API的開發架構
  • Stabilize your API:Expose the API as minimal as possible. 保持API的穩健,不應該有大量變動。已經釋出的功能很難被刪減。
  • Version your API:在API的Request URL中加入版本資訊方便使用者做區別。
  • Asynchronous Invocation:如果你的response需要很長的時間,採用asyn的方法。實作上有兩種模式可以參考:(1) Client在request之後,server response是一個receipt,用來向server詢問response是否已經處理完畢。(2) Client提供callback address,當server處理完response之後,會丟回callback的位置讓client接收。

【相關閱讀】

使用Maven時出現 Unable to find the mojo 'generate-sources' (or one of its required components) in the plugin 'com.jayway.maven.plugins.android.generation2:android-maven-plugin' 問題

最近在使用Maven來build Spring Android的Sample Project時,在mvn clean install的階段時,會出現Unable to find the mojo 'generate-sources' (or one of its required components) in the plugin 'com.jayway.maven.plugins.android.generation2:android-maven-plugin'這樣的問題。

第一個問題是,Spring Android的Sample Project需要使用Maven3.0.3以上,請參考issue220

接著,當你在使用maven 3去install時,如果出現java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher的錯誤,請先檢查原本的作業系統中,是否有安裝maven2,如果有,要去環境變數中,把相關的path給拿掉,如果有設定M2_HOME,也要一併移除。

Android的Activity學習筆記

在開發Android的Mobile Application當中,Activity是相當重要的一個觀念。這一篇紀錄著我學習Activity相關的筆記,也歡迎大家留言討論。

J2EE Solutions 比較表

這個網站收錄了J2EE Open Source各種solutions的比較表,從Presentation、IDE、Web ... 等分門別類整理,還不錯,可以當作一個參考。



http://swik.net/CompareJ2EESolutions

Spring Social 介紹

Spring Social 是最近Spring Project中所提供的一個Framework,它讓使用者可以把你原有的Spring Application和Thrid-Party Service Provide(ex : facebook, twitter)做整合,讓你用這些SaaS來認證,操作其API...等等。

Ubuntu 10.04 安裝 Sun JDK 步驟


  1. sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
  2. sudo aptitude update
  3. sudo aptitude install sun-java6-jdk sun-java6-plugin

使用Java自動化執行工作 - Timer 和 ScheduledExecutorService

在Java中,如果想要在給定的時間區隔或固定時間執行某些任務,有幾種方法,在這裡稍微做個筆記。

Maven 之 POM(Project Object Model) 設定檔

在Maven中,最重要也是最基本的就是POM(Project Object Model)了。POM是一個XML的設定檔,它包含了Maven在建置專案時的所有資訊。

在執行Maven時,它會去檢查專案目錄下是某具有pom.xml檔案,如果沒有時,任何操作都會出現build error。

Maven 介紹

Maven是一套用來管理Java專案的工具,使用Maven,你可以讓專案在建置、測試、管理、部屬等工作上更為輕鬆。同時在管理dependency上,更是會讓你用起來愛不釋手。

我們先透過一個小範例讓大家對Maven的運作有一個初步的了解,在使用它之前,你必須要先安裝好適當的jdk。
首先,請先下載Maven,在這一篇的操作中,我們已Maven 2.2.1版本為主。
下載頁面:http://maven.apache.org/download.html