2012-12-20 74 views
2

我试图在WSO2 ESB中使用类介体。在WSO2 ESB中使用Class介体

以下是我的调解员类。

package samples.mediators; 

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator; 

public class SiriBankMediator extends AbstractMediator { 
    @Override 
    public boolean mediate(MessageContext messageContext) { 
     System.out.println("Hurraaaayyyy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 
     return false; 
    } 
} 

至于建议由Writing a WSO2 ESB Mediator,我尝试了“更简单的方法”,创建了包含在类路径突触core_2.1.0.wso2v8.jar一个罐子。

MANIFEST.MF如下

Manifest-Version: 1.0 
Class-Path: synapse-core_2.1.0.wso2v8.jar 
Created-By: 1.7.0_07 (Oracle Corporation) 

然后作为文章建议,扔下罐子在ESB库/组件/ lib目录下。

但ESB重新启动后,当我尝试load class它给出了错误的路径没有找到Class用于在siri.jar

共享 Class not found in the path

Jar文件想知道不知道在步骤缺我紧随其后。

预先感谢您。

注:我以前WSO2企业服务总线4.5.1

+0

你可以切换到“源视图”并显示序列的代码。 – FiveO

回答

6

我已经使用maven方法成功部署了您的自定义介体。这是我所做的。

我创建了以下目录结构,并放置在您的SiriBankMediator.java中的src/main/java的:

. 
├── pom.xml 
├── src 
│   └── main 
│    └── java 
│     └── SiriBankMediator.java 

pom.xml文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.samples.mediator</groupId> 
    <artifactId>siribankmediator</artifactId> 
    <version>1.0</version> 

    <repositories> 
     <repository> 
      <id>wso2-maven2-repository</id> 
      <url>http://dist.wso2.org/maven2</url> 
     </repository> 
     <repository> 
      <id>apache-Incubating-repo</id> 
      <name>Maven Incubating Repository</name> 
      <url>http://people.apache.org/repo/m2-incubating-repository</url> 
     </repository> 
     <repository> 
      <id>apache-maven2-repo</id> 
      <name>Apache Maven2 Repository</name> 
      <url>http://repo1.maven.org/maven2/</url> 
     </repository> 
    </repositories> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.0</version> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>1.4.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>org.test</Bundle-SymbolicName> 
         <Bundle-Name>org.test</Bundle-Name> 
         <Export-Package> 
          org.test.mediator.*, 
         </Export-Package> 
         <Import-Package> 
          *; resolution:=optional 
         </Import-Package> 
         <Fragment-Host>synapse-core</Fragment-Host> 
        </instructions> 
       </configuration> 
      </plugin> 
      <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>fully.qualified.MainClass</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.synapse</groupId> 
      <artifactId>synapse-core</artifactId> 
      <version>1.3.0.wso2v1</version> 
     </dependency> 
    </dependencies> 
</project> 

然后目录内包含POM文件,我们做mvn compile package。这应该建立你需要放入名为target的文件夹中的$ESB_HOME/repository/components/lib的jar文件。

最后,您可以通过碳管理前端将类加载为org.samples.mediator.SiriBankMediator。不要忘记重新启动ESB。希望有所帮助。 :)

1

我的我的自定义中保罐子的清单是这样的:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.3 
Created-By: 1.6.0_27-b07 (Sun Microsystems Inc.) 

所以也许不添加类路径,如果这样做不工作,尝试用Java 1.6版本构建。 然后它应该都可以。

记得在“components/lib”中添加你的jar。如果WSO2 ESB已经创建了一个OSGi jar包,检查启动后的“components/dropins”文件夹。然后,班级应该可用。

0

尝试用你的中介类包的名字至少有三个字母,

例如:包samples.mediators;

而不是那个包名,试试,打包samples.mediators。任何事情;

0

此答案可能对您没有用,因为这是2年前提出的问题,但其他人遇到此问题将会发现我的答案有用。

只需使用samples.mediators以外的软件包名称即可解决此问题。干杯..!