Jakarta ee 在主服务器外部使用EJB远程接口
我有一个hello world风格的JavaEE应用程序,使用maven3 glassfish3和javaee6 我有一个简单的会话bean:Jakarta ee 在主服务器外部使用EJB远程接口,jakarta-ee,glassfish,ejb-3.1,Jakarta Ee,Glassfish,Ejb 3.1,我有一个hello world风格的JavaEE应用程序,使用maven3 glassfish3和javaee6 我有一个简单的会话bean: package com.mytest.beans; import com.mytest.interfaces.HelloBeanRemote; import javax.ejb.Stateless; @Stateless public class HelloBean implements HelloBeanRemote{ @Override
package com.mytest.beans;
import com.mytest.interfaces.HelloBeanRemote;
import javax.ejb.Stateless;
@Stateless
public class HelloBean implements HelloBeanRemote{
@Override
public String sayHello() {
return "well hello there";
}
}
它公开了一个远程接口。此接口位于同一模块中,但属于不同的包
package com.mytest.interfaces;
import javax.ejb.Remote;
@Remote
public interface HelloBeanRemote {
public String sayHello();
}
我正在使用maven ejb插件创建我的客户机模块所依赖的ejb客户机工件
我编写了这个简单的应用程序客户端
package com.mytest;
import com.mytest.interfaces.HelloBeanRemote;
import java.awt.Container;
import javax.ejb.EJB;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
* Enterprise Application Client main class.
*
*/
public class Main {
@EJB
private static HelloBeanRemote hb;
public static void main( String[] args ) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
JButton button = new JButton("i have not been pushed");
pane.add(button);
frame.pack();
frame.setVisible(true);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
}
button.setText(hb.sayHello());
}
}
这对我来说就像预期的那样。但是,当我将我的应用程序客户端更改为:
package com.mytest;
import com.mytest.interfaces.HelloBeanRemote;
import java.awt.Container;
import javax.ejb.EJB;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
* Enterprise Application Client main class.
*
*/
public class Main {
public static void main( String[] args ) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
MyButton button = new MyButton("i have not been pushed");
pane.add(button);
frame.pack();
frame.setVisible(true);
}
}
当我单击按钮时,这将无法按预期工作
有人能给我点化一下吗
非常感谢。玻璃鱼开发指南说: 主类和可选回调支持注释 应用程序客户端中的处理程序类 因此,要么在主类中注入bean,并构建某种类型的单例注册表,所有类都将在其中获得对EJB的引用,要么使用JNDI获得对bean的引用,要么使用某种依赖注入框架(Spring、Guice等)它将有自己的注入规则,并将注册表或JNDI用作EJB引用的工厂
package com.mytest;
import com.mytest.interfaces.HelloBeanRemote;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.ejb.EJB;
import javax.swing.JButton;
public class MyButton extends JButton implements ActionListener{
@EJB
private HelloBeanRemote hb;
public MyButton(String string){
super(string);
addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
setText(hb.sayHello());
}
}