我看过这个链接: Embedded Configuration我试图设置" openejb.deployments.classpath = true"
这是我的代码:
public class Run {
private static EJBContainer ejbContainer;
public static void main( String[] args ) throws NamingException, InterruptedException, IOException {
Properties props = new Properties();
props.setProperty(EJBContainer.PROVIDER, "tomee-embedded");
props.setProperty("openejb.deployments.classpath", "true");
ejbContainer = EJBContainer.createEJBContainer(props);
}
}
的pom.xml:
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>tomee-embedded</artifactId>
<version>1.6.0.2</version>
</dependency>
但我仍然得到如下输出:
INFO - openejb configuration file is 'C:\cygwin\tmp\apache-tomee1917201117325246334-home\conf\openejb.xml'
INFO - Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Using 'openejb.system.apps=false'
INFO - Using 'openejb.deployments.classpath=false'
INFO - Creating TransactionManager(id=Default Transaction Manager)
我错过了什么吗?
答案 0 :(得分:0)
tomee embedded稍后设置此属性(在tomee启动之后,这会在tomee启动时记录)。所以你的财产设置正确。
答案 1 :(得分:0)
只需在启动容器之前设置属性即可。
...
System.setProperty("openejb.deployments.classpath", "true");
Properties props = new Properties();
...
答案 2 :(得分:0)
你这样做是绝对正确的。
new Properties();
props.setProperty(EJBContainer.PROVIDER, "tomee-embedded");
props.setProperty("openejb.deployments.classpath", "true");
ejbContainer = EJBContainer.createEJBContainer(props);
但您忽略了您还设置了配置文件。你可以在日志中看到它。
INFO - openejb configuration file is 'C:\cygwin\tmp\apache...
因此,请确保您的配置文件没有覆盖您的编程设置。
答案 3 :(得分:0)
旁注:TomEE Embedded EJBContainer没有良好的类路径部署(它部署模块/ jar /配置的war(s))
也许看一下tomee embedded的Container类,它支持类似于1.6版本的最新版本中的类路径部署。