我们正在开始一个基于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) 我有一个带弹簧配置文件的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) 我们有一个典型的Web应用程序堆栈.有120个针对应用程序执行的selenium(webdriver)测试.这需要约1小时.我们将它们作为构建链"compile> unit test> integration test> gui tests"的一部分执行.gui测试占用了大量时间,我们想知道如何更好地构建它们.目前他们是"快乐案例和不快乐"案件测试.它们非常稳定,即它们不会因程序员错误而失败.
我们希望缩短构建时间,最重要的是gui测试.我们想基于"客户旅程"这样做,即指定(与商界人士一起)一些典型的用例并测试它们(快乐路径)而不是测试太多.....
你们如何构建你的gui测试?这里有一些我想到的想法
我很感激你的想法
谢谢马塞尔
testing user-interface selenium integration-testing gui-testing
我希望将我们的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工具我也会感兴趣
我们目前正在设计一个内部REST api.我们有以下用例:
从用户的角度总结"给我(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请求的不同结果.
我想知道你对使用什么网址的看法.
任何帮助高度赞赏.
欢呼马塞尔
我已经下载了"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)
任何帮助赞赏
烫发
我是 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)