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