当前位置:编程学习 > JAVA >>

开发EJB3.0程序中,客户端是控制台程序,使用的是Jboos5但是出现java.lang.ClassCastException异常

在开发EJB时,客户端是控制台程序,但是在运行时出现这样的异常(ava.lang.ClassCastException: javax.naming.Reference cannot be cast to com.mstanford.sessionbean.ConverterRemote
at com.mstanford.test.TestEjb.main(TestEjb.java:23))
但是在EJB 测试代码很简单:(
package com.mstanford.sessionbean;

import java.math.BigDecimal;

import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote(ConverterRemote.class)
public class Converter implements ConverterRemote {
BigDecimal yenRate=new BigDecimal("87.19");
BigDecimal euroRate=new BigDecimal("0.0075");
public BigDecimal dollarToYen(BigDecimal dollars) {
BigDecimal result=dollars.multiply(yenRate);
return result.setScale(2,BigDecimal.ROUND_UP);
}
public BigDecimal yenToEuro(BigDecimal yen) {
BigDecimal reslut=euroRate.multiply(euroRate);
return reslut.setScale(2,BigDecimal.ROUND_UP);
}
})
(这个只是实习接口方法的一部分)

下面是一个简单的测试方法
package com.mstanford.test;

import java.math.BigDecimal;
import java.util.Properties;

import javax.naming.InitialContext;

import com.mstanford.sessionbean.ConverterRemote;

public class TestEjb {

public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");

try {
InitialContext init=new InitialContext(props);
ConverterRemote converter=(ConverterRemote)init.lookup("Converter/remote");

BigDecimal param=new BigDecimal("100.00");
BigDecimal amount=converter.dollarToYen(param);
System.out.println("100美元兑换成日元为:"+amount);

BigDecimal amount1=converter.yenToEuro(param);
System.out.println("100日元兑换成欧元为:"+amount1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

这里边有个问题是:控制台程序中ConverterRemote converter=(ConverterRemote)init.lookup("Converter/remote");这一点总是转换出错
java.lang.ClassCastException: javax.naming.Reference cannot be cast to com.mstanford.sessionbean.ConverterRemote
at com.mstanford.test.TestEjb.main(TestEjb.java:20);


这个问题出现在那个方面?????
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,