标签: wso2-enterprise-integrator

如何为自定义消息处理器实现自定义SamplingService?在检索元素之后和执行序列之前进行日志记录

我是WSO2 ESB的新手,我有一个具有这种特定行为的自定义消息处理器:在从消息存储中检索元素之后,在执行与此消息处理器相关的序列之前执行操作.

我试着详细解释一下.

这是我的ESB消息处理器定义:

<?xml version="1.0" encoding="UTF-8"?>
<!---<messageProcessor class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor" messageStore="transferFromMessageStore" name="transferFromMessageProcessor" xmlns="http://ws.apache.org/ns/synapse">-->
<messageProcessor class="com.mycompany.toolkit.messageprocessor.SamplingProcessorHeaderRateLimitation" messageStore="transferFromMessageStore" name="transferFromMessageProcessor" xmlns="http://ws.apache.org/ns/synapse">
    <parameter name="sequence">transferProcessorSequence</parameter>
    <parameter name="interval">1000</parameter>
    <parameter name="is.active">true</parameter>
    <parameter name="concurrency">1</parameter>
</messageProcessor>
Run Code Online (Sandbox Code Playgroud)

它从transferFromMessageStore(队列)中检索一些元素(XML文档),并将此对象传递给使用它的transferProcessorSequence.xml序列.正如您在此时所看到的,我已经实现了一个自定义消息处理器SamplingProcessorHeaderRateLimit,它只是扩展了org.apache.synapse.message.processor.impl.sampler.SamplingProcessor WSO2类.此时,它仅在执行init()方法时显示日志.我将它部署在我的Carbon服务器上,它可以工作.

在这里,您可以找到整个项目代码.

好但是从我所理解的获得所需的行为我不必简单地扩展SamplingProcessor类,因为为了在每个消息消耗和调度序列之间进行自定义实现,需要扩展类SamplingService类,这一个.

我认为我需要覆盖execute()fetch(MessageConsumer msgConsumer).

此时应该还可以插入日志,每次从消息存储库中检索元素时都会写入日志文件,在此之前执行与消息处理器相关的序列.

可能吗?

所以我的主要主要是:

1)我是否要创建一个将SamplingService类扩展到我实现自定义消息处理器的同一项目中的类(此行为必须仅用于我的WSO2 ESB项目中的此特定消息处理器,所有其他使用的消息处理器在这个项目中必须使用标准的SamplingService实现).

2)另一个疑问与此自定义SamplingService实现如何传递给我的自定义消息处理器有关.进入SamplingProcessor WSO2类(如何将特定的自定义消息处理器实现与处理其生命周期的自定义SamplingService实现相关联).

java esb wso2 wso2esb wso2-enterprise-integrator

12
推荐指数
1
解决办法
222
查看次数

WSO2 ESB中入站端点的含义和用途是什么?

我正在研究这个材料用于WSO2 ESB认证:

https://wso2.com/training/enterprise-integrator-developer-fundamentals#request_training_enroll

"下载实验工具包"部分中,有一个关于如何设置入站端点的教程.基本上它只是简单地为此先前实现的教程项目添加入站端点:

https://docs.wso2.com/display/EI611/Sending+a+Simple+Message+to+a+Service

我已经完成了它并且它工作正常,基本上在我的项目中我有这个REST API:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/healthcare" name="HealthcareAPI" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/querydoctor/{category}">
        <inSequence>
            <log description="Request Log" level="custom">
                <property name="message" value="Welcome to HealthcareService"/>
            </log>
            <send>
                <endpoint key="QueryDoctorEP"/>
            </send>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
        <faultSequence/>
    </resource>
</api>
Run Code Online (Sandbox Code Playgroud)

可以通过以下声明直接调用:

curl -v http://localhost:8280/healthcare/querydoctor/surgery
Run Code Online (Sandbox Code Playgroud)

然后我将此入站端点添加到项目中:

<?xml version="1.0" encoding="UTF-8"?>
<inboundEndpoint name="QueryDoctorInboundEndpoint" protocol="http" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
    <parameters>
        <parameter name="inbound.http.port">8285</parameter>
        <parameter name="dispatch.filter.pattern">/healthcare/querydoctor/.*</parameter>
    </parameters>
</inboundEndpoint>
Run Code Online (Sandbox Code Playgroud)

这意味着我也可以使用这个新的映射URL调用此服务:

curl -v http://localhost:8285/healthcare/querydoctor/surgery
Run Code Online (Sandbox Code Playgroud)

我正在使用另一个端口,因为此入站端点正在执行此映射:

<parameter name="dispatch.filter.pattern">/healthcare/querydoctor/.*</parameter>
Run Code Online (Sandbox Code Playgroud)

我的疑问是:为什么我要使用入站端点而不是我的REST API的经典URL?有什么好处或可能的用例?

我尝试阅读有关此端点类型的官方文档页面:https …

integration wso2 java-ee wso2esb wso2-enterprise-integrator

8
推荐指数
1
解决办法
336
查看次数

更新 WSO2 EI 6.6.0 中的 LocalEntry 内容

我有一个名为:的 LocalEntry Test,内容如下并保存在本地文件系统中。

<test>
   <value1>a</value1>
</test>
Run Code Online (Sandbox Code Playgroud)

我可以value1使用这样的属性检索:

<property name="value" expression="get-property('Test')/*[local-name()='value1']/text()" type="string" scope="default" />

但是,我无法通过属性中介器或丰富中介器更改 LocalEntry 文件的内容,我的丰富配置如下:

<enrich>
    <source clone="true" xpath="$ctx:newValue"/>
    <target xpath="get-property('Test')/*[local-name()='value1']/text()"/>
</enrich>
Run Code Online (Sandbox Code Playgroud)

我在 ESB-5.0.0 中有这个确切的配置,它就像一个魅力。

为什么我不能在 EI-6.6.0 中做同样的事情?有什么替代解决方案吗?

wso2 wso2esb wso2-enterprise-integrator ei

6
推荐指数
1
解决办法
107
查看次数

wso2 ei服务器,禁止错误403,不访问核心,错误:请求中缺少必需的令牌

我正在安装WSO2 EI 6.1.1

integrator --run : 
https://localhost:9445/carbon/admin/login.jsp -> OK

wso2serber.bat : EI-Business-Process Server 
https://localhost:9445/carbon/admin/login_action.jsp
Error 403 - Forbidden

[EI-Business-Process]  WARN {org.owasp.csrfguard.log.JavaLogger} -  potential cross-site request forgery (CSRF) attack thwarted (user:<anonymous>, ip:192.168.1.11, method:POST, uri:/carbon/admin/login_action.jsp, error:required token is missing from the request)

and wso2serber.bat : EI-Analytics
https://localhost:9444/carbon/admin/login_action.jsp
Error 403 - Forbidden

 [EI-Analytics]  WARN {org.owasp.csrfguard.log.JavaLogger} -  potential cross-site request forgery (CSRF) attack thwarted (user:<anonymous>, ip:192.168.1.11, method:POST, uri:/carbon/admin/login_action.jsp, error:required token is missing from the request)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?如何使WSO2 WSO2 EI下的wso2 Bu​​siness Process Server管理控制台可用?

wso2 bpmn wso2esb wso2-business-process wso2-enterprise-integrator

4
推荐指数
1
解决办法
1630
查看次数

群集WSO2 EI ESB和WSO2 EI MB配置文件,WKA与多播?我的假设正确吗?

我必须创建并配置两个节点的WSO2 EI集群。特别是,我必须将ESB配置文件和MB配置文件聚类。

我对此有一些架构上的疑问:

聚类ESB配置文件的疑问:

我的假设基于此文档:https : //docs.wso2.com/display/EI640/Clustering+the+ESB+Profile

我发现此部分:

请注意,某些生产环境不支持多播。但是,如果您的环境支持多播,则将其用作成员身份方案没有任何问题

不支持多播的原因可能是什么?(所以我可以告知它可能存在的问题)。在表格中(在上一个链接内),在我看来,可能的问题可能与以下几点有关:

  • 所有节点应位于同一子网中
  • 所有节点应在同一多播域中
  • 不应阻止多播

从系统\网络工程师处获取此信息是否足以决定是否继续使用多播选项?

使用多播而不是WKA,我需要执行与“安装注册表”和“创建\连接到数据库”有关的第一个部署方案(基于WKA的方案)中列出的相同配置步骤(如第一个文档链接所示) )?

在向群集添加新节点时,使用多播而不是WKA是否可以使我不停止服务?

群集MB配置文件:

据我了解,MB配置文件群集只能使用WKA作为成员身份方案。使用WKA是否意味着在向群集添加新节点时必须停止服务?

那么最后我们是否可以考虑ESB群集和MB群集两个不同的群集?ESB群集(如果使用多播配置)是否需要在添加新节点而停止MB群集以添加新节点时停止该服务?

wso2 cluster-computing wso2esb wso2-message-broker wso2-enterprise-integrator

2
推荐指数
1
解决办法
89
查看次数

如何从wso2代理服务调用python脚本文件

如何从wso2代理服务调用python脚本文件。

我们尝试使用send mediator调用位于我本地计算机上的python脚本文件。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="FilepythonTest"
       transports="http https"
       startOnLoad="true">
   <description/>
   <target >
      <inSequence>
         <send>
            <endpoint>
               <address uri="local:///Users/vikashsaharan/Desktop/python/testpy.py"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full"/>
      </outSequence>
   </target>
</proxy>
Run Code Online (Sandbox Code Playgroud)

我们无法通过此电话致电。请指导我如何从wso2调用python脚本

wso2 wso2esb wso2-enterprise-integrator

1
推荐指数
1
解决办法
214
查看次数