如何在Mac OS X 10.9中设置永久环境变量(即每次启动新的终端会话时不需要导出的变量)?我已经找到了一些答案的有关修改我.bash_profile和.profile,然而没有这些选择似乎为永久解决方案的工作-只是暂时的.我想要设置的变量是MULE_HOME.我的bash配置文件中有以下行:
export MULE_HOME=$(/opt/mule-standalone-3.4.0)
Run Code Online (Sandbox Code Playgroud)
但是,当我启动终端时,我得到以下行(不确定这是否是正常行为?):
-bash: /opt/mule-standalone-3.4.0: is a directory
Run Code Online (Sandbox Code Playgroud)
并运行一个简单的env命令返回以下内容:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/fc/68bqp4jj411gynj5qvwhq6z1shs1fy/T/
Apple_PubSub_Socket_Render=/tmp/launch-xKtkql/Render
TERM_PROGRAM_VERSION=326
TERM_SESSION_ID=E97BFE4B-AF85-4933-B252-0883CC085349
USER=dan
SSH_AUTH_SOCK=/tmp/launch-rEmTWW/Listeners
__CF_USER_TEXT_ENCODING=0x730C85DE:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
__CHECKFIX1436934=1
PWD=/Users/dan
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
LANG=en_GB.UTF-8
MULE_HOME=
SHLVL=1
HOME=/Users/dan
LOGNAME=danwiseman
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我export MULE_HOME=/opt/mule-standalone-3.4.0每次开始新的终端会议时都要输入,虽然不费劲,但有点不方便.我在这里做错了什么导致变量只能暂时设置?提前致谢.
我正在使用Mule架构验证过滤器来针对给定方案验证传入的XML文件.以下是我对架构组件的配置:
<mulexml:schema-validation-filter schemaLocations="${app.home}/classes/schemas/Library.xsd" doc:name="Schema Validation"/>
我遇到的问题是,当文件无法验证模式时,Mule会静默阻止消息继续 - 即不会抛出错误/异常.通过一些实验,我发现如果我将以下内容添加到log4j.properties文件中,我可以在架构验证中看到"错误":
log4j.logger.org.mule.module.xml.filters.SchemaValidationFilter=DEBUG
由于这些错误是'DEBUG'级别日志并且没有抛出实际异常,因此我的流程不会恢复为我配置的异常策略.
所以我的问题是......
如果模式验证中存在错误,我可以在这里做些什么来使Mule恢复为异常策略吗?我在文件无法验证时看到的调试日志下面有一份副本.提前致谢.
DEBUG 2014-04-15 11:19:20,705 [[processes].orderInputFileConnector.receiver.01] org.mule.module.xml.filters.SchemaValidationFilter: SchemaValidationFilter rejected a message because it apparently failed to validate against the schema.
org.xml.sax.SAXParseException: cvc-pattern-valid: Value 'string' is not facet-valid with respect to pattern '[A-Z]{2}' for type 'countryISOA2'.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.elementLocallyValidType(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.processElementContent(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleEndElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown Source)
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.finishNode(Unknown …Run Code Online (Sandbox Code Playgroud) 如何清除有效负载/在Mule中将其设置为null?我一直在用:
<set-payload value="" doc:name="Set Payload"/>
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到我使用Mule Studio中的GUI向我的流添加元素,然后元素更改为以下,这会引发错误:
<set-payload doc:name="Set Payload"/>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我有一个Mule流,它正在数据库中查找值,并以映射格式(作为ArrayList)返回结果。然后,在进行数据库调用以检查响应后,我将直接记录有效负载。良好回应的一个例子是:
org.mule.api.processor.LoggerMessageProcessor: [{ID=1234567, NAME=Test}]
Run Code Online (Sandbox Code Playgroud)
我想在流程的下一阶段包括一个选择元素,以处理未找到记录的响应,如下所示:
org.mule.api.processor.LoggerMessageProcessor: []
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将使用哪个表达式来引导流程?我尝试过#[payload==''],#[payload=='[]'并#[payload==null]没有成功。提前致谢。
我正在使用XSLT对一些相当复杂的XML执行转换.为了实现我需要的输出,我必须创建一个嵌套的for循环,如下所示:
源XML
<root>
<element1>
<child>
<aaa></aaa>
<bbb></bbb>
</child>
</element1>
<element2/>
<element3/>
<element3/>
<element3/>
</root>
Run Code Online (Sandbox Code Playgroud)
XSLT
<xsl:for-each select="element3">
<!-- Do some stuff -->
<xsl:for-each select="../element1/child/*">
<!-- Do some more stuff -->
</xsl:for-each>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
问题
我在这里尝试做的是在我的嵌套循环(on ../element1/child/*)中 - 我想找出:
<bbb>那么这个位置(我认为)将是'1'element3)的位置 - 所以,例如,如果我在第三个实例上<element3>,然后循环../element1/child/*并专注于<aaa>- 我将要追求的两个值将是'2'和'0'.理想情况下,我希望能够将这些值分配给变量.我尝试使用position()下面的符号,但这似乎不起作用.
<xsl:for-each select="../element1/child/*">
<xsl:variable name="postion_current_loop" select="position()"/>
<xsl:variable name="postion_parent_loop" select="??????"/>
<!-- Do some more stuff -->
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
如果有人对如何实现这一点有任何想法,将不胜感激!我正在使用XSLT 2.0,但如果需要,我可以使用XSLT 1.0开放解决方案.提前致谢.
我有一个Mule应用程序,其中包含许多执行各种操作的流程.其中一个流连接到外部MySQL数据库以检索信息.如果与此数据库的连接失败,我的Mule应用程序将无法启动,并且我的其他任何非错误的流都不会启动.
有没有办法我可以将Mule配置为在连接失败的情况下还原到连接到外部数据库的流的异常策略,或者还有其他错误,以便所有其他流将正常运行?