如何创建使用EJB Component的客户端应用程序?

时间:2015-11-19 21:14:07

标签: java java-ee glassfish ejb classpath

我创建了一个带有1个接口的EJB组件(Converter.java)......

package converter;

public interface Converter {
    public double euroToOtherCurrency(double amount, String currencyCode);
}

...和实现Converter的1个类(ConverterBean.java):

package converter;

@Stateless
@Remote(Converter.class)
public class ConverterBean implements Converter {

    public double euroToOtherCurrency(double amount, String currencyCode) {
        // implementation
    }
}

然后,我在Glassfish服务器中部署了这个应用程序。

现在,我想做一个使用我的EJB组件的独立客户端应用程序,但它将部署在一个独立的JVM中。

我在客户端应用程序中复制了接口Convert,这是主要类:

import javax.naming.InitialContext;
import java.util.Scanner;

public class Client {

    public static void main (String[] args){

        Converter converter = (Converter) InitialContext.doLookup("java:global/Converter/Converter-ejb/ConverterBean");

        Scanner sc = new Scanner(System.in);
        System.out.println("Amount :");
        Double amount = sc.nextDouble();
        System.out.println("Currency :");
        sc.nextLine();
        String currency = sc.nextLine(); 

        System.out.println(converter.euroToOtherCurrency(amount, currency));        
    }   
}

我有以下错误:

  

Client.java:8:错误:找不到符号                   Converter converter =(Converter)InitialContext.doLookup(“java:   global / Converter / Converter-ejb / ConverterBean“);符号:class   转换器位置:类客户端

但是,我想改变ClassPath环境:

set CLASSPATH=C:\Program Files\glassfish-4.1.1\glassfish\lib\appserv-rt;jndi.properties;.

这是jndi.properties文件:

java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
org.omg.CORBA.ORBInitialHost=localhost
org.omg.CORBA.ORBInitialPort=3700
你能告诉我什么是错的吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

Glassfish服务器提供了用于开发客户端应用程序的库。使用这些,您应该能够访问在应用程序服务器中运行的组件,就像您的代码也在应用程序服务器中运行一样(我相信注释也会起作用)。

查看official development documentation for Glassfish 4 - 第10节:开发Java客户端