- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在另一台服务器上有一个 .NET ASMX Web 服务,我在另一台服务器上安装了 mule 独立 CE 3.4。我有一个非常简单的流程,需要调用此 .NET Web 服务并传递两个字符串参数。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd">
<custom-transformer returnClass="java.lang.String[]" mimeType="text/plain" class="com.rms.corpapps.utils.WebServiceParamsTransformer" name="Java" doc:name="Java"/>
<http:connector name="httpConnector" enableCookies="true" proxyHostname="myserver" proxyUsername="domain\myusername" proxyPassword="mypassword" proxyPort="80" >
<spring:property name="proxyNtlmAuthentication" value="true"/>
</http:connector>
<flow name="sftestFlow1" doc:name="sftestFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="flows/sftest"/>
<custom-transformer class="com.mycompany.utils.WebServiceParamsTransformer" doc:name="Transform Data for web service" doc:description="This java component prepares the input for web service"/>
<cxf:jaxws-client doc:name="SOAP"
clientClass="com.mycompany.WebServiceListener" port="WebServiceListenerSoap" operation="ProcessExternalMessage"
/>
<outbound-endpoint address="http://myserver/sm/webservicelistener.asmx?wsdl" doc:name="Generic" exchange-pattern="request-response" connector-ref="httpConnector"/>
</flow>
基本上,我公开了一个 http 入站端点(用于测试目的)来调用流程,并使用一个 java 转换器类返回需要传递给 Web 服务的字符串。下面是 WebServiceParamsTransformer 类的代码。
public class WebServiceParamsTransformer extends AbstractTransformer {
@Override
public Object doTransform(Object src, String encoding) throws TransformerException {
Object[] out = new Object[2];
out[0] = "Update Ticket Service";
out[1] = Base64.encode("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><event source=\"SHUB\" target=\"TP\" type=\"SUB8\" version=\"1.0\" timestamp=\"2013-09-16T15:52:14.0000+00.00\"><new-eta-event><incident-number>123456</incident-number><user-name>hari</user-name><eta-timestamp>2013-09-16T15:52:14.0000+00.00</eta-timestamp></new-eta-event></event>");
return out;
}
}
不幸的是,这不起作用 - 我收到以下错误“响应代码:401。未经授权”。以下是错误日志的摘录:
INFO 2013-09-17 13:54:13,396 [[sftest].httpConnector.receiver.02] org.apache.commons.httpclient.auth.AuthChallengeProcessor: **ntlm authentication scheme selected**
INFO 2013-09-17 13:54:13,397 [[sftest].httpConnector.receiver.02] org.apache.commons.httpclient.HttpMethodDirector: **No credentials available for NTLM <any realm>@myserver:80**
INFO 2013-09-17 13:54:13,397 [[sftest].httpConnector.receiver.02] org.mule.transport.http.HttpClientMessageDispatcher: **Received a redirect, but followRedirects=false. Response code: 401 Unauthorized**
WARN 2013-09-17 13:54:13,398 [[sftest].httpConnector.receiver.02] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {http://tempuri.org/}WebServiceListener#{http://tempuri.org/}ProcessExternalMessage has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: **You do not have permission to view this directory or page.**
.NET Web 服务由 Windows 集成身份验证保护,并在 .NET Framework 2.0 的 Windows Server 2008 下的 IIS 7 中运行。这是显示身份验证设置的屏幕截图。
我哪里做错了?我的要求是简单地调用一个由 mule esb 的集成身份验证保护的 Web 服务。非常感谢任何帮助。
最佳答案
这是由于身份验证异常而发生的。
<cxf:jaxws-client operation="Get_Workers"
clientClass="com.saba.workday.ws.human_resources.HumanResourcesService"
port="Human_Resources" wsdlLocation="classpath:Human_Resources.wsdl"
doc:name="Get_Workers">
<cxf:outInterceptors>
<spring:ref bean="CredentialsSupplierBean" />
</cxf:outInterceptors>
</cxf:jaxws-client>
这里的 Credential Supplier 是一个扩展 WSS4JOutInterceptor 的 bean。并进行身份验证。
凭证供应商:
public class CredentialsSupplier extends WSS4JOutInterceptor {
public CredentialsSupplier() {
setProperty("action", "UsernameToken");
setProperty("passwordType", "PasswordText");
}
@Override
public void handleMessage(SoapMessage message) {
super.handleMessage(prepareHandleMessage(message));
}
protected SoapMessage prepareHandleMessage(SoapMessage message) {
message.setContextualProperty("user", "username");
message.setContextualProperty("password", "pswd");
return message;
}
}
关于c# - 从 mule esb 使用 .NET ASMX Web 服务抛出 CXF 异常 : 401 Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860924/
我想将 smooks 集成到 mule ide 中。我们正在尝试从 webmethods 转移到 mule。我们在 smmoks 中有一个可用的 Edi 转换,我们想使用它。我找到了可以集成到 mul
当使用 Mule Maven 插件在 Mule 独立服务器上部署可部署存档时,我间歇性地收到此错误。 Error : Caused by: org.apache.maven.plugin.MojoEx
mule 线程中的默认线程数是多少。例如,如果我在 mule 中创建了一个 http 连接器并且没有指定接收器线程大小,那么它可以处理的最大并发请求数是多少? 最佳答案 默认值为 16。 这个值和其他
早上好,我正在尝试设置一个属性并访问它。但无法访问属性集。 我试图访问从客户端设置的 SplitterAggregator 中的属性。 以下是骡子配置。 以下是客户
我一直在试图弄清楚,入站终点和出站终点究竟是什么。对我来说,这有点难以理解。 骡子流中的入站和出站端点究竟是什么?如果流想要发送消息,则在接收时应使用哪个端点。或者当应用程序想要调用一个流时,它应该与
我有一个要求,我必须将 JSON 数据从一种格式转换为另一种格式。我必须获取 JSON 数组的相应值,并使它们成为键值对。 以下是所需的详细信息: 输入: "Headers": { "Head
我是 mule soft 的新手。我不知道 mule studio 和 mule esb 有什么区别。这两个软件只是看起来一样。 mule studio 是图形表示,我们也可以通过代码生成。我怎样才能
我正在尝试评估 Mule 提供的一组开箱即用的传输,并将其与来自例如ServiceMix 和 OpenESB。 在 Mule 的主页上,我找到了支持的传输列表: http://www.mulesoft
我创建了一个 mule 应用程序,当我使用 mule 3.5.6 CE 运行它时,它在 anypoint studio 中运行良好,但是当我尝试在 mule-standalone-3.6.1 中部署它
我们需要监控 HornetQ 消息(Jboss 的一部分)——监控是在消息到达队列、消息数量、消息消耗、审核消息有效负载方面。 HornetQ 是否公开 JMX Mbean 来监控这个过程? 作为集成
我有一个执行 XSLT 转换的 Mule 流,我已将我的 XSL 样式表放在 src/main/resources/ 中。当我打包我的应用程序并将其部署到 Mule Standalone 实例时,应用
我有用例,我需要加密 src/main/resources 下的属性文件中显示的值。 Mule 提供了一个名为 Mule Credentials Vault 的概念。在该文档中,我们可以在“Mule
我正在将 Mule 1.3 应用程序升级到 Mule 3.2.1(最新版本)。 Mule 1.3 配置文件有一个“model”元素和许多“mule-descriptor”子元素。
我对 Mule Studio 很陌生。 我正面临一个问题。我需要使用 Mule Studio 将数据从 CSV 文件插入到 PostgreSQL 数据库。 我正在使用 Mule Studio CE(版
一段时间以来,每当我通过图形编辑器保存流程时,mule studio 中总是出现 java.lang.assertionError 错误。如果我直接对 XML 进行更改,我不会收到任何错误。有人遇到过
是否有某种方法可以获取已部署的 mule 应用程序的基本 mule 应用程序名称? 到目前为止我发现的仅有的两个选项是: muleContext.getConfiguration().getId()
我正在尝试将我的输入字段与正则表达式相匹配。但它给出了 mule-expression 错误, regex: ^(?:[1-9][0-9]?(?:\.[0-9]{2})?|100(?:\.0{2})?
我是 Mule 的新手,我想了解独立 mule 与嵌入式 mule 之间的区别。我已经阅读了有关此的主题,但我无法回答一个问题。 Mule standalone 是如何工作的?它如何处理网络服务?它有
我想开始有条件的 mule quartz..例如:在 mule peroperties 文件中,我设置了一个 flag=on。如果该标志打开,那么调度程序将启动。如果该标志关闭,则不会调用 sched
我需要检查 JSON 对象中是否存在特定关键字,并在此基础上创建一个字符串。我的示例 dataweave 2.0 代码如下: %dw 2.0 output application/json var a
我是一名优秀的程序员,十分优秀!