You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Freeman Fang <fr...@gmail.com> on 2009/04/15 04:49:36 UTC
Re: servicemix store database ??
Hi,
One basic rule is all message send to this mailling list should be in
English, so that more people can understand and help you. :-)
Cheers
Freeman
gaoming25@gmail.com wrote:
> 环境:servicemix3.3 + sun 的 JDBC组件 + file 组件
>
> 我想实现的功能是:通过jdbc组件,写一个wsdl文件,读取数据库表person,把得到的记录生成一个xml文件,最后读取这个xml文件写入另
> 一张表person_bak中,现在的情况是可以读取person记录,也可以生成一个xml文件,但是在读取xml文件写入到person_bak表
> 中时,产生异常,数据不能写入。
>
>
> wsdl文件如下:
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions name="jdbc-example"
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:jdbc="http://schemas.sun.com/jbi/wsdl-extensions/jdbc/"
> xmlns:ns="http://j2ee.netbeans.org/xsd/tableSchema"
> xmlns:tns="http://www.njusoft.com/datachange/jdbc"
> targetNamespace="http://www.njusoft.com/datachange/jdbc">
>
> <!--http://esbinaction.com/chapter6/jdbc-->
> <!-- import the types which represent the table in the database -->
> <types>
> <xsd:schema>
> <xsd:import namespace="http://j2ee.netbeans.org/xsd/tableSchema"
> schemaLocation="PERSON.xsd" />
> </xsd:schema>
> </types>
>
> <!-- define the messages which are sent and returned from this
> service -->
> <message name="inputMsg">
> <part name="part" element="ns:PERSON" />
> </message>
> <message name="insertRetMsg">
> <part name="part" type="xsd:int" />
> </message>
> <message name="outputMsg">
> <part name="part" element="ns:PERSON" />
> </message>
>
> <!-- define the operations for the interfaces -->
> <portType name="jdbcInsertPortType">
> <operation name="insert">
> <input name="inputInsert" message="tns:inputMsg" />
> <output name="outputInsert" message="tns:insertRetMsg" />
> </operation>
> </portType>
> <portType name="jdbcPollerPortType">
> <operation name="pollrecords">
> <input name="inputPoll" message="tns:inputMsg" />
> <output name="outputPoll" message="tns:outputMsg" />
> </operation>
> </portType>
>
> <!-- define the binding/implementation for the interface definition
> -->
> <binding name="insertBinding" type="tns:jdbcInsertPortType">
> <jdbc:binding />
> <operation name="insert">
> <jdbc:operation/>
> <input name="inputInsert">
> <jdbc:input PKName="ID" TableName="PERSON_BAK"
> Transaction="NOTransaction"
> operationType="insert" paramOrder="id, name, processed"
> sql="INSERT into PERSON_BAK (id, name, processed) values
> (?,?,?)" />
> </input>
> <output name="outputInsert">
> <jdbc:output returnPartName="part" />
> </output>
> </operation>
> </binding>
>
> <!-- define the binding/implementation for the interface definition --
>
> <binding name="pollerBinding" type="tns:jdbcPollerPortType">
> <jdbc:binding />
> <operation name="pollrecords">
> <jdbc:operation />
> <input name="inputPoll">
> <jdbc:input PKName="ID" PollMilliSeconds="5000"
> PollingPostProcessing="MarkColumn"
> MarkColumnName="PROCESSED"
> MarkColumnValue="2" TableName="PERSON" numberOfRecords="2"
> operationType="poll" Transaction="NOTransaction"
> sql="SELECT * FROM PERSON where processed = 0" />
> </input>
> <output name="outputPoll">
> <jdbc:output returnPartName="part" />
> </output>
> </operation>
> </binding>
>
> <!-- define the service with two ports -->
> <service name="jdbc-service">
> <port name="insertPort" binding="tns:insertBinding">
> <jdbc:address jndiName="java:comp/env/jdbc/defaultDS" />
> </port>
> <port name="pollerPort" binding="tns:pollerBinding">
> <jdbc:address jndiName="java:comp/env/jdbc/defaultDS" />
> </port>
> </service>
> </definitions>
>
>
> 这个是对表person的描述格式。
> 相应的描述文件person.xsd如下:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema elementFormDefault="qualified" targetNamespace="http://
> j2ee.netbeans.org/xsd/tableSchema" xmlns="http://j2ee.netbeans.org/xsd/
> tableSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <xsd:element name="PERSON" type="PERSON"></xsd:element>
> <xsd:complexType name="PERSON">
> <xsd:sequence maxOccurs="unbounded">
> <xsd:element name="ID" type="xsd:string"></xsd:element>
> <xsd:element name="NAME" type="xsd:string"></xsd:element>
> <xsd:element name="PROCESSED" type="xsd:boolean"></
> xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
>
>
> 读取person表中记录,生成的xml文件servicemix-24532545.xml如下:
> <?xml version="1.0" encoding="UTF-8"?>
> <jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-
> wrapper"
> xmlns:msgns="http://www.njusoft.com/datachange/jdbc"
> name="inputPoll"
> type="msgns:inputMsg" version="1.0">
> <jbi:part>
> <PERSON xmlns="http://j2ee.netbeans.org/xsd/tableSchema">
> <PERSON_Record>
> <ID>1</ID>
> <NAME>mysqlservicemixdb1</NAME>
> <PROCESSED>0</PROCESSED>
> </PERSON_Record>
> </PERSON>
> </jbi:part>
> </jbi:message>
>
> 可以看出,servicemix-24532545.xml和上面的person.xsd相比,多个<PERSON_Record>属性。
> 我测试过了,如果把<PERSON_Record>删除,则,servicemix可以通过file组件读取
> servicemix-24532545.xml,并且插入该条记录到表person_bak中。
>
> 希望各位老大,可以帮帮我,怎么才能实现文件的完全写入。
>
--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com
Re: servicemix store database ??
Posted by "gaoming25@gmail.com" <ga...@gmail.com>.
thanks !
i see,I hope who can help me!!
Freeman Fang wrote:
>
> Hi,
>
> One basic rule is all message send to this mailling list should be in
> English, so that more people can understand and help you. :-)
> Cheers
>
> Freeman
>
> gaoming25@gmail.com wrote:
>> 环境:servicemix3.3 + sun 的 JDBC组件 + file 组件
>>
>> 我想实现的功能是:通过jdbc组件,写一个wsdl文件,读取数据库表person,把得到的记录生成一个xml文件,最后读取这个xml文件写入另
>> 一张表person_bak中,现在的情况是可以读取person记录,也可以生成一个xml文件,但是在读取xml文件写入到person_bak表
>> 中时,产生异常,数据不能写入。
>>
>>
>> wsdl文件如下:
>>
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <definitions name="jdbc-example"
>> xmlns="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:jdbc="http://schemas.sun.com/jbi/wsdl-extensions/jdbc/"
>> xmlns:ns="http://j2ee.netbeans.org/xsd/tableSchema"
>> xmlns:tns="http://www.njusoft.com/datachange/jdbc"
>> targetNamespace="http://www.njusoft.com/datachange/jdbc">
>>
>> <!--http://esbinaction.com/chapter6/jdbc-->
>> <!-- import the types which represent the table in the database -->
>> <types>
>> <xsd:schema>
>> <xsd:import namespace="http://j2ee.netbeans.org/xsd/tableSchema"
>> schemaLocation="PERSON.xsd" />
>> </xsd:schema>
>> </types>
>>
>> <!-- define the messages which are sent and returned from this
>> service -->
>> <message name="inputMsg">
>> <part name="part" element="ns:PERSON" />
>> </message>
>> <message name="insertRetMsg">
>> <part name="part" type="xsd:int" />
>> </message>
>> <message name="outputMsg">
>> <part name="part" element="ns:PERSON" />
>> </message>
>>
>> <!-- define the operations for the interfaces -->
>> <portType name="jdbcInsertPortType">
>> <operation name="insert">
>> <input name="inputInsert" message="tns:inputMsg" />
>> <output name="outputInsert" message="tns:insertRetMsg" />
>> </operation>
>> </portType>
>> <portType name="jdbcPollerPortType">
>> <operation name="pollrecords">
>> <input name="inputPoll" message="tns:inputMsg" />
>> <output name="outputPoll" message="tns:outputMsg" />
>> </operation>
>> </portType>
>>
>> <!-- define the binding/implementation for the interface definition
>> -->
>> <binding name="insertBinding" type="tns:jdbcInsertPortType">
>> <jdbc:binding />
>> <operation name="insert">
>> <jdbc:operation/>
>> <input name="inputInsert">
>> <jdbc:input PKName="ID" TableName="PERSON_BAK"
>> Transaction="NOTransaction"
>> operationType="insert" paramOrder="id, name, processed"
>> sql="INSERT into PERSON_BAK (id, name, processed) values
>> (?,?,?)" />
>> </input>
>> <output name="outputInsert">
>> <jdbc:output returnPartName="part" />
>> </output>
>> </operation>
>> </binding>
>>
>> <!-- define the binding/implementation for the interface definition --
>>
>> <binding name="pollerBinding" type="tns:jdbcPollerPortType">
>> <jdbc:binding />
>> <operation name="pollrecords">
>> <jdbc:operation />
>> <input name="inputPoll">
>> <jdbc:input PKName="ID" PollMilliSeconds="5000"
>> PollingPostProcessing="MarkColumn"
>> MarkColumnName="PROCESSED"
>> MarkColumnValue="2" TableName="PERSON" numberOfRecords="2"
>> operationType="poll" Transaction="NOTransaction"
>> sql="SELECT * FROM PERSON where processed = 0" />
>> </input>
>> <output name="outputPoll">
>> <jdbc:output returnPartName="part" />
>> </output>
>> </operation>
>> </binding>
>>
>> <!-- define the service with two ports -->
>> <service name="jdbc-service">
>> <port name="insertPort" binding="tns:insertBinding">
>> <jdbc:address jndiName="java:comp/env/jdbc/defaultDS" />
>> </port>
>> <port name="pollerPort" binding="tns:pollerBinding">
>> <jdbc:address jndiName="java:comp/env/jdbc/defaultDS" />
>> </port>
>> </service>
>> </definitions>
>>
>>
>> 这个是对表person的描述格式。
>> 相应的描述文件person.xsd如下:
>> <?xml version="1.0" encoding="UTF-8"?>
>> <xsd:schema elementFormDefault="qualified" targetNamespace="http://
>> j2ee.netbeans.org/xsd/tableSchema" xmlns="http://j2ee.netbeans.org/xsd/
>> tableSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>> <xsd:element name="PERSON" type="PERSON"></xsd:element>
>> <xsd:complexType name="PERSON">
>> <xsd:sequence maxOccurs="unbounded">
>> <xsd:element name="ID" type="xsd:string"></xsd:element>
>> <xsd:element name="NAME" type="xsd:string"></xsd:element>
>> <xsd:element name="PROCESSED" type="xsd:boolean"></
>> xsd:element>
>> </xsd:sequence>
>> </xsd:complexType>
>> </xsd:schema>
>>
>>
>> 读取person表中记录,生成的xml文件servicemix-24532545.xml如下:
>> <?xml version="1.0" encoding="UTF-8"?>
>> <jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-
>> wrapper"
>> xmlns:msgns="http://www.njusoft.com/datachange/jdbc"
>> name="inputPoll"
>> type="msgns:inputMsg" version="1.0">
>> <jbi:part>
>> <PERSON xmlns="http://j2ee.netbeans.org/xsd/tableSchema">
>> <PERSON_Record>
>> <ID>1</ID>
>> <NAME>mysqlservicemixdb1</NAME>
>> <PROCESSED>0</PROCESSED>
>> </PERSON_Record>
>> </PERSON>
>> </jbi:part>
>> </jbi:message>
>>
>> 可以看出,servicemix-24532545.xml和上面的person.xsd相比,多个<PERSON_Record>属性。
>> 我测试过了,如果把<PERSON_Record>删除,则,servicemix可以通过file组件读取
>> servicemix-24532545.xml,并且插入该条记录到表person_bak中。
>>
>> 希望各位老大,可以帮帮我,怎么才能实现文件的完全写入。
>>
>
>
> --
> Freeman Fang
> ------------------------
> Open Source SOA: http://fusesource.com
>
>
>
--
View this message in context: http://www.nabble.com/servicemix-store-database----tp23051689p23051782.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.