Tag: axis2

Axis2生成的Stub是线程安全的吗?

是通过Axis2 1.5.4线程安全的WSDL2JAVA(使用XMLBeans绑定选项)生成的存根吗? 实际上我已经为我通过多个线程调用的Web服务创建了一个Stub。 我已经配置了我自己的MultiThreadedHttpConnectionmanager并设置了HTTPConstants.REUSE_HTTP_CLIENT ,但我在stub._getServiceClient().cleanupTransport看到了一些NullPointerExceptions stub._getServiceClient().cleanupTransport每次调用后调用的stub._getServiceClient().cleanupTransport 。 有时线程也会挂起。 同时我注意到在Web Service操作方法中生成的Stub中,在finally块中已经调用了cleanup()。 我不应该之后调用stub._getServiceClient().cleanupTransport吗? 我的代码: httpConnMgr = new MultiThreadedHttpConnectionManager(); HttpConnectionManagerParams params = httpConnMgr.getParams(); if (params == null) { params = new HttpConnectionManagerParams(); } params.setDefaultMaxConnectionsPerHost(numberOfThreads); httpConnMgr.setParams(params); HttpClient httpClient = new HttpClient(httpConnMgr); service = new Service1Stub(this.endPointAddress); service._getServiceClient().getOptions() .setTimeOutInMilliSeconds(this.timeOut); service._getServiceClient().getOptions() .setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE); service._getServiceClient().getOptions() .setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, Boolean.FALSE); service._getServiceClient() .getOptions() .setProperty(HTTPConstants.SO_TIMEOUT, (int) (this.timeOut)); service._getServiceClient() […]

WCF FaultException 是否支持与Java Web服务错误的互操作

我编写了一个java axis2 1.4.1 Web服务和.net 3.5 WCF客户端,我试图捕获抛出的wsdl错误。 与.net 2.0不同,.net 3.5声称支持wsdl:fault ,服务引用向导确实在客户端代理中生成所有正确的错误类。 但是当我试图捕获一个错误时,它似乎没有正确序列化,所以我只能catch (FaultException ex)而不是我实际使用FaultException抛出的类型FaultException 我查看了我的reference.cs我可以看到向导已经为我的操作添加了正确的FaultContract 。 [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.ServiceModel”, “3.0.0.0”)] [System.ServiceModel.ServiceContractAttribute(Namespace=”http://www.mycomp.com/wsdl/Foo”, ConfigurationName=”FooServiceProxy.Foo”)] public interface Foo { [System.ServiceModel.OperationContractAttribute(Action=”http://www.mycomp.com/Foo/list”, ReplyAction=”*”)] [System.ServiceModel.FaultContractAttribute(typeof(TestWsdlFaultsApp.FooServiceProxy.SimpleFault), Action=”http://www.mycomp.com/Foo/list”, Name=”simpleFault”)] [System.ServiceModel.XmlSerializerFormatAttribute()] TestWsdlFaultsApp.FooServiceProxy.listResponse list(TestWsdlFaultsApp.FooServiceProxy.listRequest request); } 我还需要在.net中做些什么才能让它发挥作用吗? 或者WCF仅支持来自.net Web服务的自定义wsdl错误? inheritance人我的wsdl

使用AXIS2创建的ADB-stub在客户端获取原始XML SOAP响应

我使用AXIS2创建的ADB-stub访问SOAP服务。 我想记录服务返回的任何Axis Fault的原始XML响应。 我可以将这些错误捕获为“ServiceError”。 但是,我找不到一种方法来检索原始XML(参见下面的示例)。 我找到了一种使用getOMElement访问原始XML请求/响应以进行常规处理的方法(参见下面的示例)。 但是,这不适用于故障。 如何使用ADB存根获取原始XML错误? 示例Java代码: public void testRequest(String URL) throws AxisFault { MyServiceStub myservice = new MyServiceStub(URL); MyRequest req = new MyRequest(); try { TypeMyFunctionResponse response = myservice.myFunction(req); // logging full soap response System.out.println(“SOAP Response: ” + response.getOMElement(null, OMAbstractFactory.getOMFactory()) .toStringWithConsume()); } catch (RemoteException e) { //… } catch (ServiceError e) { […]

Axis2 Web服务客户端生成 – 无需修改客户端的类型

是否可以使用Axis2和Eclipse生成Web服务客户端,并使用已包含的Java类型而不是创建自己的类型。 原因当然是如果我已经创建了类型A并且它创建了它自己的类型AI不能只将类型A的变量分配给类型B的变量。 wsdl是从部署到应用程序服务器的Web Service生成的。 如果无法从中生成它,则可以从已存在的java文件生成客户端。

即使正确发送SOAP请求,Axis2也始终接收空参数?

更新:我现在已经解决了这个问题 – 请滚动到底部以获取有关修复的信息 嗨,大家好, 我有一个用Java编写的Web服务,托管在Axis2 / Tomcat / Apache服务器上。 我的客户端软件是用C#编写的。 我对java2wsdl生成wsdl文件的方式有一些恼人的问题,这确实让我在早期遇到了一些麻烦,但是有了这个问题我完全被难倒了。 基本上发生的事情是客户端看到Web服务正常,并发送一个完全有效(或至少,它看起来对我来说有效)带有参数的SOAP请求。 在服务器上,执行正确的Web方法,但参数都为null。 我的Web服务会检测到这一点,并建立一个响应,客户端可以很好地接收和理解。 我的预感是,Axis2在某个地方的表面不尽如人意,但考虑到我对java2wsdl的头痛,也许我需要的只是改变我的wsdl文件。 这是wsdl文件: 这是一个示例请求和响应: 请求: 123456-654321 响应 -101 ERROR: Empty Serial 有没有人知道会出现什么问题? 响应中的错误消息只能在请求中的serialcode参数为空/ null时发送,因此我猜测Axis2读取参数的方式有问题。 任何帮助深表感谢。 ================================================== ========== 如何修复此问题: 这是对Aldo要求提供有关我如何解决此问题的更多信息的回应。 我不确定为什么这个修复工作 – 也许它只是Axis2中的一个错误或其他东西。 无论哪种方式,YMMV,因为我不知道问题是由我的设置或其他原因引起的。 我只能说,通过做到以下几点,一切都开始奏效了。 无论如何,自动生成的WSDL文件为Web请求及其参数创建复杂元素类型,即使唯一的参数是简单类型(如字符串或整数)也是如此。 我所做的是遍历并为参数创建正确的简单类型标记(例如’serialcode’或’date-string’),然后使用对简单类型的引用替换对WSDL文件中其他位置的复杂类型的引用。 一个例子如下: 自动生成的WSDL方法和参数 基本上你应该做的是丢弃自动生成的参数并创建简单类型。 然后,您可以修改“请求”标记以使用“类型”而不是“元素”,并使用新创建的简单类型。 修改/固定WSDL 显然,这取决于你的参数究竟是什么。 在我的例子中,它们都是标准的简单类型,如字符串和整数。 如果您传递的是多个参数,则可能需要保留自动生成的元素,但要确保元素引用简单类型,而不是仅仅将type属性包含为’xs:string’或类似的东西。 道歉我不能更清楚这一点,但正如我之前所说 – 我不知道为什么会这样。 最后一件事:通过删除请求标记中的’element’引用属性 – 您可能会在Axis2日志中收到解析器警告。 到目前为止,这并没有给我带来任何问题,但如果遇到麻烦,需要注意一些问题。

使用Axis2附加客户端证书?

是否可以轻松地将客户端证书附加到使用wsdl2java生成的Axis2存根? 我需要在每个请求的基础上动态更改客户端证书,因此只需将其存储在密钥库中就不适用于我们的情况。 我已经找到了非SOAP调用的示例,但找不到与使用Axis客户端存根相关的任何内容。 尝试破解XML for SOAP调用是一个选项,我猜,albiet是一个痛苦的选择! 呻吟!

在tomcat服务器中部署war文件

我已将sample.war文件复制到tomcat的webapps目录中。 我可以访问localhost:8080。 默认情况下,部署战争是自动的-i已经检查了我的webapps文件夹中的解压缩文件夹“sample” 但它没有被提取。为什么war文件没有被提取。请给我解决方案。

wsimport生成的客户端如何工作?

在此之前,我想让您知道我已经可以连接到Web服务服务器了。 我问这个问题是因为我希望深入了解wsimport生成的客户端是如何工作的。 根据我的研究,wsimport使用JAXWS。 请注意,我不了解JAXWS。 我使用wsimport生成了我的客户端。 我使用的WSDL来自Axis2 Web服务,由Axis2自动生成。 下面的类是wsimport的结果: 在com.datamodel.xsd DataBeanRequest.java DataBeanResponse.java ObjectFactory.java package-info.java 在com.service MyWebService.java MyWebServicePortType.java MyMethod.java MyMethodResponse.java ObjectFactory.java package-info.java 使用上面的类,我可以告诉com.datamodel.xsd包含Web服务服务器使用的bean(不包括ObjectFactory和package-info )。 同时, MyMethod和MyMethodResponse也是用于设置Web服务方法/操作的请求和响应参数的bean。 以下是我的问题:(如果你不知道我的一些问题的答案,你真的不必回答所有问题。:)请随时分享你认为我可能会觉得有用的任何信息。) 我是否正确 我的上述假设是否正确? 其他课程的function是什么? 我检查了MyWebService ,它包含一个注释,指的是我用来生成客户端的WSDL的绝对位置。 在客户端中指定wsdllocation的相关性是什么? 客户如何使用该信息? 我注意到Web服务的实际URL未在生成的任何类中声明。 客户如何知道需要连接的位置? 是否对WSDL文件进行了注释,以便客户端可以在连接时读取WSDL文件上的URL? 如果是这样,那么是否意味着在必须建立新连接时始终读取WSDL文件? 由于我需要编译我的应用程序并将其安装在不同的服务器上,因此将无效。 我可以将它设置为相对路径而不是绝对路径吗? 怎么样? (答案:是的,它可以设置为相对路径wsdllocation命令有一个wsdllocation属性,其中可以指定wsdllocation的值。) 如果我需要连接到HTTPS,该怎么办? 如何设置服务器证书? 使用wsimport生成客户端时以及使用Axis2或Apache CXF生成客户端时有什么不同。

更改soap:地址位置从http到https

是的,我的应用服务器在https上运行。 客户端要求将soap地址从http更改为https。 客户要求每当他想要2通过broswer看到wsdl时,肥皂地址应该是https 我已经在axis2.xml中添加了这个… 8443 我在service.xml中添加了以下内容 HTTPS 关闭标签后,它给我下面的错误。 它给了我例外 org.apache.axis2.deployment.DeploymentException: Service [ RTAPDevService] is trying to expose in a transport : HTTPS and which is not available in Axis2 –

使用Axis2 / Java创建SSL客户端

我正在尝试连接到使用SSL的WebService但没有成功。 我使用Axis2,我发现了一些有用的文章: http : //people.apache.org/~dumindu/docs/HowToConfigureSSL.html ,但它适用于C.在本文中,他们使用axis2设置了SERVER_CERT,KEY_FILE和SSL_PASSPHRASE。 xml或C编码。 我试图更改配置文件,但这对我不起作用。 如果有人知道如何从Java代码中设置这些参数,请告诉我。