WSO2 3.2 BPS扩展

WSO2 3.2 BPS扩展,wso2,osgi,workflow,Wso2,Osgi,Workflow,当我使用JavaMail API 1.5.2创建WSO2 BPS 3.2 extensionemail sender,并将相应的1个大型全包jar及其所有依赖项includedmaven程序集插件保存在repository\components\lib目录中时,出现以下错误 注意:我是OSGI的新手 [2014-08-22 16:26:50667]警告{org.wso2.carbon.bpel.core.ode.integration.bpelserver impl}-无法注册扩展包运行时org

当我使用JavaMail API 1.5.2创建WSO2 BPS 3.2 extensionemail sender,并将相应的1个大型全包jar及其所有依赖项includedmaven程序集插件保存在repository\components\lib目录中时,出现以下错误

注意:我是OSGI的新手

[2014-08-22 16:26:50667]警告{org.wso2.carbon.bpel.core.ode.integration.bpelserver impl}-无法注册扩展包运行时org.mycompany.bps.extensions.email.SendEmailExtensionBundle,无法正确加载该类

org.apache.ode.bpel.iapi.BpelEngineException:org.apache.ode.bpel.iapi.BpelEngineException:流程的部署 {ode/bpel/unit test}HelloWorld2-3失败。流程模型要求引擎理解由定义的语言扩展 . 尚未为此命名空间注册任何扩展包

我已经花了几个小时试图调试这个,但似乎没有任何工作

到目前为止我所做的: 我首先编写了一个简单的扩展addExtension,添加了2个,它部署得很好,并且能够从我的测试工作流中调用它。所以我熟悉这些步骤

经过大量挖掘,我发现这可能是一个与OSGI模块相关的问题。 此外,即使重新启动,将非osgi jar放在lib目录中也不会更新osgi。诀窍是删除dropin目录下的所有内容,以使新jar生效

在进一步阅读之后,在osgi控制台上运行了一些命令,ss命令输出指示捆绑包处于活动状态。我甚至试着安装,但说它已经在那里了

我的最终目标是什么: 无缝地将我从其他团队收到的简单JAR插入到我的BPS工作流程中,而不要求他们更改源代码中的任何内容。i、 e.不需要将jar包装为webservices等,只为了能够使用工作流技术

一种方法

编写一个通用JAVA invoker实用程序扩展,该扩展需要jar和命令行参数的名称。例如。在运行时,我基本上使用内部使用ProcessBuilder的自定义扩展运行java-jar命令。 如果你们能建议其他方法,我将不胜感激

问题:

这是一个OSGI问题,或者使用的某个第三方库扩展与运行时冲突

还有其他复杂的扩展示例可以参考吗

解决我的问题的最佳方法是什么?其他团队成员可以贡献他们的JAR,而我无需更改任何内容,只需将它们插入我的工作流程即可。 注意:创建Web服务不是一个选项,因为它需要额外的工作

POM文件

}

手术班

.bpel文件

  <extensionActivity>
      <email:sendEmail toEmailAddress ="xyz@pqr.com" subject="Testing Subject" content="Testing content"></email:sendEmail>
  </extensionActivity>
谢谢
toomuchguy

您是否为扩展包配置了bps.xml?你能用bps.xml文件的内容更新你的问题吗?谢谢你的关注…是的,我确实在bps.xml文件中添加了以下内容****我花了更多的时间尝试创建使用第三方jarse.g的OSGi模块。javax.mail,但似乎仍然不起作用。我下载了Felix运行时shell,创建了一个看起来与WSO2捆绑包相似但运气不佳的捆绑包。忽略前面的注释..超时…感谢查看此…是的,我确实向bps.xml文件添加了以下内容。我花了更多时间尝试创建使用第三方jarse.g的OSGi模块。javax.mail,但似乎仍然不起作用。最大的问题是,创建使用非osgi捆绑JAR的扩展的最佳方法是什么。如果将非osgi JAR放入/repository/components/lib,这些将包装为osgi捆绑并放入droppings文件夹。很抱歉,注释窗口超时。持续的。在您的情况下,您需要将扩展包jar和com.sun.mail jar放在/repository/components/lib文件夹中。因为您已经正确配置了BPS xml,所以它应该可以工作。你们能清理掉排泄物文件夹并重新启动服务器吗?
public class SendEmailExtensionBundle extends AbstractExtensionBundle
{
   protected final Log log = LogFactory.getLog(getClass());
   public static final String NS = "http://mycompany.org/bps/extensions/email";

   public String getNamespaceURI() {
    return NS;
   }

   public void registerExtensionActivities() {
    log.info("Registering send email extension bundle.");
    registerExtensionOperation("sendEmail", SendEmailExtensionOperation.class);
  }
@Override
protected void runSync(ExtensionContext extensionContext, Element element) throws FaultException 
{
    log.info("About to send an email");
    String toAddress = element.getAttribute("toEmailAddress").trim();
    String subject = element.getAttribute("subject").trim();
    String content = element.getAttribute("content").trim();

    sendEmail(SMTP_AUTH_USER,toAddress,SMTP_HOST_NAME, SMTP_PORT,SMTP_AUTH_USER,SMTP_AUTH_PWD,subject,content);
}

public void sendEmail(String fromAddress, String toEmailAddress, String host,int port, String username,String pwd,String subject,String content)
{
    Transport trans = null;
    Properties props = new Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    props.setProperty("mail.host", "smtp.live.com");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");

    System.out.println("Preparing to send an email to : " + toEmailAddress);

    try
    {
        Session session = Session.getDefaultInstance(props);
        trans = session.getTransport("smtp");
        trans.connect(SMTP_HOST_NAME,SMTP_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);
        log.info("Session Initalized");
        MimeMessage message = new MimeMessage(session); 
        message.setFrom(new InternetAddress(fromAddress));
        InternetAddress[] toAddress = {new InternetAddress(toEmailAddress)};
        message.setRecipients(Message.RecipientType.TO, toAddress);
        message.setSubject(subject);        
        message.setText(content);
        //message.setContent(content, "text/html; charset=UTF-8");

        trans.sendMessage(message, toAddress);
        log.info("Email Sent");
    }
    catch (MessagingException mex) 
    {
        log.info("Failed to send an email due to exception: " + mex);
    }
    finally
    {
       try
       {
          if(trans != null)
            trans.close();
       }
       catch(Exception ex)
       {
          ex.printStackTrace();
       }
    }

}
  <extensionActivity>
      <email:sendEmail toEmailAddress ="xyz@pqr.com" subject="Testing Subject" content="Testing content"></email:sendEmail>
  </extensionActivity>