我们目前有一个位于MS SQL Server 2005之上的2层Java Swing应用程序.所有业务逻辑都在数据库中.客户端很老(而且不是很友好),出于性能和可伸缩性的原因,我们已经开始将一些服务移植到Java中间层.
但是,我们仍有许多短期和长期目标:
这并不容易 - 我可以看到从连续体一端的Web应用程序到另一端的传统桌面应用程序的所有内容都是可行的选择.当前的前端并不是很复杂(主要是基于表单的),所以我可以看到web/AJAX适合,但这是一个我们不知道我们不知道的领域.
我列表上的堆栈是:
我们有一些客户将我们的应用程序转售给较小的客户,并且需要能够远程部署它.由于当前体系结构的2层特性,这会导致可怕的性能(例如,调用返回18个结果集的存储过程).我们过去曾使用Citrix解决方案,但没有人喜欢这种方法.通过端口80隧道化JDBC也听起来不错.我开始怀疑是否有任何可以使用类似X-Windows的方法远程只是GUI部分.
我的团队正在使用BlazeDS在基于Spring的服务器上放置一个概念验证Flex应用程序.
我们做了很多日期计算,因此我们在整个代码和域模型中广泛使用Joda Time.
我们现在正试图弄清楚我们如何继续在我们的DTO中使用Joda Time,这些DTO通过BlazeDS与Flex前端来回发送.
我们的目标是Date
在Flex端使用Actionscript 3数据类型,并将该映射用于我们对Joda时间的使用DateTime
,LocalDate
以及LocalTime
Java端的类型.
我们可以解决在Date
使用插入BlazeDS的自定义类型marshaller调用Java时转换Actionscript 3 类型的问题,但这似乎只针对Flex-> Java/BlazeDS方向调用,而不是针对Java/BlazeDS-> Flex方向调用.
我现在正在PropertyProxy
研究BlazeDS的自定义实现,但这看起来也不正确.
另一个想法是Externalizable
在我们的Java DTO 上实现,但这看起来似乎太多了,特别是当我看到BlazeDS的竞争对手GraniteDS并且显示在他们的文档中使用简单的类型转换器插入Joda Time支持!
任何想法都赞赏.
当我将 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。
我正在尝试确定是否有一种方法可以使用Kafka的交易功能在交易中写入两个主题。
我知道使用Kafka交易的典型方案是在消费者-生产者模式下进行的,这似乎有据可查。
我尝试过的
KafkaTransactionManager
每个主题ProducerFactory
使用各自的事务管理器ChainedTransactionManger
用的两个实例创建了一个KafkaTransactionManager
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 ×4
apache-flex ×1
apache-kafka ×1
blazeds ×1
gradle ×1
jodatime ×1
ria ×1
spring-boot ×1
spring-kafka ×1
swing ×1