小编Ste*_*veD的帖子

将2层Java应用程序迁移到......?

我们目前有一个位于MS SQL Server 2005之上的2层Java Swing应用程序.所有业务逻辑都在数据库中.客户端很老(而且不是很友好),出于性能和可伸缩性的原因,我们已经开始将一些服务移植到Java中间层.

但是,我们仍有许多短期和长期目标:

为新的前端选择技术堆栈

这并不容易 - 我可以看到从连续体一端的Web应用程序到另一端的传统桌面应用程序的所有内容都是可行的选择.当前的前端并不是很复杂(主要是基于表单的),所以我可以看到web/AJAX适合,但这是一个我们不知道我们不知道的领域.

我列表上的堆栈是:

  • Eclipse RCP,Netbeans RCP
  • Flex/Flash,Silverlight,JavaFX
  • 纯Javascript前端(Sprout Core,Javascript MVC,...)
  • 基于Java的Web框架(Wicket,JSF,...)

找到一种方法,使当前应用程序在远程情况下可以接受

我们有一些客户将我们的应用程序转售给较小的客户,并且需要能够远程部署它.由于当前体系结构的2层特性,这会导致可怕的性能(例如,调用返回18个结果集的存储过程).我们过去曾使用Citrix解决方案,但没有人喜欢这种方法.通过端口80隧道化JDBC也听起来不错.我开始怀疑是否有任何可以使用类似X-Windows的方法远程只是GUI部分.

java swing ria rich-internet-application

6
推荐指数
1
解决办法
948
查看次数

通过BlazeDS从Java到Flex的自定义编组

我的团队正在使用BlazeDS在基于Spring的服务器上放置一个概念验证Flex应用程序.

我们做了很多日期计算,因此我们在整个代码和域模型中广泛使用Joda Time.

我们现在正试图弄清楚我们如何继续在我们的DTO中使用Joda Time,这些DTO通过BlazeDS与Flex前端来回发送.

我们的目标是Date在Flex端使用Actionscript 3数据类型,并将该映射用于我们对Joda时间的使用DateTime,LocalDate以及LocalTimeJava端的类型.

我们可以解决在Date使用插入BlazeDS的自定义类型marshaller调用Java时转换Actionscript 3 类型的问题,但这似乎只针对Flex-> Java/BlazeDS方向调用,而不是针对Java/BlazeDS-> Flex方向调用.

我现在正在PropertyProxy研究BlazeDS的自定义实现,但这看起来也不正确.

另一个想法是Externalizable在我们的Java DTO 上实现,但这看起来似乎太多了,特别是当我看到BlazeDS的竞争对手GraniteDS并且显示在他们的文档中使用简单的类型转换器插入Joda Time支持!

任何想法都赞赏.

java apache-flex blazeds actionscript-3 jodatime

6
推荐指数
1
解决办法
6106
查看次数

为什么解析依赖项“类路径”这么慢?

当我将 apache commons 编解码器和 apache commons io 依赖项添加到我的项目时,为什么我的所有 gradle 任务变得非常慢(超过 5 分钟)?需要明确的是,执行构建任务仍然有效,只是需要很长时间。当它很慢时,gradle 输出是

resolving dependencies: 'classpath'
Run Code Online (Sandbox Code Playgroud)

以下是我的 build.gradle 的违规部分:

buildscript {
  repositories {
    maven { url "http://repo.spring.io/libs-snapshot"  }
    mavenCentral()
    mavenLocal()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:0.5.0.M6")
    classpath("org.mongodb:mongo-java-driver:2.11.3")
    classpath("org.seleniumhq.selenium:selenium-java:2.37.1")
    classpath("com.google.guava:guava:16.0.1")
    classpath('commons-codec:commons-codec:1.9')
    classpath("commons-io:commons-io:2.4")
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我不包括最后两个类路径依赖项(编解码器和 io),则构建脚本要快得多。我正在通过 gradlew 使用 gradle 1.10。

java gradle

5
推荐指数
1
解决办法
9150
查看次数

使用Spring Kafka在单个事务中写入两个Kafka主题

我正在尝试确定是否有一种方法可以使用Kafka的交易功能在交易中写入两个主题。

我知道使用Kafka交易的典型方案是在消费者-生产者模式下进行的,这似乎有据可查。

我尝试过的

  1. 创建了KafkaTransactionManager每个主题
  2. 配置每个ProducerFactory使用各自的事务管理器
  3. ChainedTransactionManger用的两个实例创建了一个KafkaTransactionManager
  4. KafkaTemplate按主题创建

    然后,我@Transactional(transactionManager = "chainedTx")在执行此操作的方法上使用了注释:

    template1.send("topic1", "example payload");
    template2.send("topic2", "example payload");
    
    Run Code Online (Sandbox Code Playgroud)

这行不通。该KafkaTemplate是事务性的,但是当send()方法被调用时,有没有进行中的交易,我得到一个IllegalStateException

我打算尝试该KafkaTemplate.executeInTransaction()方法,但是Javadoc指出这仅适用于本地事务,因此它似乎不符合我的需求。

我的下一步是尝试直接使用Kafka的Producer API来查看此模式是否有效,但是如果有人可以告诉我我浪费时间并且Kafka不支持以事务方式编写多个主题,我将不胜感激。

我确实在Confluent关于Kafka交易支持的博客中找到了以下声明:

事务启用对多个Kafka主题和分区的原子写入...

但是我还没有找到任何可以证明这一点的例子。

第一个生产者的配置

@Configuration公共类ControlProducerConfig {

@Bean("controlTransactionManager")
KafkaTransactionManager<String, String> transactionManager() {
    return  new KafkaTransactionManager<>(factory());
}

@Bean("controlTemplate")
public KafkaTemplate<String, String> template() {
    return new KafkaTemplate<>(factory());
}

private ProducerFactory<String, String> factory() {
    DefaultKafkaProducerFactory<String, String> factory = new DefaultKafkaProducerFactory<>(config());
    factory.setTransactionIdPrefix("abcd");
    return factory;
}

private Map<String, Object> …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka spring-boot spring-kafka

5
推荐指数
1
解决办法
606
查看次数