我正在使用 Mule ESB CE 3.4。我有一个要求,我从数据库中读取配置信息并将其用作文件出站端点的文件名。这是一个示例代码(代码可能不起作用,因为我只给出了一个大纲)
<file:connector name="File-Data" autoDelete="false" streaming="true" validateConnections="true" doc:name="File" />
.....
<!-- Gets the configuration from database using a transformer. The transformer populates the configuration entries in a POJO and puts that in a session. -->
<custom-transformer class="com.test.DbGetConfigsTransformer" doc:name="Get Integration Configs"/>
....<!-- some code to process data -->
<logger message="$$$: #[sessionVars['currentFeed'].getFilePattern()]" doc:name="Set JSON File Name" /> -->
<file:outbound-endpoint path="/temp" outputPattern="#[sessionVars['currentFeed'].getFilePattern()]" responseTimeout="10000" mimeType="text/plain" connector-ref="File-Data" doc:name="Save File"/>
上面的代码抛出以下错误:
1. The filename, directory name, or volume label syntax is incorrect (java.io.IOException)
java.io.WinNTFileSystem:-2 (null)
2. Unable to create a canonical file for /temp/Test_User_#[function:datestamp:YYYYMMddhhmmss.sss] (org.mule.api.MuleRuntimeException)
org.mule.util.FileUtils:354 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MuleRuntimeException.html)
3. Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=file:///temp, connector=FileConnector
在数据库表中,字段名称称为 FilePattern,其值为 'Test_User_#[function:dateamp:YYYYMMddhhmmss.sss]。如果我硬编码该值或将此值移动到 mule 配置文件
file.name=Test_User_#[function:datestamp:YYYYMMddhhmmss.sss]
并使用配置属性语法(例如'outputpattern'中的${file.name}),它可以工作。但是,如果我从 db 中读取相同的内容并使用它,它就无法正常工作并引发错误。记录器显示为(从数据库中读取)
$$$: Test_#[function:datestamp:YYYYMMddhhmmss.sss]
任何帮助深表感谢。