Lambdas in Java Preview - Part 1: The Basics
Lambdas in Java Preview - Part 2: Functional Java
Lambdas in Java Preview - Part 3: Collections API
Lambdas in Java Preview - Part 4: Proposal Update

Forth 發表在 痞客邦 留言(1) 人氣()

經歷ASP、PHP、JSP、Tapestry、Wicket、Rails,目前正在使用的是Play framework。開發時只需用內建的server,修改java程式或HTML網頁之後,只要refresh就能看到結果,Play會幫我們編譯java檔。部署時可以用內建的server,也能打包成war檔放進application server,若要部署至Google App Engine也有GAE module可用。Play也把Hibernate包裝好了,使用時不再需要繁瑣的設定。其它如MongoDB、Scala、Spring、GWT等也已經有支援模組。就像Rails,Play也有內建routes功能可以讓你輕鬆開發RESTFul application,或是讓URL看起來漂亮些。



Forth 發表在 痞客邦 留言(0) 人氣()


maxConnectionsPerPartition最小值是2,給了小於2的值會被設成50
minConnectionsPerPartition最小值是2,給了小於2的值會被設成10
minConnectionsPerPartition大於maxConnectionsPerPartition時,會被設成maxConnectionsPerPartition
acquireIncrement小於或等於0時,會被設成1
partitionCount小於1時,會被設成3
releaseHelperThreads小於0時,會被設成3
statementsCacheSize小於0時,會被設成0
acquireRetryDelay小於或等於0 時,會被設成1000

Forth 發表在 痞客邦 留言(0) 人氣()

有時候要把Maven調教成想要的樣子真的很麻煩,自己刻Ant build file比較快,但是這樣就要自己管理dependencies,引用很多library的時候會很痛苦,還好有Ant Tasks for Maven可以幫忙減輕痛苦。下載maven-ant-tasks-*.jar後扔進$APACHE_HOME/lib目錄就可以用了。
使用時可以像用Maven時一樣,把dependencies資訊存入pom.xml,再從build.xml引用。
pom.xml:

Forth 發表在 痞客邦 留言(0) 人氣()

@Entity
@Table(name="memberships")
@IdClass(MembershipPK.class)
public class Membership {
private Integer groupId;
private Integer userId;
@Id
@Column(name="group_id")
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
@Id
@Column(name="user_id")
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
}

Forth 發表在 痞客邦 留言(0) 人氣()

在Wicket程式用Spring,要在web.xml加入設定:
<context -param>
<param -name>contextConfigLocation</param>
<param -value>/WEB-INF/spring*.xml</param>
</context>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Forth 發表在 痞客邦 留言(0) 人氣()

應用程式內嵌Jetty運行webapp時,希望程式和webapp共用同一個spring context,在web.xml設定context loader listener時,要改用自定的MyContextLoaderListener。
JettyServer.java:
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class JettyServer implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public void start() throws Exception {
int port = Integer.parseInt(System.getProperty("jetty.port", "8080"));
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(port);
Server server = new Server();
server.addConnector(connector);
WebAppContext context = new WebAppContext();
context.setClassLoader(applicationContext.getClassLoader());
context.setAttribute("applicationContext", applicationContext);
context.setServer(server);
context.setContextPath("/");
context.setWar("src/main/webapp");
server.addHandler(context);
server.start();
}
}

Forth 發表在 痞客邦 留言(0) 人氣()

Maven repository沒有Terracotta和Terracotta Maven Plugin,所以要在pom.xml加入:
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>terracotta-repository</id>
<url>
http://www.terracotta.org/download/reflector/maven2
</url>
</repository>
</repositories>
<pluginrepositories>
<pluginrepository>
<id>terracotta-snapshots</id>
<url>
http://www.terracotta.org/download/reflector/maven2
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginrepository>
</pluginrepositories>
<build>
<plugins>
<plugin>
<groupid>org.terracotta.maven.plugins</groupid>
<artifactid>tc-maven-plugin</artifactid>
<version>1.0.3</version>
<configuration>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupid>org.terracotta</groupid>
<artifactid>terracotta</artifactid>
<version>2.5.1</version>
</dependency>
</dependencies>

Forth 發表在 痞客邦 留言(0) 人氣()

RubyHelp.java:
public class RubyHelper {
static {
System.setProperty("jruby.home", new File("").getAbsolutePath());
}
private RubyHelper() {
}
public static Object create(String className, Class interfaceClazz, String scriptFileName) {
InputStream scriptInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFileName);
if (null == scriptInputStream) {
throw new RuntimeException("Could not find " + scriptFileName);
}
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
try {
for (int n; (n = scriptInputStream.read(buf)) != -1;) {
sb.append(new String(buf, 0, n, "UTF-8"));
}
scriptInputStream.close();
} catch (IOException e) {
throw new RuntimeException("Error loading " + scriptFileName + ": " + e.getMessage());
}
Ruby runtime = JavaEmbedUtils.initialize(new ArrayList());
runtime.eval(runtime.parse(sb.toString(), scriptFileName, runtime.getCurrentContext().getCurrentScope(), 0, false));
return JavaEmbedUtils.rubyToJava(runtime, runtime.evalScriptlet(className + ".new"), interfaceClazz);
}
}

Forth 發表在 痞客邦 留言(0) 人氣()


Apache MINA
dom4j
ehcache
FreeMarker
Hibernate
Hibernate Annotations
ini4j
JavaMail
Java Service Wrapper
Jakarta Commons Logging
JCIFS
Jetty
JGoodies Binding
JGoodies Forms
JGoodies Looks
JGoodies Validation
Jpcap
jTDS
log4j
Proxool
Quartz
Spring Framework
Wicket
XStream
YourKit Java Profiler

Forth 發表在 痞客邦 留言(0) 人氣()

下列是DatabaseOperation提供的功能,如果有用IDENTITY欄位,要改用InsertIdentityOperation提供的INSERT、CLEAN_INSERT、REFRESH。

UPDATE
用dataset更新資料,如果資料庫中沒有資料,會被視為錯誤。


INSERT
用dataset建立資料,如果資料庫中已有資料,會被視為錯誤。


DELETE
用資料庫系統的DELETE命令刪除table中的資料,只有在dataset內的資料會被刪除。


DELETE_ALL
用資料庫系統的DELETE命令刪除table中的所有資料,只有dataset列出的table會被影響。


TRUNCATE
用資料庫系統的TRUNCATE命令清除table中的所有資料,只有dataset列出的table會被影響。


REFRESH
用dataset更新和建立資料。已存在的資料會被標新,不存在的資料會被建立。


CLEAN_INSERT
先執行DELETE_ALL,再執行INSERT。

Forth 發表在 痞客邦 留言(0) 人氣()

Wicket開發指南,作者是王磊,這本三百多頁的開發指南,應該是目前對Wicket解說最詳細的中文手冊。我用過的Java web framework只有兩個,Tapestry是第一個,第二個就是Wicket。Tapestry已經被我停用了,位子則由Wicket和Ruby on Rails一同接下。第一次知道Wicket這東西,是在Tapestry作者的blog中瞧見的。在IDE如Eclipse的 協助下,熟悉Java的程序員使用Wicket的開發速度可以非常快,雖然在persistence layer要用JDBC或Hibernate,不如Ruby on Rails的ActiveRecord省事,但在presentation layer的用法則是我所喜愛的,這也是早期採用Tapestry的原因,Rails中調用簡便的AJAX,在Wicket也有良好支援。至於 Struts和Spring MVC,雖然沒事偶爾會看看,但是,看看就好,完全不想用(真是任性啊!)。目前要我開發web app的話,不是Wicket,就是Ruby on Rails了。

Forth 發表在 痞客邦 留言(0) 人氣()

1 2 3
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。