- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 Java 客户端调用 SOAP API 以在 Identity Server 中创建服务提供程序。
我已在服务器上启用管理服务,并使用 Apache CXF codegen 插件从位于 /services/IdentityApplicationManagementService?wsdl
的 WSDL 文件生成 stub ,如所述 here (注意:文档适用于 5.9.0,但应该与我的 IDS 版本非常相似)
我可以成功调用其他端点,例如列出所有可用的服务提供商,如下所示:
public static void listAllApplications() throws IdentityApplicationManagementServiceIdentityApplicationManagementException {
IdentityApplicationManagementService service = new IdentityApplicationManagementService();
IdentityApplicationManagementServicePortType port = service.getIdentityApplicationManagementServiceHttpsSoap12Endpoint();
Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
List<ApplicationBasicInfo> allApplicationBasicInfo = port.getAllApplicationBasicInfo();
allApplicationBasicInfo.forEach((info) -> {
System.out.println(info.getApplicationName().getValue());
});
}
但是当我尝试创建新的服务提供商时
public static void createApplication() throws IdentityApplicationManagementServiceIdentityApplicationManagementException {
CreateApplication serviceProviderRequest = new axis2.apache.org.xsd.ObjectFactory().createCreateApplication();
org.wso2.carbon.identity.application.common.model.xsd.ObjectFactory applicationObjectFactory
= new org.wso2.carbon.identity.application.common.model.xsd.ObjectFactory();
ServiceProvider serviceProvider = applicationObjectFactory.createServiceProvider();
serviceProvider.setApplicationName(applicationObjectFactory.createApplicationBasicInfoApplicationName("SOAP"));
serviceProvider.setDescription(applicationObjectFactory.createApplicationBasicInfoDescription("Java"));
serviceProviderRequest.setServiceProvider(convertToJAXBElement(serviceProvider));
IdentityApplicationManagementService service = new IdentityApplicationManagementService();
IdentityApplicationManagementServicePortType port = service.getIdentityApplicationManagementServiceHttpsSoap12Endpoint();
Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
port.createApplication(serviceProviderRequest);
}
public static JAXBElement<ServiceProvider> convertToJAXBElement(ServiceProvider provider) {
if (null == provider) {
return null;
}
QName name = new QName("http://script.model.common.application.identity.carbon.wso2.org/xsd", "ServiceProvider");
return new JAXBElement(name, ServiceProvider.class, provider);
}
这是此调用生成的请求
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Body>
<ns4:createApplication xmlns:ns4="http://org.apache.axis2/xsd" xmlns="http://model.common.application.identity.carbon.wso2.org/xsd" xmlns:ns2="http://script.model.common.application.identity.carbon.wso2.org/xsd" xmlns:ns3="http://common.application.identity.carbon.wso2.org/xsd">
<ns2:ServiceProvider>
<applicationName>SOAP</applicationName>
<description>Java</description>
</ns2:ServiceProvider>
</ns4:createApplication>
</S:Body>
</S:Envelope>
我在客户端收到以下错误:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">1</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
客户端的日志报告如下:
Exception in thread "main" com.sun.xml.internal.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: 1 Please see the server log to find more detail regarding exact cause of the failure.
at com.sun.xml.internal.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:214)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)
at com.sun.xml.internal.ws.client.sei.StubHandler.readResponse(StubHandler.java:238)
at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:189)
at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:276)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:104)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
at com.sun.proxy.$Proxy37.createApplication(Unknown Source)
at myApp.Main.createApplication(Main.java:60)
at myApp.Main.main(Main.java:32)
身份服务器上的服务器日志 (wso2carbon.log) 报告以下内容:
TID: [3] [] [2019-10-16 11:17:47,158] username [3] [IS] INFO {org.wso2.carbon.core.services.util.CarbonAuthenticationUtil} - 'username [3]' logged in at [2019-10-16 11:17:47,158+0300]
TID: [3] [] [2019-10-16 11:17:47,161] username [3] [IS]ERROR {org.apache.axis2.rpc.receivers.RPCMessageReceiver} - 1
java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:662)
at org.apache.axis2.rpc.receivers.RPCUtil.processRequest(RPCUtil.java:153)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:206)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:148)
at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
// Ommitted...
我在客户端使用 WSO2 Identity Server 版本 5.8 和 Java 8。
我没有搞乱 Axis2 或 Identity Server 上的任何相关内容,这是在全新安装中发生的。据我了解,这要么是我做错了(最有可能),要么是 Axis2 库中的错误,但我陷入了困境。如果需要,我可以提供任何其他所需的文件,例如 WSDL。请指教。
最佳答案
事实证明这是我的一个错误,特别是在 convertToJAXBElement()
方法上。
我输错了 QName
的本地部分。将其编辑为
public static JAXBElement<ServiceProvider> convertToJAXBElement(ServiceProvider provider) {
if (null == provider) {
return null;
}
QName name = new QName("http://script.model.common.application.identity.carbon.wso2.org/xsd", "serviceProvider"); // Note the localpart
return new JAXBElement(name, ServiceProvider.class, provider);
}
似乎已经解决了问题。
关于java - 尝试在 WSO2 Identity Server 中创建 ServiceProvider 时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408905/
在 .NET Core Console 应用程序中,我想使用内置的依赖注入(inject),包括自动处理链中的 IDisposable 对象。在 ASP.NET Core 中,对象是随每个请求创建和释
我有一个关于 Laravel 的问题。使用ServiceProviders的区别在哪里?或 Middleware在 Laravel 中? 所以我的意思是,我什么时候使用 ServiceProvider
我创建了这个提供程序: php artisan make:provider ShortcodesServiceProvider 然后我不得不删除该文件,但现在我得到了 FatalThrowableEr
我正在权衡在独立包中测试我的 ServiceProvider 的利弊。 由于 laravel 应用程序不是包的依赖项,我认为我不应该/不能编写集成测试。 但有时我在使用语句中出现拼写错误,导致我只为这
我正在使用这种方法构建服务实现: 我正在使用 Microsoft.Extensions.DependencyInjection 并尝试实现以下目标: 创建本地 ServiceCollection 并保
文件:Composer.json --------------------------------------- { "name": "laravel/laravel",
我有asp.net 核心应用程序。我将 Options 存储在 appsettings.json 文件中。我向服务注册了 Options,然后尝试在 Configure 方法中解决它。 但是服务提供商
设置:在我们公司,我尝试将基于 Ant 的 Netbeans 应用程序迁移到 Maven。我有一个基于 Maven 的 Netbeans 平台应用程序和两个包含 Netbeans 模块的 Maven
我觉得我已经搜索了整个互联网,但似乎无法弄清楚这个问题。我正在使用 Silex(最新版本),似乎无法弄清楚如何使用 Silex 的 ServiceProvider 系统返回一个类的实例以供使用。 我确
所以我有一个 Laravel 服务提供者,我想在应用它时创建一个 DEBUG 日志条目: app['log']->debug('message'); //fails too } } 如何做到这
如果您编写自己的 MarkupExtension,您可能会偶然发现 IServiceProvider serviceProvider 参数在设计时与运行时不同。例如,您无法获取 IRootObject
我为 paypal 创建了一个自定义服务提供商。当我尝试从提供者内部访问配置时,它返回 null。 下面是我写的代码。 public function register() { $this->
我正在用 Laravel 编写一个小 API,部分目的是为了学习这个框架。我想我在文档中发现了一个漏洞,但这可能是因为我不理解“Laravel 方式”来做我想做的事。 我正在编写一个 HTTP API
我正在研究 Laravel 5.2 中的 api 部分,并尝试从 Strava 获取详细信息。正如此链接中提到的 http://socialiteproviders.github.io/provide
我是 PHP 和 Laravel 的新手。我按照本教程将 reCAPTCHA 支持添加到我的 Laravel 应用程序中的页面: http://tutsnare.com/how-to-use-capt
我在 .NET 4.6.2 上有一个 Windows 服务,我在其中使用 .NET ServiceProvider(System.IServiceProvider 接口(interface))将 EF
我想改变路由的路径,但它仍然给出错误 Class HomeController does not exist 下面是我的代码 In app/Http/routes.php page Route::ge
有什么好办法可以拿到ServiceProvider在 AddOpenIdConnect , 或 稍后在我们完全设置 DI 容器的地方配置 ClientSecret? (例如在 Configure(IA
我编写了一个 aspnet core 控制台应用程序,该应用程序将 Entity Framework Core 与 SQL Server 结合使用。该应用程序有多个 Azure 服务总线队列客户端,我
friend 们大家好,我是 Laravel 框架的新手。 我在应用程序文件夹中创建模块目录。 然后我还在模块目录中创建 ServiceProvider.php 文件。 我的文件结构如下。 app\m
我是一名优秀的程序员,十分优秀!