Topic: 求救!jboss4下一个简单sessionBean总是不成功

  Print this page

1.求救!jboss4下一个简单sessionBean总是不成功 Copy to clipboard
Posted by: biti509
Posted on: 2005-08-31 19:46

各位,我实在没办法了,网上找来找去也没有对号的解释,也没有完全手把手的实现的例子
,只好向各位求救
我参考了这篇文章http://dev.csdn.net/develop/article/19/19647.shtm
在jboss4(jboss3也试过)下实现一个简单的sessionBean总是不成功。

<<1>>Hello.java

import java.rmi.RemoteException;
import javax.ejb.EJBObject;

public interface Hello extends javax.ejb.EJBObject {
public String hello() throws java.rmi.RemoteException;
}

<<2>>HelloHome.java

import java.rmi.RemoteException;

public interface HelloHome extends javax.ejb.EJBHome {
Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;
}

<<3>>HelloBean.java

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class HelloBean implements javax.ejb.SessionBean {
private SessionContext ctx;

public void ejbCreate() {
System.out.println("ejbCreate()");
}

public void ejbRemove() {
System.out.println("ejbRemove()");
}

public void ejbActivate() {
System.out.println("ejbActivate()");
}

public void ejbPassivate() {
System.out.println("ejbPassivate()");
}

public void setSessionContext(javax.ejb.SessionContext ctx) {
his.ctx = ctx;
}

public String hello() {
System.out.println("hello()");
return "hello,world";
}
}
<<4>>ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>HelloHome</home>
<remote>Hello</remote>
<ejb-class>HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>

<<5>>jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>HelloEJB</jndi-name>
</session>
</enterprise-beans>
</jboss>
<<6>>

编译3个.java文件后按照以下路径存放文件(假设放到d:\sessionEjb下面)
d:\sessionEjb\Hello.class
d:\sessionEjb\HelloBean.class
d:\sessionEjb\HelloHome.class
d:\sessionEjb\META-INF\ejb-jar.xml
d:\sessionEjb\META-INF\jboss.xml

然后打包d:\sessionEjb\jar cvf helloejb.jar *.*,打包后将helloejb.jar放到deploy目录下面,按参考文章的说法,控制台应该出现:
11:35:30,815 INFO [EjbModule] Creating
11:35:30,825 INFO [EjbModule] Deploying Hello
11:35:30,835 INFO [StatelessSessionContainer] Creating
11:35:30,835 INFO [StatelessSessionInstancePool] Creating
11:35:30,835 INFO [StatelessSessionInstancePool] Created
11:35:30,845 INFO [StatelessSessionContainer] Created
11:35:30,845 INFO [EjbModule] Created
11:35:30,845 INFO [EjbModule] Starting
11:35:30,845 INFO [StatelessSessionContainer] Starting
11:35:30,905 INFO [StatelessSessionInstancePool] Starting
11:35:30,905 INFO [StatelessSessionInstancePool] Started
11:35:30,905 INFO [StatelessSessionContainer] Started
11:35:30,905 INFO [EjbModule] Started
11:35:30,905 INFO [EJBDeployer] Deployed: file:/D:/jboss-3.2.1/server/default/d
eploy/helloejb.jar
11:35:30,925 INFO [MainDeployer] Deployed package: file:/D:/jboss-3.2.1/server/
default/deploy/helloejb.jar
但是我这里只是简单显示:
21:23:57,968 INFO [EjbModule] Deploying Hello
21:23:58,843 INFO [EJBDeployer] Deployed: file:/E:/j2ee/jboss-
4.0.2/server/all/deploy/helloejb.jar

然后是测试程序:
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.ejb.CreateException;
import java.rmi.RemoteException;
import javax.rmi.PortableRemoteObject;
import java.util.Properties;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class HelloWorldClient extends JFrame implements ActionListener {
public HelloWorldClient() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setTitle("EJBClient");
setSize(300,200);
Container contentPane = getContentPane();
area = new JTextArea(6,20);
subButton = new JButton("Say hello to EJB");
subButton.setActionCommand("sya");
subButton.addActionListener(this);
contentPane.add(area,"Center");
contentPane.add(subButton,"South");
}
public void actionPerformed(ActionEvent e) {
if ( e.getActionCommand().equals("sya") ) {
ejbSays = getEJBInfo();
area.append(ejbSays + "\n");
}
}

public String getEJBInfo() {
try {
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("HelloEJB");
HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref,HelloHome.class);
Hello hw= home.create();
ejbSays = hw.hello();

} catch (Exception e) {
e.printStackTrace();
ejbSays = e.toString();
} catch ( Throwable t ) {
t.printStackTrace();
} finally {

}
return ejbSays;
}

public static Context getInitialContext() throws Exception {
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.put(Context.PROVIDER_URL, "localhost:1099");
return new InitialContextCamera;
}

public static void main(String[] args) {
JFrame win = new HelloWorldClient();
win.pack();
win.setVisible(true);
}

private String ejbSays="";
private JTextField info;
private JButton subButton;
private JTextArea area;
}

所有编译也没有任何问题,然后
将编译好的HelloWorldClient.class,HelloWorldClient$1.class,放置到d:\sessionbean目录下(如果放到别的地方,确定可以通过路径找到HelloBean,HelloHome,Hello类
弹出窗口,点击按钮就出错:
javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
....

再补充一下,我用的是jdkee1.4,jboss4,jboss3都试过,问题相同
我也试了好多网上别的例子,没一个成功的,代码应该没问题,不知是哪个环节没考虑到
各位指点一下迷津,我都快疯了

2.Re:求救!jboss4下一个简单sessionBean总是不成功 [Re: biti509] Copy to clipboard
Posted by: erongd
Posted on: 2005-09-01 01:24

You need to include the jbossall-client.jar on you classpath to run the client program. The file in under <JBOSS_HOME>/client

3.Re:求救!jboss4下一个简单sessionBean总是不成功 [Re: biti509] Copy to clipboard
Posted by: whyuaou
Posted on: 2005-09-06 22:27

我也在实践这个例程,可HelloHome.java无法编译通过,报错
D:\myejb\sample1\HelloHome.java:4: cannot resolve symbol
symbol : class Hello
location: interface HelloHome
Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;
^
1 error


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923