是否可以在没有spring依赖的情况下启动Mule3 embedded?

是否可以在没有spring依赖的情况下启动Mule3 embedded?,mule,Mule,我试图使用从普通java应用程序嵌入的Mule 3.2.1。假定应用程序在存储空间有限的环境中运行。 我尝试了(导入,为简洁起见省略了异常): 还有: AutoConfigurationBuilder configBuilder = new AutoConfigurationBuilder("mule-config.xml"); DefaultMuleConfiguration configuration = new DefaultMuleConfiguration(); MuleContext

我试图使用从普通java应用程序嵌入的Mule 3.2.1。假定应用程序在存储空间有限的环境中运行。
我尝试了(导入,为简洁起见省略了异常):

还有:

AutoConfigurationBuilder configBuilder = new AutoConfigurationBuilder("mule-config.xml");
DefaultMuleConfiguration configuration = new DefaultMuleConfiguration();
MuleContextBuilder contextBuilder = new DefaultMuleContextBuilder();
contextBuilder.setMuleConfiguration(configuration);
MuleContext muleContext = new DefaultMuleContextFactory().createMuleContext(configbuilder, contextBuilder);
muleContext.start();

但两者都需要SpringCore、SpringBean、SpringContext和一些commons库。任何帮助都会很好

如果使用XML配置,则需要Spring

如果您不想使用Spring,您可以选择:

  • 手动实例化和连接Mule内部组件,同时处理生命周期
  • 等待Mule DSL发布。您可能想向MuleSoft询问发布日期:)
如果您只想使用原始传输,即不配置任何流或模式,那么您可以在没有Spring的情况下使用它,但请记住,如果
mule-core
依赖关系不能传递Spring,那么所有模块和传输都可以。这意味着您必须使用筛选来阻止这些依赖项

例如,要使用HTTP传输,您需要以下Maven依赖项:

<dependency>
    <groupId>org.mule</groupId>
    <artifactId>mule-core</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>org.mule.transports</groupId>
    <artifactId>mule-transport-http</artifactId>
    <version>3.4.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-spring-config</artifactId>
        </exclusion>
    </exclusions>
</dependency>
注意,如果这就是使用Mule所做的一切,那么您更愿意直接使用Apache HTTP客户端:)

MuleContextFactory MuleContextFactory=new DefaultMuleContextFactory();
MuleContextBuilder MuleContextBuilder=新的默认MuleContextBuilder();
MuleContext MuleContext
createMuleContext(muleContextBuilder);
muleContext.start();
//创建mule客户端
MuleClient客户端=新的MuleClient(muleContext);
//生成xml请求
字符串reportRequestXml=createXML(reportRequest);
//设置消息属性
Map messageProperties=new HashMap();
put(“内容类型”、“应用程序/xml”);
//发送超时请求
MuleMessage response=client.send(crsRestUrl、reportRequestXml、messageProperties、httpTimeout);
muleContext.stop();

谢谢你,大卫。你发送的url似乎返回404-你有其他参考吗?很抱歉,我没有意识到这是一个私人链接。DSL非常适合您的需求,但不幸的是它还没有公开。我想你得问问MuleSoft。非常感谢David,我会尝试手动实例化mule组件。期待DSL在Mulesoft github repo中的体现。如果您遇到问题,请提出新问题,我会尽力提供帮助。不久前,我做了一些裸骨骡子配置实验。谢谢大卫,谢谢你,我会的。这并没有配置骡子,即没有流量,什么都没有。这只是使用核心Mule运输工具,这不是我原来认为的问题。我已经回顾了我的答案,为您提供了确切的Maven配置。
<dependency>
    <groupId>org.mule</groupId>
    <artifactId>mule-core</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>org.mule.transports</groupId>
    <artifactId>mule-transport-http</artifactId>
    <version>3.4.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-spring-config</artifactId>
        </exclusion>
    </exclusions>
</dependency>
MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
MuleContextBuilder muleContextBuilder = new DefaultMuleContextBuilder();
MuleContext muleContext = muleContextFactory.createMuleContext(muleContextBuilder);
muleContext.start();

MuleClient client = muleContext.getClient();

MuleMessage response = client.request("http://www.google.com", 20000L);
System.out.println(response.getPayloadAsString());

muleContext.dispose();
System.exit(0);
        MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
        MuleContextBuilder muleContextBuilder = new DefaultMuleContextBuilder();
        MuleContext muleContext
        muleContextFactory.createMuleContext(muleContextBuilder);
        muleContext.start();

        // create mule client
        MuleClient client = new MuleClient(muleContext);
        // generate xml request
        String reportRequestXml = createXML(reportRequest);
        // set up message properties
        Map<String, Object> messageProperties = new HashMap<String, Object>();
        messageProperties.put("Content-Type", "application/xml");

        // send request with timeout
        MuleMessage response = client.send(crsRestUrl, reportRequestXml, messageProperties, httpTimeout);

        muleContext.stop();