0 Replies Latest reply on Dec 29, 2011 3:22 PM by rcbandit

    Howto call method from OSGI bundle?

    rcbandit

      I have written this OSGI bundle:

       

       

      /*
       * To change this template, choose Tools | Templates
       * and open the template in the editor.
       */
      package CryptoLib;
      
      import java.security.MessageDigest;
      import java.security.NoSuchAlgorithmException;
      
      public class cryptoSha {
      
          public cryptoSha() {
          }
      
          /** method for converting simple string into SHA-256 hash */
             public String stringHash(String hash) throws NoSuchAlgorithmException{
      
                  MessageDigest md = MessageDigest.getInstance("SHA-256");
                  md.update(hash.getBytes());
      
                  byte byteData[] = md.digest();
      
                  /** convert the byte to hex format */
                  StringBuilder sb = new StringBuilder();
                      for (int i = 0; i < byteData.length; i++) {
                  sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
                  }              
                 return sb.toString();
             }
      
      
      }
      
      

       

      And this is the Acticator class:

       

       

      package com.CL77;
      
          import org.osgi.framework.BundleActivator;
          import org.osgi.framework.BundleContext;
      
          public class Activator implements BundleActivator {
              private static BundleContext context;
      
              public void start(BundleContext context) throws Exception {
                   Activator.context = context;
              }
      
              public void stop(BundleContext context) throws Exception {
                   Activator.context = null;
              }
      
          }
      
      

       

      This is the EAR package which calls the bundle:

       


      import javax.servlet.http.HttpServletResponse;
      import javax.servlet.http.HttpSession;
      import org.osgi.framework.BundleContext;
      
      @Named("loginController")
      @SessionScoped
      public class userCheck extends HttpServlet implements Serializable {
      
             public userCheck(){
             }
      
             private BundleContext bundleContext;
      
             @Override
          public void init(ServletConfig config) throws ServletException {
              super.init(config);
              bundleContext = (BundleContext) config.getServletContext().getAttribute("osgi-bundlecontext");
          }
      
          @Override
              protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              try {
                  cryptoSha dc = new cryptoSha();
                  String nhash = dc.stringHash("test");
              } catch (NoSuchAlgorithmException ex) {
                  ex.printStackTrace();
              }
      
             }
       }       
      
      

       

      I successfully compile and deploy then on JBoss 7.1.0 but when I start the EAR package nothing happens. Can you help me to find where I'm wrong in the code?

       

      kind regards, Peter