EJB 无状态 bean 只能 return 值,不能打印
EJB stateless bean can only return value, cannot print
我尝试实现一个远程无状态 bean。对于此 bean 中的方法,可以正确 return 编辑 return 值。但是,这些方法中的 "println" 无法将任何内容打印到控制台。
接口是
public interface HelloWorld {
public void SayHelloWorld(String name);
public String SayHello(String name);
}
实现是
@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
@Override
public void SayHelloWorld(String name) {
System.out.println(name + " say hello to the world!");
}
@Override
public String SayHello(String nameString) {
System.out.println("This is SayHello()");
return nameString;
}
}
客户是
public class HelloWorldTest {
public static void main(String[] args) {
try {
FileInputStream inputStream = new FileInputStream("ejb.properties");
Properties pro = new Properties();
pro.load(inputStream);
InitialContext icContext = new InitialContext(pro);
HelloWorld hw = (HelloWorld) icContext.lookup("ejb/HelloWorldBean!com.ejbinterface.HelloWorld");
hw.SayHelloWorld("tom");
String aa = hw.SayHello("tom");
System.out.println(aa);
} catch (NamingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
不知道为什么方法"SayHelloWorld"和"SayHello"中的println没有执行。但是,变量 "aa"(在客户端中)正确地获得了 return 值。
它打印到服务器的控制台(或者,如果重定向,打印到某个日志文件 - 但这只是一个配置问题)。只要寻找输出,如果方法被执行,那么输出就在那里。
我尝试实现一个远程无状态 bean。对于此 bean 中的方法,可以正确 return 编辑 return 值。但是,这些方法中的 "println" 无法将任何内容打印到控制台。 接口是
public interface HelloWorld {
public void SayHelloWorld(String name);
public String SayHello(String name);
}
实现是
@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
@Override
public void SayHelloWorld(String name) {
System.out.println(name + " say hello to the world!");
}
@Override
public String SayHello(String nameString) {
System.out.println("This is SayHello()");
return nameString;
}
}
客户是
public class HelloWorldTest {
public static void main(String[] args) {
try {
FileInputStream inputStream = new FileInputStream("ejb.properties");
Properties pro = new Properties();
pro.load(inputStream);
InitialContext icContext = new InitialContext(pro);
HelloWorld hw = (HelloWorld) icContext.lookup("ejb/HelloWorldBean!com.ejbinterface.HelloWorld");
hw.SayHelloWorld("tom");
String aa = hw.SayHello("tom");
System.out.println(aa);
} catch (NamingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
不知道为什么方法"SayHelloWorld"和"SayHello"中的println没有执行。但是,变量 "aa"(在客户端中)正确地获得了 return 值。
它打印到服务器的控制台(或者,如果重定向,打印到某个日志文件 - 但这只是一个配置问题)。只要寻找输出,如果方法被执行,那么输出就在那里。