рдЬрд╛рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ

рдХрднреА-рдХрднреА рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреНрдпрд╛рдЬ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдорд╛рд▓рд┐рдХрд╛рдирд╛), рдпрд╛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред


рдкрд╣рд▓реА рдмрд╛рдд, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрджреЗрд╢ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рдордЭрджрд╛рд░ рдмрд╛рдд рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдПрдХреНрд╕рдПрдордПрд▓ рд╣реИред рдПрдХреНрд╕рдПрдордПрд▓ рдбрд┐рдХреНрд╢рдирд░реА рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкреАрдбрд╝рд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ), рдЖрдЗрдП рдПрдХреНрд╕рдПрд╕рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдХреАрдорд╛ рд╡рд┐рд╡рд░рдг рдмрдирд╛рдПрдВ:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:complexType name="FieldDescription"> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="defaultValue" type="xsd:string" /> </xsd:complexType> <xsd:complexType name="SequenceDescription"> <xsd:sequence> <xsd:element name="fieldDescription" type="FieldDescription" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="sequenceDescription" type="SequenceDescription" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="sequenceName" type="xsd:string" /> </xsd:complexType> <xsd:complexType name="MessageDescription"> <xsd:sequence> <xsd:element name="sequenceDescription" type="SequenceDescription" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="fieldDescription" type="FieldDescription" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="messageName" type="xsd:string" /> </xsd:complexType> <xsd:element name="DictionaryDescription"> <xsd:complexType> <xsd:sequence> <xsd:element name="messageDescription" type="MessageDescription" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд░реЗрдЦ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрдЯрд┐рд▓, рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдХреНрдпрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЦреЗрддреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЕрд░реНрдереЛрдВ рдХрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:

 public interface IMessage { /** * Add field to message * @param name name of field (not null) * @param value value of field */ void addField(final String name, final Object value); /** * Remove field from message * @param name name of field (not null) */ void removeField(final String name); /** * Get message field by name * @param name name of field (not null) * @return value of field */ Object getField(final String name); /** * Check that field is set * @param name field name * @return true if field set, else false */ boolean isFieldSet(final String name); /** * Get set of message fields * @return set of message fields */ Set<String> getFieldNames(); /** * Get copy of message * @return new IMessage with copied fields */ IMessage cloneMessage(); /** * Compare messages by fields * @param message message for comparing * @return true/false */ boolean compare(final IMessage message); } 


рдЗрд╕рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛, рдпрд╣ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд░рдЦрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдПрдирдХреЛрдбрд░ / рдбрд┐рдХреЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 public interface ICodec { /** * Encode list of IMessage to byte array * @param messages input messages * @return array of byte */ byte[] encode(List<IMessage> messages); /** * Decode array of byte to list of IMessage * @param bytes input array * @return list of IMessage */ List<IMessage> decode(byte[] bytes); } 


рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ IDEDIA рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ XML рд╕реЗ рд╕реНрдХреАрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдИ рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдВрдЯреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ jaxb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

 <path id="jaxbcp"> <pathelement location="libs/jaxblibs/jaxb-api.jar" /> <pathelement location="libs/jaxblibs/jaxb-impl.jar" /> <pathelement location="libs/jaxblibs/jaxb-xjc.jar" /> <pathelement location="libs/jaxblibs/jsr173_1.0_api.jar" /> </path> <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="jaxbcp" / <xjc schema="xsd/schema.xsd" destdir="${gen.dir}" package="your.package.name"> <produces dir="${gen.dir}" includes="*" /> </xjc> 


рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ xml рд╢рдмреНрджрдХреЛрд╢ рдкрдврд╝рддреЗ рд╣реИрдВ:

 try { jc = JAXBContext.newInstance(new Class[]{DictionaryDescription.class}); u = jc.createUnmarshaller(); File f = new File (path); JAXBElement<DictionaryDescription> root = u.unmarshal(new StreamSource(f), DictionaryDescription.class); DictionaryDescription s = root.getValue(); } catch (JAXBException e) { logger.error("Error during parsing dictionary", e); } 


рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдЖрдЗрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВред

 interface Client { void init(Map parameters); void connect(); void disconnect(); void sendMessage(IMessage msg); void addReceiveListener(IReceiveListener listener); void removeReceiveListener(IReceiveListener listener); } 


рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ / рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд░реЗрдВред IReceiveListener рдХрд╛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдЧрд╛ред OnMessageReceived рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдПрдХ рдкреНрд░реЙрдХреНрд╕реА (рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдХ), рдПрдХ рдлрд╝рд╛рдЗрд▓ / рдбреЗрдЯрд╛рдмреЗрд╕ / рдореЗрдореЛрд░реА рдореЗрдВ рдмрдЪрдд, рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛ред

 public interface WMQReceiveListener { /** * Handler of message * @param message message */ public void onMessageReceived(byte[] message); } 


рдпрд╣ рд╕рдм, рдЗрд╕рдХреА рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдкрд░рдд рдХрд╛ рдХрдВрдХрд╛рд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рднреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In135625/


All Articles