帮忙看看这个简单的bmp,

woidan 2004-03-10 04:58:59
jb9+weblogic7
测试端:
import javax.naming.Context;
import java.util.Properties;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import java.util.*;
import warehouse.*;

public class UserTableClient {

public static void main(String[] args) throws Exception{
//声明联接Weblogic服务器的属性类
Properties properties;
//声明寻找服务器对象的Context类
Context ctx;
//设置访问WebLogic服务器的参数
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://localhost:7001");
//创建JNDI对象的搜索器
ctx = new InitialContext(properties);
//使用lookup方法寻找UserTableRemote对象
Object UserTableJNDI = ctx.lookup("UserTableRemote");
//取得EJB的Home接口
UserTableRemoteHome home = (UserTableRemoteHome)PortableRemoteObject.narrow(
UserTableJNDI, UserTableRemoteHome.class);
//声明EJB的的Remote接口
UserTableRemote jackUser;
try{
//取得EJB的Remote接口
jackUser = home.findByPrimaryKey("wf");
}catch(Exception ex){
ex.printStackTrace();
System.out.println("出现异常");
}
}
}

服务端能正常显示查询结果,可是jb里出现:
----------------
java.lang.IllegalArgumentException: wrong number of arguments

Start server side stack trace:
java.lang.IllegalArgumentException: wrong number of arguments

at java.lang.reflect.Constructor.newInstance(Native Method)

at weblogic.rmi.internal.OIDManager.makeActivatableServerReference(OIDManager.java:203)

at weblogic.rmi.internal.OIDManager.getReplacement(OIDManager.java:129)

at weblogic.common.internal.RemoteObjectReplacer.getReplacement(RemoteObjectReplacer.java:265)

at weblogic.common.internal.RemoteObjectReplacer.replaceObject(RemoteObjectReplacer.java:107)

at weblogic.common.internal.ChunkedObjectOutputStream.replaceObject(ChunkedObjectOutputStream.java:53)

at weblogic.common.internal.ChunkedObjectOutputStream$NestedObjectOutputStream.replaceObject(ChunkedObjectOutputStream.java:239)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:323)

at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:107)

at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:82)

at warehousebeanp.UserTableBean_wg8twd_HomeImpl_WLSkel.invoke(Unknown Source)

at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:346)

at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114)

at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:300)

at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:762)

at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:295)

at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)

at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:152)

at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:133)

End server side stack trace


at weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:109)

at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)

at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)

at warehousebeanp.UserTableBean_wg8twd_HomeImpl_WLStub.findByPrimaryKey(Unknown Source)

at warehousebeanp.UserTableClient.main(UserTableClient.java:43)
----------------------

也就是jackUser = home.findByPrimaryKey("wf")这句有问题,wrong number of arguments是什么意思?
findByPrimaryKey函数如下:

public String ejbFindByPrimaryKey(String name) throws FinderException {
System.out.println("ejbFinderByPrimaryKey:寻找用户(" + name + ")");
Connection con = null;
PreparedStatement ps = null;
try {
con = getConnection();
//为PreparedStatemet接口写入SQL语句
ps = con.prepareStatement("select * from userTable where name = ?");
//设置参数
ps.setString(1, name);
//返回数据集
ResultSet rs = ps.executeQuery();;
if (rs.next()) {
//设置EJB的password
password = rs.getString("password");
System.out.println("ejbFindByPrimaryKey: 用户名 (" + name + ") 找到");
return name;
} else {
String error = "ejbFindByPrimaryKey: 用户名 (" + name + ") 找不到";
System.out.println(error);
throw new ObjectNotFoundException (error);
}
} catch (SQLException sqe) {
throw new EJBException (sqe);
} finally {
//将数据库联接返回缓冲池
cleanup(con, ps);
}
}
谁帮看看,在此谢过!
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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