BTTestBean.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:3k
源码类别:

中间件编程

开发平台:

Java

  1. package org.jboss.blacktie.example.ejb.eg1;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import javax.naming.Context;
  5. import javax.naming.InitialContext;
  6. import javax.naming.NamingException;
  7. import org.apache.log4j.LogManager;
  8. import org.apache.log4j.Logger;
  9. public class BTTestBean implements BTTestRemote {
  10. private static final Logger log = LogManager.getLogger(BTTestBean.class);
  11. private String name = "";
  12. public BTTestBean(String name) {
  13. this.name = name;
  14. }
  15. public String txRequired(String arg) {
  16. return handleRequest("txRequired", arg);
  17. }
  18. public String txSupports(String arg) {
  19. return handleRequest("txSupports", arg);
  20. }
  21. public String txMandatory(String arg) {
  22. return handleRequest("txMandatory", arg);
  23. }
  24. public String txNever(String arg) {
  25. return handleRequest("txNever", arg);
  26. }
  27. public String txRequiresNew(String arg) {
  28. return handleRequest("txRequiresNew", arg);
  29. }
  30. public String txNotSupported(String arg) {
  31. return handleRequest("txNotSupported", arg);
  32. }
  33. public String echo(String arg) {
  34. return handleRequest("echo", arg);
  35. }
  36. protected String handleRequest(String methodName, String arg) {
  37. Map<String, String> map = new HashMap<String, String>();
  38. BTTestRemote bean = null;
  39. if (parse(arg, map) != 0) {
  40. for (Map.Entry<String, String> e : map.entrySet()) {
  41. if ("bean".equals(e.getKey())) {
  42. try {
  43. bean = (BTTestRemote) getBean(e.getValue());
  44. arg = "invocation from " + name; // getClass().getSimpleName();
  45. } catch (NamingException ex) {
  46. return e.getKey() + " is not a valid bean name: "
  47. + ex.getMessage();
  48. }
  49. } else if ("method".equals(e.getKey())) {
  50. methodName = e.getValue();
  51. }
  52. }
  53. }
  54. return invokeBean(bean, methodName, arg);
  55. }
  56. protected String invokeBean(BTTestRemote bean, String methodName, String arg) {
  57. log.debug(methodName);
  58. if (bean == null || bean == this) {
  59. return arg + " - via " + name; // getClass().getSimpleName();
  60. } else if ("txRequired".equals(methodName)) {
  61. return bean.txRequired(arg);
  62. } else if ("txSupports".equals(methodName)) {
  63. return bean.txSupports(arg);
  64. } else if ("txMandatory".equals(methodName)) {
  65. return bean.txMandatory(arg);
  66. } else if ("txNever".equals(methodName)) {
  67. return bean.txNever(arg);
  68. } else if ("txRequiresNew".equals(methodName)) {
  69. return bean.txRequiresNew(arg);
  70. } else if ("txNotSupported".equals(methodName)) {
  71. return bean.txNotSupported(arg);
  72. } else {
  73. return bean.echo(arg);
  74. }
  75. }
  76. protected Object getBean(String name) throws NamingException {
  77. Context ctx = new InitialContext();
  78. return ctx.lookup(name);
  79. }
  80. protected static int parse(String arg, Map<String, String> map) {
  81. System.out.println(arg);
  82. String[] nvps = arg.split("&");
  83. for (String nvp : nvps) {
  84. String[] nv = nvp.split("=");
  85. if (nv.length == 2)
  86. map.put(nv[0], nv[1]);
  87. }
  88. return map.size();
  89. }
  90. }