SpringSource(现在的VMWare)有两种非常相似的技术:Grails和Spring Roo.我一直在使用Grails,但我发现SpringSource正积极致力于该技术的竞争对手,这让我对Grails的未来感到担忧.
有谁知道这些技术是如何相关的,它们是否会被合并,或者其中一个会被抛弃?
此外,Grails和Roo之间是否存在重大技术差异?
我想编写Java应用程序,用PHP将文件上传到Apache服务器.Java代码使用Jakarta HttpClient库版本4.0 beta2:
import java.io.File;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.util.EntityUtils;
public class PostFile {
public static void main(String[] args) throws Exception {
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("http://localhost:9002/upload.php");
File file = new File("c:/TRASH/zaba_1.jpg");
FileEntity reqEntity = new FileEntity(file, "binary/octet-stream");
httppost.setEntity(reqEntity);
reqEntity.setContentType("binary/octet-stream");
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity)); …Run Code Online (Sandbox Code Playgroud) 我(我猜)是典型的问题.我的核心数据数据库包含表,其中包含BLOB字段和相当长的文本字段.
通常我不需要加载那些大尺寸的字段.由于数据库中有数千条记录,我宁愿只获取我真正需要的数据.换句话说,我想制作"SELECT name,id FROM TAB_NAME"查询,而不是"SELECT*FROM TAB_NAME"查询.
有没有办法只使用Core Data获取所选字段?或者我是否应该寻找其他选项,例如,将大字段分隔到另一个表格?也许有更好(更简单)的方法来做到这一点?
我习惯使用Hibernate或JPA,这里很容易做上面描述的操作,经过Core Data docs后我没有看到这样的选项.
我正在阅读使用Rails的Agile Web Development(第4版),我发现了以下代码
class ApplicationController < ActionController::Base
protect_from_forgery
private
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
end
Run Code Online (Sandbox Code Playgroud)
由于我是一名Java开发人员,因此我对这部分代码的理解或多或少如下:
private Cart currentCard(){
try{
return CartManager.get_cart_from_session(cartId)
}catch(RecordNotFoundEx e){
Cart c = CartManager.create_cart_and_add_to_session(new Cart())
return c;
}
}
Run Code Online (Sandbox Code Playgroud)
令我印象深刻的是,异常处理用于控制正常的应用程序流(当用户第一次访问Depot应用程序时,缺少Cart是完全正常的行为).
如果有人拿到任何Java书籍,他们会说这是一件非常糟糕的事情 - 并且有充分理由:错误处理不应该用作控制语句的替代品,这对于那些阅读代码的人来说是一种误导.
有没有什么理由可以在Ruby(Rails)中证明这种做法是正当的?这是Ruby中的常见做法吗?
我有一个简单的豆enum田
public class TestBean{
@Pattern(regexp = "A|B") //does not work
private TestEnum testField;
//getters + setters
}
enum TestEnum{
A, B, C, D
}
Run Code Online (Sandbox Code Playgroud)
我想testField使用Bean Validation进行验证.具体来说,我想确保只允许A和B值(对于特定的calidation gropus).似乎enum没有处理JSR 303(我试图使用@Pattern验证器)或者我正在以错误的方式做某事.
我得到例外:
javax.validation.UnexpectedTypeException: No validator could be found for type: packagename.TestEnum
Run Code Online (Sandbox Code Playgroud)
有没有办法验证枚举字段而无需编写自定义验证器?
我浏览了很多Web Socket示例,演示幻灯片,它们主要集中在客户端发起客户端 - 服务器通信的相当简单的场景中.
我对另一个场景感兴趣,这似乎同样实用:纯服务器推送到客户端.
示例我想到的是一个更新网站上股票价值的应用程序.想象一下,有一个外部系统股票交易系统,它为每个订阅的股票价值变化发送JMS消息.
我想知道如何将这样的传入JMS事件转换为服务器推送,并从Java EE 7的角度高效地和惯用地转换它.
据我所知,我应该编写一个Web套接字端点
@ServerEndpoint("/demo")
public class WSEndpoint {
private static final Logger LOG = Logger.getLogger(WSEndpoint.class);
@OnMessage
public void onMessage(String message, Session session) {
LOG.info("Received : " + message + ", session:" + session.getId());
}
@OnOpen
public void open(Session session) {
LOG.info("Open session:" + session.getId());
}
@OnClose
public void close(Session session, CloseReason c) {
log.info("Close session:" + session.getId());
}
}
Run Code Online (Sandbox Code Playgroud)
当我从前端收到消息时,一切都很简单,我可以在@OnMessage方法中做任何我喜欢的事情.但在我的例子中,我不会从客户端收到任何消息,我会从某个外部系统获得一个事件.
有几种方法.例如,我可以在@OnOpen方法中创建一个线程,如本博客所示.实际上,这种方法可能会显示出一个缺点,因为对于每个客户端,我都需要创建一个新的,可能很长的生命线程.
使用选择器的NIO通道可以做得更好,但这需要某种"手工制作"的通道管理.可行,但相当繁琐.
另一个解决方案是ping其他系统进行更新,但同样会有点难看.另外,我也不确定是否@OnOpen要以这种方式使用方法.
理想情况下,传入的JMS消息将触发Web Socket推送到客户端.任何想法如何很好地实现这样的事情?
我正在使用JOINED继承策略与EclipseLink JPA实现.我注意到EclipseLink正在将鉴别器列(默认为DTYPE)添加到数据库模式中.我明白,一个表继承策略需要一个鉴别器,但为什么JOINED策略呢?
EclipseLink需要此列,因为删除后我遇到了错误.是否出于性能原因添加了此列?我对此并不特别高兴,因为从数据库模式的角度来看,这一列只是不必要的混乱.
基于Hibernate的JPA没有做任何类似的事情.
有时我正在为相当庞大的Java应用程序做简单的修复,我不想为这个任务打开Eclipse.Eclipse开始很长时间,因为项目是由Maven构建的大量子项目构建的,所以在Eclipse可用之前需要很长时间(至少在Java开发人员不耐烦的时候).
我需要的几乎所有东西都可以在Sublime Text编辑器中完成,但Eclipse发光的地方是调试器.我的工作流程是:进行修复,然后使用调试器测试它在运行的应用程序(在服务器上),以检查一切是否正常.
那么是否有任何Sublime插件或其他非IDE解决方案可以轻松调试Java应用程序.
注意:我看过这篇文章 - 它很老了,也许有更好的东西.
我想通过以下方式"破坏"Groovy中的方法:
Integer.metaClass.plus {Integer n -> delegate + n + 1}
assert 2+2 == 5
Run Code Online (Sandbox Code Playgroud)
我得到StackOverflowException(这并不奇怪).
有没有办法在元类'闭包中使用"原始"加法?
我希望在VIM中具有以下功能(特别是GVIM).我认为Sublime Text有类似的东西:
例:
当有以下文件的选项卡时:
选项卡名称将是:
justAfile.txt | files\myfile.txt | backup\myfile.txt
Run Code Online (Sandbox Code Playgroud)
这是否适用于一些聪明的配置?
i spent almost two days to understand the concept concurrentConsumers vs threads in Apache Camel. but i really don't understand the concept. could anyone help me to understand the concept. I am using camel 2.12.0.
from("jms:queue:start?concurrentConsumers=5")
.threads(3, 3, "replyThread")
.bean(new SomeBean());
pom.xml
==========================================
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<camel.version>2.12.0</camel.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!-- required by both client and server -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test</artifactId> …Run Code Online (Sandbox Code Playgroud) java ×3
java-ee ×2
apache-camel ×1
core-data ×1
debugging ×1
eclipselink ×1
grails ×1
groovy ×1
ide ×1
ios ×1
iphone ×1
java-ee-6 ×1
java-ee-7 ×1
jpa ×1
php ×1
ruby ×1
spring-roo ×1
sublimetext ×1
vim ×1
websocket ×1