小编Mar*_*cel的帖子

依赖注入EJB 3 - 选择太多了?

我们正在开始一个基于EJB 3.0的新项目.我有一个"春天"的背景(并喜欢它),所以对我来说,松耦合和可测试性是必须具备的.这篇文章不应该是关于"ejb vs. spring".如果您已经拥有真正的项目经验,那将是完美的.

这是一些示例代码来演示问题:

客户端 - > ejb - >协作者1 - >协作者.. - >协作者n

<!-- language: java -->
@Stateless
public class SampleService {

    // or @Inject via CDI
    // or @Autowired via Spring
    @EJB // or just use a stateless session bean via EJB 3.0
    private Bank bank;

    // same for this component
    @EJB
    private Calculator calc;

    // both collaborators must be settable from outside, to make everything testable (and mockable)

    /**
     * sample "business service" called …
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection ejb cdi

10
推荐指数
1
解决办法
5433
查看次数

Spring没有中止bean初始化的引导错误启用组件扫描时出错?

我有一个带弹簧配置文件的Web应用程序.我有以下条目:

<bean id="flyway" class="xxx.FlywayTool" init-method="migrateOrFail"/>
Run Code Online (Sandbox Code Playgroud)

"flyway"bean用于初始化和迁移数据库.现在我有另一个bean定义应用程序应该使用的数据源:

<bean id="dataSource" class="..." depends-on="flyway">
Run Code Online (Sandbox Code Playgroud)

这个取决于飞路取得成功.

一切都很好.现在,当"flyway"bean引发异常时,spring的引导停止并且webapp启动完成 - 一切都很好.

现在我开始通过以下方式为某些组件启用自动装配:

<context:component-scan base-package="de.xxxxx.xxxxx" />
Run Code Online (Sandbox Code Playgroud)

在某些类中,我依赖于服务,这些服务在xml配置中也被定义为bean.他们依赖于上面提到的数据源.

现在的问题是:一旦我现在引导应用程序并且"flyway"抛出一个异常,弹出就会在下一节中吞下异常:

org.springframework.beans.factory.support.AbstractBeanFactory.getTypeForFactoryBean(String,RootBeanDefinition)

catch (BeanCreationException ex) {
   // Can only happen when getting a FactoryBean.
   if (logger.isDebugEnabled()) {
       logger.debug("Ignoring bean creation exception on FactoryBean type check: " + ex);
   }
   onSuppressedException(ex);
   return null;
}
Run Code Online (Sandbox Code Playgroud)

现在是春天尝试,对于其他所有dependend服务(取决于数据源,因此flyway)初始化所有bean,这反过来导致相同的过程一次又一次.

这个特殊的循环一直持续到春天结束,试图在第一个飞路错误之后实现每个可能的依赖,而不是中止.

这种奇怪的行为只有在我启用组件扫描时才会启动

<context:component-scan ....
Run Code Online (Sandbox Code Playgroud)

当此功能被禁用时,弹簧在第一个飞路错误发生后停止.它也最终出现在另一个类中:

org.springframework.context.support.AbstractApplicationContext.refresh()

        catch (BeansException ex) {
            // Destroy already created singletons to avoid dangling resources.
            destroyBeans();

            // Reset 'active' flag.
            cancelRefresh(ex);

            // Propagate …
Run Code Online (Sandbox Code Playgroud)

spring dependencies autowired

9
推荐指数
1
解决办法
3511
查看次数

Gui测试需要太长时间 - 你的方法是什么?

我们有一个典型的Web应用程序堆栈.有120个针对应用程序执行的selenium(webdriver)测试.这需要约1小时.我们将它们作为构建链"compile> unit test> integration test> gui tests"的一部分执行.gui测试占用了大量时间,我们想知道如何更好地构建它们.目前他们是"快乐案例和不快乐"案件测试.它们非常稳定,即它们不会因程序员错误而失败.

我们希望缩短构建时间,最重要的是gui测试.我们想基于"客户旅程"这样做,即指定(与商界人士一起)一些典型的用例并测试它们(快乐路径)而不是测试太多.....

你们如何构建你的gui测试?这里有一些我想到的想法

  • 只执行快乐路径测试
  • 做一个"客户旅程测试",即在一个人做一些快乐路径测试("点击页面")
  • 只采取业务指定的"前10名"(任务关键)
  • 前10名+"所有其余"作为夜间建设(一次)

我很感激你的想法

谢谢马塞尔

testing user-interface selenium integration-testing gui-testing

7
推荐指数
1
解决办法
1527
查看次数

Java Library生成交互式Graph

我希望将我们的SOA服务可视化为图形.我们有商业服务和域名服务.

                        -> domain service 1
e.g. business service 1 -> domain service 2
                        -> domain service 3
Run Code Online (Sandbox Code Playgroud)

我目前使用graphviz/dot来生成图表 - 到目前为止一切都很好.图表非常大.现在我正在寻找一个工具,允许我创建"交互式"图形,我可以点击一个节点(一个业务服务),它将集中在视图中,所有依赖项(其他节点)围绕它对齐.

有没有可以做到这一点的图书馆?我已经看过"JUNG"并没有找到实现这个目标的例子.

期待您的回复

marcel ps:如果有非java工具我也会感兴趣

java visualization graph graphviz

7
推荐指数
1
解决办法
6210
查看次数

REST API设计 - 查询邮件数据 - 选择哪种毒药?

我们目前正在设计一个内部REST api.我们有以下用例:

  1. 用户(109)想要读取他已经发送给另一个用户的消息(110)
  2. 应用程序通过他在验证后收到的令牌凭证(在执行GET请求时)知道应用程序(109)
  3. 我们假设在这个例子中,用户109是发送者,110是接收者

从用户的角度总结"给我(109)发送给110的邮件"

我们想到了以下URI,但我们无法决定采用哪一个:

a) GET http://localhost:9099/api/mails/109?receiverUserId=110
b) GET http://localhost:9099/api/mails?senderUserId=109&receiverUserId=110
c) GET http://localhost:9099/api/mails?receiverUserId=110
d) GET http://localhost:9099/api/mails/me/to/110 (when logged in as 109 via token credentials we know that "me" is 109)
f) GET http://localhost:9099/api/mails/109/to/110 (explicit request, e.g. for admins … has to be guarded against illegal access)
Run Code Online (Sandbox Code Playgroud)

所有链接都是"上下文敏感的",即将一个链接发送到接收器(110)将产生执行GET请求的不同结果.

我想知道你对使用什么网址的看法.

任何帮助高度赞赏.

欢呼马塞尔

api rest url http

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

java中原生sun.misc.Unsafe操作的源代码

我已经下载了"openjdk-6-src-b23-05_jul_2011"来查看sun.misc.Unsafe中方法的原生实现.例如compareAndSwapInt(...)但我无法在下载的openjdk源中找到任何内容.我想知道这些方法是怎样的(我对jdk提供的原子内容感兴趣).

有人能把我指向正确的位置吗?

$ ls jdk/src/
linux  share  solaris  windows

$ ls hotspot/src/os/
linux  posix  solaris  windows
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏

烫发

java openjdk multithreading native atomic

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

示例结构 (fabfile) 以共享通用逻辑并允许多个项目/环境

我是 Python 和 Fabric 的新手。我们目前使用 capistrano 并有类似的设置:

/api-b2b
  - Capfile (with generic deployment/setup info)
  /int - target host config (like ip, access etc.)
  /prod - target host config (like ip, access etc.)
  /dev - target host config (like ip, access etc.)
/api-b2c
  /int
  /prod
  /dev
/application1
  /int
  /prod
  /dev
/application2
  /int
  /prod
  /dev
Run Code Online (Sandbox Code Playgroud)

我们对 capistrano 处理我们的 Java 应用程序不满意——fabric 看起来是一个更好(更简单)的替代方案。

到目前为止,我看到的所有示例 fabfile 都“相对简单”,因为它们仅处理不同主机的一个应用程序。我想看到一些代码,其中不同的应用程序/主机由相同的结构文件/基础设施(如继承等)处理,以便为 git 处理、目录创建、符号链接等常见任务共享相同的逻辑。我希望你明白我的意思。我希望整个逻辑相同,只是应用程序配置不同(git repo,目标目录)。所有其余的在应用程序中都是相同的(相同的服务器布局......)

我希望能够输入这样的东西

$ cd api-b2b
$ fab env_prod deploy
$ cd api-b2c
$ fab env_prod deploy …
Run Code Online (Sandbox Code Playgroud)

python deployment capistrano fabric

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