Apache cxf java-first和SOAP模块npm(Apache cxf java-first and SOAP module npm)
我使用默认方法部署了一个cxf-jaxws-javafirst maven项目:HelloWorld.sayHi(String text)。
HTTP://本地主机:8080 / prueba / HelloWorld的WSDL
另一方面,我在带有soap模块的Nodejs上实现了一个soap客户端。
var express = require('express') var app = express() //soap module var soap = require('soap'); //url of the wsdl var url = 'http://localhost:8080/prueba/HelloWorld?wsdl'; //variable var args = {arg0: 'friend'}; app.get('/', function (req, res) { soap.createClient(url, function(err, client) { client.sayHi(args, function(err, result) { res.send(result); }); }); }) var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port console.log('Example app listening at http://%s:%s', host, port) })
我已经尝试将soap消息发送到其他WebService,例如http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl并且我的客户端代码有效,所以我认为我的WebService中有一些错误。
在我的maven项目中,我刚刚在接口声明之上添加了这行代码,用于调试进出Web服务的消息:
@org.apache.cxf.feature.Features(features = "org.apache.cxf.feature.LoggingFeature")
通过这种方式,我得到了输入消息(soap客户端)和输出消息(WebService响应):
输入消息:
mar 05, 2015 1:33:08 PM org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld INFORMACIÓN: Inbound Message ---------------------------- ID: 17 Address: http://localhost:8080/prueba/HelloWorld Encoding: UTF-8 Http-Method: POST Content-Type: text/xml; charset=utf-8 Headers: {Accept=[text/html,application/xhtml+xml,application/xml,text/xml;q=0.9,*/*;q=0.8], accept-charset=[utf-8], accept-encoding=[none], connection=[close], Content-Length=[230], content-type=[text/xml; charset=utf-8], host=[localhost:8080], SOAPAction=[""], user-agent=[node-soap/0.8.0]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://prueba.prueba/"><soap:Body><sayHi><arg0>Hola</arg0></sayHi></soap:Body></soap:Envelope>
输出消息:
mar 05, 2015 1:33:08 PM org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld INFORMACIÓN: Outbound Message --------------------------- ID: 17 Response-Code: 500 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Unexpected wrapper element sayHi found. Expected {http://prueba.prueba/}sayHi.</faultstring></soap:Fault></soap:Body></soap:Envelope>
和Java错误:
mar 05, 2015 1:33:08 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging ADVERTENCIA: Interceptor for {http://prueba.prueba/}HelloWorldImplService#{http://prueba.prueba/}sayHi has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unexpected wrapper element sayHi found. Expected {http://prueba.prueba/}sayHi. at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:106) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:268) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Whit SoapUI,我实现发送字符串:这是InputMessage(Client:SoapUI)。
ID: 18 Address: http://localhost:8080/prueba/HelloWorld Encoding: UTF-8 Http-Method: POST Content-Type: text/xml;charset=UTF-8 Headers: {accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[285], content-type=[text/xml;charset=UTF-8], host=[localhost:8080], SOAPAction=[""], user-agent=[Apache-HttpClient/4.1.1 (java 1.5)]} Payload: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pru="http://prueba.prueba/"> <soapenv:Header/> <soapenv:Body> <pru:sayHi> <!--Optional:--> <arg0>"?"</arg0> </pru:sayHi> </soapenv:Body> </soapenv:Envelope>
我不知道我做错了,我希望有人可以帮助我。
先谢谢你。
I have deployed a cxf-jaxws-javafirst maven project with its default method: HelloWorld.sayHi(String text).
http://localhost:8080/prueba/HelloWorld?wsdl
On the other hand, I have a soap client implemented on Nodejs with soap module.
var express = require('express') var app = express() //soap module var soap = require('soap'); //url of the wsdl var url = 'http://localhost:8080/prueba/HelloWorld?wsdl'; //variable var args = {arg0: 'friend'}; app.get('/', function (req, res) { soap.createClient(url, function(err, client) { client.sayHi(args, function(err, result) { res.send(result); }); }); }) var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port console.log('Example app listening at http://%s:%s', host, port) })
I have try to send soap message to other WebService, e.g. http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl and my client code works, so I think I have some error in my WebService.
In my maven project I have just added this line of code just above the declaration of the interface for debugging messages into and out of my web service :
@org.apache.cxf.feature.Features(features = "org.apache.cxf.feature.LoggingFeature")
In this way I got the input message(soap client) and output message(WebService response):
Input Message:
mar 05, 2015 1:33:08 PM org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld INFORMACIÓN: Inbound Message ---------------------------- ID: 17 Address: http://localhost:8080/prueba/HelloWorld Encoding: UTF-8 Http-Method: POST Content-Type: text/xml; charset=utf-8 Headers: {Accept=[text/html,application/xhtml+xml,application/xml,text/xml;q=0.9,*/*;q=0.8], accept-charset=[utf-8], accept-encoding=[none], connection=[close], Content-Length=[230], content-type=[text/xml; charset=utf-8], host=[localhost:8080], SOAPAction=[""], user-agent=[node-soap/0.8.0]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://prueba.prueba/"><soap:Body><sayHi><arg0>Hola</arg0></sayHi></soap:Body></soap:Envelope>
Output Message:
mar 05, 2015 1:33:08 PM org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld INFORMACIÓN: Outbound Message --------------------------- ID: 17 Response-Code: 500 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Unexpected wrapper element sayHi found. Expected {http://prueba.prueba/}sayHi.</faultstring></soap:Fault></soap:Body></soap:Envelope>
And Java error:
mar 05, 2015 1:33:08 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging ADVERTENCIA: Interceptor for {http://prueba.prueba/}HelloWorldImplService#{http://prueba.prueba/}sayHi has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unexpected wrapper element sayHi found. Expected {http://prueba.prueba/}sayHi. at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:106) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:268) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Whit SoapUI, I achieve send the string: This is the InputMessage (Client: SoapUI).
ID: 18 Address: http://localhost:8080/prueba/HelloWorld Encoding: UTF-8 Http-Method: POST Content-Type: text/xml;charset=UTF-8 Headers: {accept-encoding=[gzip,deflate], connection=[Keep-Alive], Content-Length=[285], content-type=[text/xml;charset=UTF-8], host=[localhost:8080], SOAPAction=[""], user-agent=[Apache-HttpClient/4.1.1 (java 1.5)]} Payload: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pru="http://prueba.prueba/"> <soapenv:Header/> <soapenv:Body> <pru:sayHi> <!--Optional:--> <arg0>"?"</arg0> </pru:sayHi> </soapenv:Body> </soapenv:Envelope>
I do not know I'm doing wrong, I hope someone can help me.
Thank you in advance.
原文:https://stackoverflow.com/questions/28878070
最满意答案
You could use this regex:
<Title>(((?!Ugly).)*(\bGood)((?!Ugly).)*)<\/Title>
This will match any string which contains
Good
AND does not containUgly
.
相关问答
更多-
用这个: (?:(?:\w+ DT )?(?:\w+ JJ )*)?\w+ (?:N[NP]|PRN) 看演示 。 (?:(?:\w+ DT )?(?:\w+ JJ )*)? 可选地匹配DT,接着是零个或更多个目标 '\ w +(?:N [NP] | PRN)'与NN , NP或PRN相匹配 Use this: (?:(?:\w+ DT )?(?:\w+ JJ )*)?\w+ (?:N[NP]|PRN) See demo. (?:(?:\w+ DT )?(?:\w+ JJ )*)? optionally ...
-
假设您要省略Q [number]和任何周围的空格: second_string = first_string.gsub(/\s?Q\d+\s?/, "") 如果要省略Q [编号]而不是周围的空格: second_string = first_string.gsub(/Q\d+/, "") Assuming you want to omit the Q[number] and any surrounding whitespace: second_string = first_string.gsub(/\s ...
-
像这样的东西? let text = """ Good morning Take care black Friday Good morning Take care black Friday Good morning Take care black Friday Good morning Take care black Friday Good morning Take care black Friday """ let phrases = ["Good morning";"Take care";"black ...
-
试试这个: \w+(?=\sis better) 它将匹配除第3输入之外的bike 。 Try this one: \w+(?=\sis better) It will match bike except 3rd input.
-
“let {a,b}:{a:string,b:number} = o”in typeScript(“let { a, b }: { a: string, b: number } = o” in typeScript)[2022-08-15]
您引用的语法分别显式声明局部变量a和b为string和number ,它等效于: let a: string = o.a; let b: number = o.b; 在这个简单的编码情况下,可以很容易地从对象推断出类型,但是您可能有一个不同的类型要分配或从API返回值,您需要说明属性的预期类型。 您正在使用API的更实用的示例可能如下所示: interface MyAPIResponse { a: string; b: number; } httpService.get('endpoin ... -
我们假设您要搜索的字符串是 1208 用户输入的搜索“术语”是 120 那样的模式是 \b120\b \b (单词边界)元字符匹配“单词”的开头和结尾 。 在我们的示例中,这不起作用,因为120 != 1208 模式必须是 \b.*120.*\b 其中.*表示match a variable number of characters (including null) 。 解: 将.* s添加到wildcardToRegex(...)方法,以使此功能开箱即用, 或告诉您的用户搜索*120* ,因为您的 ...
-
基本上你的正则表达式应该是这样的 string input = @"1H|\^&|||ARCHITECT^8.10^F3453010030^H1P1O1R1C1Q1L1|||Admin||||P|1|20150511083525 1D"; string pattern = @"([^\w]*Admin[^\w]*)+|[|\\^&\r\n]+"; string replacement = "|"; Regex rgx = new Regex(pattern); string result = rgx ...
-
如果你用一个正则表达式分割一个字符串,你基本上可以知道字符串应该被切割的位置。 这必然会削减你与正则表达式匹配的东西。 这意味着如果你在\w分割,那么每个字符都是一个分割点,它们之间的子串(全部为空)将被返回。 Java会自动删除尾随的空字符串,如文档中所述 。 这也解释了为什么懒匹配\w*? 会给你每个字符,因为它会匹配任何字符(零宽度)之间(和之前和之后)的每个位置。 剩下的是字符串本身的字符。 让我们分解一下: [az] , \w , \w+? 你的字符串是 abcde 比赛如下: a b c ...
-
与sed : sed -n 's/.*\(2z\(\(.*\)\.\(.*\)\)n9\).*/variable 1 = \L\3\nvariable 2 = \L\4/p' your.file 输出: variable 1 = test1 variable 2 = test2 With sed its: sed -n 's/.*\(2z\(\(.*\)\.\(.*\)\)n9\).*/variable 1 = \L\3\nvariable 2 = \L\4/p' your.file Outp ...
-
你可以使用这个正则表达式:
(((?!Ugly).)*(\bGood)((?!Ugly).)*)<\/Title> 这将匹配任何包含Good AND且不包含Ugly字符串。 实例 You could use this regex: (((?!Ugly).)*(\bGood)((?!Ugly).)*)<\/Title> This will match any string which contains Good AND does not contain Ugly. live e ...