ejb3 写一个简单的demo
时间: 2023-07-29 08:05:41 浏览: 114
一个简单的demo
好的,下面是一个简单的 EJB3 的示例:
首先,我们需要创建一个 EJB 接口:
```
@Remote
public interface GreetingService {
public String sayHello(String name);
}
```
然后,我们需要创建一个 EJB 实现类:
```
@Stateless
public class GreetingServiceImpl implements GreetingService {
@Override
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
```
在这个示例中,我们使用了 `@Remote` 注解将 `GreetingService` 标记为远程 EJB 接口,表示这个接口可以通过网络被远程调用。同时,我们使用了 `@Stateless` 注解将 `GreetingServiceImpl` 标记为无状态会话 EJB,表示这个 EJB 实现类没有状态,每次调用都是独立的。
最后,我们需要在 EJB 容器中部署这个 EJB,这里我们使用了 JavaEE 容器来完成这个任务。在项目的 `pom.xml` 文件中添加如下依赖:
```
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
```
然后,我们在容器中添加以下配置:
```
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>GreetingService</ejb-name>
<ejb-class>com.example.GreetingServiceImpl</ejb-class>
<session-type>Stateless</session-type>
</session>
</enterprise-beans>
</ejb-jar>
```
现在,我们可以通过 JNDI 查找这个 EJB,然后调用它的方法:
```
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, "remote://localhost:4447");
props.put(Context.SECURITY_PRINCIPAL, "username");
props.put(Context.SECURITY_CREDENTIALS, "password");
InitialContext context = new InitialContext(props);
GreetingService service = (GreetingService) context.lookup("ejb:/myapp/GreetingService!com.example.GreetingService");
String message = service.sayHello("World");
System.out.println(message);
```
这个示例中,我们使用了 JBoss AS 7 作为容器,通过 JNDI 查找 `GreetingService` EJB,然后调用它的 `sayHello` 方法。
阅读全文