我的maven 2项目(在windows下)简单包含
ejb
package demo;
import javax.ejb.Stateless;
@Stateless
public class MyEjb
{
public String sayHello()
{
return "Hello World from MyEjb";
}
}
测试类
package demo;
import java.util.Properties;
import javax.naming.InitialContext;
public class TestMyEjb
{
public static void main(String[] args) throws Exception
{
Properties p = new Properties();
p.put("java.naming.factory.initial","org.apache.openejb.client.LocalInitialContextFactory");
p.put("openejb.jndiname.format", "{ejbName}");
p.put("openejb.descriptors.output", "true");
p.put("openejb.validation.output.level", "verbose");
InitialContext ctx = new InitialContext(p);
MyEjb myBean = (MyEjb) ctx.lookup("MyEjb");
System.out.println(myBean.sayHello());
}
}
和我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>be.lab</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<name>demo</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>4.7.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在eclispe下运行我的测试类工作正常。
...
INFO - Using 'openejb.jndiname.format={ejbName}'
INFO - Jndi(name=MyEjb) --> Ejb(deployment-id=MyEjb)
...
Hello World from MyEjb
但是从命令行运行它是行不通的。
java -cp target\demo-1.0-jar-with-dependencies.jar demo.TestMyEjb
...
INFOS - Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
...
INFOS - Jndi(name=MyEjbLocalBean) --> Ejb(deployment-id=MyEjb)
...
Exception in thread "main" javax.naming.NameNotFoundException: Name "MyEjb" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:137)
at javax.naming.InitialContext.lookup(Unknown Source)
at demo.TestMyEjb.main(TestMyEjb.java:20)
似乎没有使用openejb.jndiname.format
。为什么?
答案 0 :(得分:0)
尝试推杆 java.naming.provider.url的本地主机= 在你的jndi财产