- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当使用此代码发送我的 soap xml 时,我想通过 TCP 传输向代理服务发送请求
Socket clientSocket = new Socket("host", port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes("soap xml instance");
clientSocket.close();
它运行良好,我的业务仍在继续。
但是当我在不关闭套接字的情况下发送两个 xml 时:
Socket clientSocket = new Socket("host", port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes("soap xml instance");
outToServer.writeBytes("another soap instance");
clientSocket.close();
它总是抛出这个异常:
TID: [0] [ESB] [2013-06-28 13:36:10,838] ERROR {org.apache.axis2.transport.tcp.TCPWorker} - Error while processing TCP request through the Axis2 engine {org.apache.axis2.transport.tcp.TCPWorker} org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxParsingException: Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs. at [row,col {unknown-source}]: [2,5] at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) at org.apache.axiom.om.impl.llom.OMDocumentImpl.buildNext(OMDocumentImpl.java:135) at org.apache.axiom.om.impl.llom.OMNodeImpl.getNextOMSibling(OMNodeImpl.java:122) at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:343) at org.apache.axiom.om.impl.traverse.OMChildrenIterator.getNextNode(OMChildrenIterator.java:36) at org.apache.axiom.om.impl.traverse.OMAbstractIterator.hasNext(OMAbstractIterator.java:58) at org.jaxen.util.DescendantAxisIterator.hasNext(DescendantAxisIterator.java:101) at org.jaxen.expr.DefaultStep.evaluate(DefaultStep.java:152) at org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:140) at org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPath.java:113) at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102) at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:674) at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:213) at org.jaxen.BaseXPath.evaluate(BaseXPath.java:172) at org.apache.synapse.util.xpath.SynapseXPath.stringValueOf(SynapseXPath.java:297) at org.apache.synapse.mediators.builtin.PropertyMediator.getResultValue(PropertyMediator.java:299) at org.apache.synapse.mediators.builtin.PropertyMediator.mediate(PropertyMediator.java:95) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:154) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.axis2.transport.tcp.TCPWorker.run(TCPWorker.java:68) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs. at [row,col {unknown-source}]: [2,5] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:479) at com.ctc.wstx.sr.BasicStreamReader.readPIPrimary(BasicStreamReader.java:3903) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2037) at com.ctc.wstx.sr.BasicStreamReader.closeContentTree(BasicStreamReader.java:2886) at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2629) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1062) at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34) at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) ... 25 more
我曾在我的消息中附加“\n”、“\r\n”,但没有一个能做到这一点。
我还尝试使用此链接中说明的方法。 How to Send SOAP Messages Using TCP Transport并且效果很好。
但是我无法在我的项目中使用那种 api。我怎样才能摆脱这个问题。
最佳答案
我能够使用示例客户端向 ESB 发送 TCP 消息,但您必须确保发送 XML 元素。
首先确保你已经在axis2.xml (repository/conf/axis2/axis2.xml) 中为tcp 启用传输接收器
<transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportListener" >
========================我的代理服务接收 TCP 消息 ===========
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="TCPProxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<parameter name="transport.tcp.port">6789</parameter>
<parameter name="transport.tcp.contentType">application/xml</parameter>
<description/>
</proxy>
==向TCP服务器发送消息的客户端====
import java.io.*;
import java.net.*;
class TCPClient {
String host = "localhost";
int port = 6789;
Socket socket = null;
public static void main(String args[]) throws Exception{
String name ="Amani";
TCPClient client = new TCPClient();
String message = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
"<soapenv:Header/>\n" +
"<soapenv:Body>\n" +
" <p:greet xmlns:p=\"http://greet.service.amani.org\">\n" +
" <in>" + name + "</in>\n" +
" </p:greet>\n" +
"</soapenv:Body>\n" +
"</soapenv:Envelope>";
client.SendToServer("<test></test>");
client.close();
}
TCPClient(String _host, int _port) throws Exception{
host = _host;
port = _port;
socket = new Socket(host, port);
}
TCPClient() throws Exception{
socket = new Socket(host, port);
}
void SendToServer(String msg) throws Exception{
//create output stream attached to socket
PrintWriter outToServer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
//send msg to server
outToServer.print(msg + '\n');
outToServer.flush();
}
String RecieveFromServer() throws Exception{
//create input stream attached to socket
BufferedReader inFromServer = new BufferedReader(new InputStreamReader (socket.getInputStream()));
//read line from server
String res = inFromServer.readLine(); // if connection closes on server end, this throws java.net.SocketException
return res;
}
void close() throws IOException{
socket.close();
}
}
关于sockets - 代理 wso2 esb 中的 TCP 传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362982/
在之前的工作中,有很多关于“企业服务总线”(ESB) 的讨论。我读了一本关于它的概念书的部分内容,但从未真正理解如何具体实现/集成它。我熟悉 SOA/队列/目录服务/等。但我不明白 ESB 到底是什么
我正在使用 Mule ESB 公开 CXF 服务,我需要将请求按原样传递给条件路由器。我看到的大多数示例都将响应传递给条件路由器。 如何在不更改 wsdl 的情况下转发请求? 最佳答案 当 OP 给出
谁能告诉我MQ(消息队列)和ESB(企业服务总线)有什么区别?我知道两者都提供进程间通信和处理消息传递,但在互联网上没有那么多信息,每个人都以不同的方式描述它。我也不知道 Message broker
我创建了一个具有一个端点的自定义路由器。自定义路由器根据入站 URL 的 URL 参数查找端点的目标。我有一个正在运行的示例,我正在浏览器中对其进行测试。我正在尝试解决最后一件事。当我使用 http:
我将一系列服务分组为 Carbon 应用程序,然后将其部署在 WSO2 ESB 上。如果这些服务之一在部署期间失败,则其他服务都不会部署在 ESB 上,而是在重试时出现 Service laready
谁能告诉我MQ(消息队列)和ESB(企业服务总线)有什么区别?我知道两者都提供进程间通信和处理消息传递,但在互联网上没有那么多信息,每个人都以不同的方式描述它。我也不知道 Message broker
JBPM 和 BPEL(和 ESB)有什么区别? 你能解释一下吗? RGDS 最佳答案 我对 JBPM 不太熟悉。但它似乎是一个业务工作流,可以与 Java 服务或基本上基于 Java 的流程一起使用
因此,使用 Mule ESB,我正在 Bing 中搜索某些 PDF 文件。然后我解析 JSON 响应以捕获文件位置的 URL。现在我需要检索文件并保存在本地。以下是我到目前为止所拥有的,但我有一种感觉
这个问题不好问。所以我会尽力问清楚。 我们已经有一个企业 SOA 套件 10G 系统正在运行。 一个小过程,我就这样解释。 Consumer->ESB->BPEL->ESB->Provider Web
我可以在任何应用服务器上部署 Mule。如果是这样,我们如何部署 Mule 示例。 我已将我的 eclipse 配置为运行 JBoss,并且 Mule Flows 不会部署在 JBOss 服务器中。同
我有一个 Mule 应用程序,我在其中向多个 WebServices 发送请求并聚合我得到的响应列表,这个想法是通过从处理列表的 CustomJavaClass 返回它来获取列表的第一个响应: ret
使用 Mule ESB 我注意到您可以(通过任意点连接器)连接应用程序、数据库、Web 服务等。由于我在不同的 ESB(企业服务总线)之间进行比较,我遇到了 WSO2 ESB 并阅读了文档,它似乎只允
我正在构建一个基于 REST 的 Web 服务(有些可能是基于 Soap 的)并且将由外部代理调用。代理是我们网络之外的任何软件。 我正在考虑两种选择 i) 在 esb 外部的容器上运行 Web 服务
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我在 mysql 中创建了一个 SP,它接受 6 个输入参数并给出 2 个输出参数。我想从数据库查找中调用它。我不知道该怎么做。我尝试过不同的 2 代码,但没有成功。请帮忙。 突触代码:
我正在调用下面播种的其余服务
您在何处、何时以及为何在 PHP 项目中使用 ESB? 您认为在 PHP 项目中使用 ESB 有意义的地点、时间和原因? ESB(和 ESB 促进器,如 Mule)是否提供了 PHP 和原生 LAMP
我一直在 SO 和 Mule 论坛上苦苦挣扎,但找不到有效的解决方案。 esb 接收包含一个 id 的单个请求,该请求创建一个 XML 负载,该负载由相关 id 列表组成。然后将此 XML 有效负载拆
我和我的团队将致力于 APIGEE,这是一个 API 开发平台,用于在我们的应用程序中公开一些服务。我正在浏览他们的文档,并试图了解 APIGEE 或任何其他 API 开发平台(如 Mashery)的
我试图了解 ESB Mediation是,确切地说(具体例子),并且正在撞墙。 根据维基百科,数据中介重定向到 Data Transformation文章,唯一提到调解是模糊和神秘的: When th
我是一名优秀的程序员,十分优秀!