请问如何用jb8+jboss3.x测试ejb?

xiaoyuzi 2003-07-01 09:13:02
--------------bean--------
package converterejb;

import javax.ejb.*;

public class ConverterBean implements SessionBean {
SessionContext sessionContext;
public void ejbCreate() throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public double DollarToRMB(double dollars) {
/**@todo Complete this method*/
return dollars * 8.3000;
}
public double RMBToDollar(double RMB) {
/**@todo Complete this method*/
return RMB / 8.3000;
}
}
-------------------------------------------
------------------remote-------------------------
package converterejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface Converter extends javax.ejb.EJBObject {
public double DollarToRMB(double dollars) throws RemoteException;
public double RMBToDollar(double RMB) throws RemoteException;
}
---------------------------------------------------
-----------------home-----------------
package converterejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface ConverterHome extends javax.ejb.EJBHome {
public Converter create() throws CreateException, RemoteException;
}
-------------------------------------------
测试客户端是:
package converterejb;

import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import converterejb.Converter;
import converterejb.ConverterHome;

public class ConverterClient extends Object {
private static final String ERROR_NULL_REMOTE = "Remote interface reference is null. It must be created by calling one of the Home interface methods first.";
private static final int MAX_OUTPUT_LINE_LENGTH = 100;
private boolean logging = true;
private ConverterHome converterHome = null;
private Converter converter = null;

//Construct the EJB test client
public ConverterClient() {
initialize();
}

public void initialize() {
long startTime = 0;
if (logging) {
log("Initializing bean access.");
startTime = System.currentTimeMillis();
}

try {
//get naming context
Context context = getJBossInitialContext();

//look up jndi name
Object ref = context.lookup("Converter");
//look up jndi name and cast to Home interface
converterHome = (ConverterHome) PortableRemoteObject.narrow(ref, ConverterHome.class);
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded initializing local bean access through Local Home interface.");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed initializing bean access.");
}
e.printStackTrace();
}
}
private javax.naming.Context getJBossInitialContext() throws NamingException {
java.util.Hashtable JNDIParm = new java.util.Hashtable();
JNDIParm.put(Context.PROVIDER_URL, "localhost");
JNDIParm.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
return new InitialContext(JNDIParm);
}


//----------------------------------------------------------------------------
// Methods that use Home interface methods to generate a Remote interface reference
//----------------------------------------------------------------------------

public Converter create() {
long startTime = 0;
if (logging) {
log("Calling create()");
startTime = System.currentTimeMillis();
}
try {
converter = converterHome.create();
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded: create()");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed: create()");
}
e.printStackTrace();
}

if (logging) {
log("Return value from create(): " + converter + ".");
}
return converter;
}

//----------------------------------------------------------------------------
// Methods that use Remote interface methods to access data through the bean
//----------------------------------------------------------------------------

public double DollarToRMB(double dollars) {
double returnValue = 0f;

if (converter == null) {
System.out.println("Error in DollarToRMB(): " + ERROR_NULL_REMOTE);
return returnValue;
}

long startTime = 0;
if (logging) {
log("Calling DollarToRMB(" + dollars + ")");
startTime = System.currentTimeMillis();
}

try {
returnValue = converter.DollarToRMB(dollars);
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded: DollarToRMB(" + dollars + ")");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed: DollarToRMB(" + dollars + ")");
}
e.printStackTrace();
}

if (logging) {
log("Return value from DollarToRMB(" + dollars + "): " + returnValue + ".");
}
return returnValue;
}

public double RMBToDollar(double RMB) {
double returnValue = 0f;

if (converter == null) {
System.out.println("Error in RMBToDollar(): " + ERROR_NULL_REMOTE);
return returnValue;
}

long startTime = 0;
if (logging) {
log("Calling RMBToDollar(" + RMB + ")");
startTime = System.currentTimeMillis();
}

try {
returnValue = converter.RMBToDollar(RMB);
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded: RMBToDollar(" + RMB + ")");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed: RMBToDollar(" + RMB + ")");
}
e.printStackTrace();
}

if (logging) {
log("Return value from RMBToDollar(" + RMB + "): " + returnValue + ".");
}
return returnValue;
}

public void executeRemoteCallsWithDefaultArguments() {
if (converter == null) {
System.out.println("Error in executeRemoteCallsWithDefaultArguments(): " + ERROR_NULL_REMOTE);
return ;
}
DollarToRMB(0f);
RMBToDollar(0f);
}

//----------------------------------------------------------------------------
// Utility Methods
//----------------------------------------------------------------------------

private void log(String message) {
if (message == null) {
System.out.println("-- null");
return ;
}
if (message.length() > MAX_OUTPUT_LINE_LENGTH) {
System.out.println("-- " + message.substring(0, MAX_OUTPUT_LINE_LENGTH) + " ...");
}
else {
System.out.println("-- " + message);
}
}
//Main method

public static void main(String[] args) {
try{
ConverterClient client = new ConverterClient();
Converter nowConverter = client.create();
double amount = nowConverter.DollarToRMB(100.00);
System.out.println(String.valueOf(amount));
}
catch (Exception e){
System.out.println("exception:"+e.toString());
}


}
}

我就在jb8的run->configurations里设了一个server,但vm和application参数什么都没填,用这个启动了jboss,另外一个就是生成测试程序自动生成的configuration,运行他,出现了错误,-- Failed: create()

-- Return value from create(): null.

exception:java.lang.NullPointerException



...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuzi 2003-07-03
  • 打赏
  • 举报
回复
自己搞定了,分都送给lz485078你了
xiaoyuzi 2003-07-02
  • 打赏
  • 举报
回复
没有好心人么
xiaoyuzi 2003-07-02
  • 打赏
  • 举报
回复
哦,只有自己摸索了,java好麻烦啊,每一个部分都要浪费很多时间,怎么就没有比较系统的教程和参考书啊
孤独求败1978 2003-07-02
  • 打赏
  • 举报
回复
不是没好心人,是大家都不怎么会
xiaoyuzi 2003-07-01
  • 打赏
  • 举报
回复
具体的错误是:- Initializing bean access.

javax.naming.NameNotFoundException: Converter not bound

at org.jnp.server.NamingServer.getBinding(NamingServer.java:495)

at org.jnp.server.NamingServer.getBinding(NamingServer.java:503)

at org.jnp.server.NamingServer.getObject(NamingServer.java:509)

at org.jnp.server.NamingServer.lookup(NamingServer.java:282)-- Failed initializing bean access.



at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)

at sun.rmi.transport.Transport$1.run(Transport.java:148)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Transport.java:144)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)

at java.lang.Thread.run(Thread.java:536)

at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)

at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)

at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)

at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:484)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:463)

at javax.naming.InitialContext.lookup(InitialContext.java:347)

at converterejb.ConverterClient.initialize(ConverterClient.java:32)

at converterejb.ConverterClient.<init>(ConverterClient.java:17)

at converterejb.ConverterClient.main(ConverterClient.java:190)

-- Calling create()

java.lang.NullPointerException

at converterejb.ConverterClient.create(ConverterClient.java:67)

at converterejb.ConverterClient.main(ConverterClient.java:191)

-- Failed: create()

-- Return value from create(): null.

exception:java.lang.NullPointerException

内容概要:本文研究了基于DPWMA调制、正负序分离锁相与电网电压前馈控制的一体化控制策略在ANPC三电平并网逆变器中的应用。通过分析ANPC拓扑的结构优势,提出结合双极性倍频脉宽调制(DPWMA)以提升输出波形质量,降低谐波含量;采用正负序分离锁相技术应对电网电压不平衡问题,确保相位同步精度;引入电网电压前馈控制克服传统闭环反馈的滞后性,增强系统对电压骤升、骤降等动态扰动的响应能力。整体控制架构分为信号采集、核心控制与调制驱动三层,实现“精准同步-扰动补偿-优质调制”的协同优化。经仿真验证,该复合控制策略在稳态、不平衡及动态工况下均表现出优异的电能质量、稳定性和抗扰性能。; 适合人群:从事电力电子、新能源并网、逆变器控制等相关领域的科研人员及工程技术人员,具备一定电力系统与控制理论基础的研究生或高年级本科生。; 使用场景及目标:① 提升高功率并网逆变器在复杂电网环境下的运行稳定性与电能质量;② 解决电网电压不平衡、畸变、突变等工况下的锁相失真与电流畸变问题;③ 实现快速动态响应与高精度并网控制,适用于新能源发电、工业变流等实际工程场景。; 阅读建议:建议结合Simulink仿真模型进行实践验证,重点关注DPWMA调制实现、正负序分离算法设计与前馈控制环节的参数整定,深入理解各模块间的协同机制,并通过对比实验体会复合控制策略相对于传统方法的性能优势。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧