当前位置: 首页 > news >正文

做线路板的去哪个网站找工作wordpress网站背景设置

做线路板的去哪个网站找工作,wordpress网站背景设置,建材 团购 网站怎么做,福州做网站优化在我的一个项目中#xff0c;我应该创建一个消息路由器#xff0c;就像所有路由器都应该从一个主题中提取JMS消息并将其放入另一个主题中一样。 该消息本身是JMS文本消息#xff0c;实际上包含XML消息。 收到消息后#xff0c;我还应该添加一些其他数据来丰富消息。 我们不… 在我的一个项目中我应该创建一个消息路由器就像所有路由器都应该从一个主题中提取JMS消息并将其放入另一个主题中一样。 该消息本身是JMS文本消息实际上包含XML消息。 收到消息后我还应该添加一些其他数据来丰富消息。 我们不允许使用Spring或JAXB或任何其他有用的库因此我决定检查使用它们进行此操作的难易程度。 最初我只想使用Spring和JAXB但在下一篇文章中我将尝试通过使用Apache Camel重复相同的场景这就是为什么在包名称中会找到单词“ camel”的原因。 由于ActiveMQ消息传递服务器JMS通信得以实现。 无论如何 回到代码。 我使用maven来解决依赖关系这些是在JMS和JAXB以及消息转换方面必不可少的依赖关系 pom.xml dependencygroupIdorg.springframework/groupIdartifactIdspring-jms/artifactIdversion3.1.1.RELEASE/version/dependencydependencygroupIdcom.sun.xml.bind/groupIdartifactIdjaxb-impl/artifactIdversion2.2.6/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-oxm/artifactIdversion3.1.1.RELEASE/version/dependency 这就是我划分项目的方式在下一篇文章中包装的骆驼部分会更有意义。 为了通过JAXB将消息转换为对象我需要一个模式 播放器 ?xml version1.0 encodingUTF-8? xsd:schema xmlns:xsdhttp://www.w3.org/2001/XMLSchemaxsd:element namePlayerDetailsxsd:complexTypexsd:sequencexsd:element nameName typexsd:string /xsd:element nameSurname typexsd:string /xsd:element namePosition typePositionType /xsd:element nameAge typexsd:int /xsd:element nameTeamName typexsd:string //xsd:sequence/xsd:complexType/xsd:elementxsd:simpleType namePositionTypexsd:restriction basexsd:stringxsd:enumeration valueGK /xsd:enumeration valueDEF /xsd:enumeration valueMID /xsd:enumeration valueATT //xsd:restriction/xsd:simpleType/xsd:schema 我必须下载JAXB二进制文件并执行以下命令来创建我的对象 ./xjc.sh -p pl.grzejszczak.marcin.camel.jaxb.generated ~/PATH/TO/THE/SCHEMA/FILE/Player.xsd 注意 使用maven可以实现相同的目的。 这种方法不在博客的存储库中但请相信我-它确实有效 将依赖项添加到pom dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.1/version /dependency 使用插件注意需要指定架构文件或者默认情况下在以下位置搜索 src / main / xsd /文件夹 buildpluginManagementpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion2.5.1/version/plugin/plugins/pluginManagementpluginsplugingroupIdorg.codehaus.mojo/groupIdartifactIdjaxb2-maven-plugin/artifactIdversion1.5/versionexecutionsexecutionidxjc/idgoalsgoalxjc/goal/goals/execution/executionsconfigurationpackageNamepl.grzejszczak.marcin.camel.jaxb.generated/packageName/configuration/plugin/plugins/build 该命令或Maven插件的结果示例如下 PlayerDetails.java // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.6 // See http://java.sun.com/xml/jaxb // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2012.11.05 at 09:23:22 PM CET //package pl.grzejszczak.marcin.camel.jaxb.generated;import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType;/*** Java class for anonymous complex type.* * The following schema fragment specifies the expected content contained within this class.* * * complexType* complexContent* restriction base{http://www.w3.org/2001/XMLSchema}anyType* sequence* element nameName type{http://www.w3.org/2001/XMLSchema}string/* element nameSurname type{http://www.w3.org/2001/XMLSchema}string/* element namePosition type{}PositionType/* element nameAge type{http://www.w3.org/2001/XMLSchema}int/* element nameTeamName type{http://www.w3.org/2001/XMLSchema}string/* /sequence* /restriction* /complexContent* /complexType* * * */ XmlAccessorType(XmlAccessType.FIELD) XmlType(name , propOrder {name,surname,position,age,teamName }) XmlRootElement(name PlayerDetails) public class PlayerDetails {XmlElement(name Name, required true)protected String name;XmlElement(name Surname, required true)protected String surname;XmlElement(name Position, required true)protected PositionType position;XmlElement(name Age)protected int age;XmlElement(name TeamName, required true)protected String teamName;/*** Gets the value of the name property.* * return* possible object is* {link String }* */public String getName() {return name;}/*** Sets the value of the name property.* * param value* allowed object is* {link String }* */public void setName(String value) {this.name value;}/*** Gets the value of the surname property.* * return* possible object is* {link String }* */public String getSurname() {return surname;}/*** Sets the value of the surname property.* * param value* allowed object is* {link String }* */public void setSurname(String value) {this.surname value;}/*** Gets the value of the position property.* * return* possible object is* {link PositionType }* */public PositionType getPosition() {return position;}/*** Sets the value of the position property.* * param value* allowed object is* {link PositionType }* */public void setPosition(PositionType value) {this.position value;}/*** Gets the value of the age property.* */public int getAge() {return age;}/*** Sets the value of the age property.* */public void setAge(int value) {this.age value;}/*** Gets the value of the teamName property.* * return* possible object is* {link String }* */public String getTeamName() {return teamName;}/*** Sets the value of the teamName property.* * param value* allowed object is* {link String }* */public void setTeamName(String value) {this.teamName value;}} XmlRootElementname “ PlayerDetails”表示此类将在XML文件中输出一个Root节点。 JavaDoc所说的XmlAccessorTypeXmlAccessType.FIELD意味着“除非XmlTransient注释否则JAXB绑定类中的每个非静态非瞬态字段都将自动绑定到XML。” 换句话说如果您有一个由XmlTransient注释注释的字段它将不会被序列化。 然后我们有XmlTypename “”propOrder {“ name”“ surname”“ position”“ age”“ teamName”}作为JavaDoc的“ 将类或枚举类型映射为XML模式类型 “ 。 换句话说我们的类被映射到架构中的PlayerDetails元素。 最后我们有XmlElementname “ Name”required true批注它是XML节点元素到类中字段的映射。 这是我要发送接收丰富和路由的消息 RobertLewandowski.xml ?xml version1.0 encodingUTF-8 standaloneyes? PlayerDetailsNameRobert/NameSurnameLewandowski/SurnamePositionATT/Position /PlayerDetails 现在开始我的JMS配置-我已经配置了始发和目的地队列 jms.properties jms.originInitial.Queue jms.destinationRouted.Queue 这是我的Spring配置我在配置中添加了解释这些组件来源的注释 jmsApplicationContext.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxmlns:jmshttp://www.springframework.org/schema/jms xmlns:oxmhttp://www.springframework.org/schema/oxmxsi:schemaLocationhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd!-- Spring configuration based on annotations --context:annotation-config /!-- Show Spring where to search for the beans (in which packages) --context:component-scan base-packagepl.grzejszczak.marcin.camel /!-- Show Spring where to search for the properties files --context:property-placeholder locationclasspath:/camel/jms.properties /!-- The ActiveMQ connection factory with specification of the server URL --bean idactiveMQConnectionFactory classorg.apache.activemq.ActiveMQConnectionFactoryproperty namebrokerURL valuetcp://localhost:61616 //bean!-- Springs jms connection factory --bean idcachingConnectionFactoryclassorg.springframework.jms.connection.CachingConnectionFactoryproperty nametargetConnectionFactory refactiveMQConnectionFactory /property namesessionCacheSize value10 //bean!-- The name of the queue from which we will take the messages --bean idorigin classorg.apache.activemq.command.ActiveMQQueueconstructor-arg value${jms.origin} //bean!-- The name of the queue to which we will route the messages --bean iddestination classorg.apache.activemq.command.ActiveMQQueueconstructor-arg value${jms.destination} //bean!-- Configuration of the JmsTemplate together with the connection factory and the message converter --bean idproducerTemplate classorg.springframework.jms.core.JmsTemplateproperty nameconnectionFactory refcachingConnectionFactory /property namemessageConverter refoxmMessageConverter //bean!-- Custom message sender sending messages to the initial queue --bean idoriginPlayerSender classpl.grzejszczak.marcin.camel.manual.jms.PlayerDetailsSenderImplproperty namedestination reforigin //bean!-- Custom message sender sending messages to the destination queue --bean iddestinationPlayerSender classpl.grzejszczak.marcin.camel.manual.jms.PlayerDetailsSenderImplproperty namedestination refdestination //bean!-- Custom message listener - listens to the initial queue --bean idoriginListenerImpl classpl.grzejszczak.marcin.camel.manual.jms.ListenerImpl/!-- Custom message listener - listens to the destination queue --bean iddestinationListenerImpl classpl.grzejszczak.marcin.camel.manual.jms.FinalListenerImpl/!-- Springs jms message listener container - specified the connection factory, the queue to be listened to and the component that listens to the queue --bean idjmsOriginContainer classorg.springframework.jms.listener.DefaultMessageListenerContainerproperty nameconnectionFactory refcachingConnectionFactory /property namedestination reforigin /property namemessageListener reforiginListenerImpl //bean!-- Springs jms message listener container - specified the connection factory, the queue to be listened to and the component that listens to the queue --bean idjmsDestinationContainer classorg.springframework.jms.listener.DefaultMessageListenerContainerproperty nameconnectionFactory refcachingConnectionFactory /property namedestination refdestination /property namemessageListener refdestinationListenerImpl //bean!-- Message converter - automatically marshalls and unmarshalls messages using the provided marshaller / unmarshaller--bean idoxmMessageConverter classorg.springframework.jms.support.converter.MarshallingMessageConverterproperty namemarshaller refmarshaller /property nameunmarshaller refmarshaller //bean!-- Springs JAXB implementation of marshaller - provided a class the JAXB generated class --oxm:jaxb2-marshaller idmarshalleroxm:class-to-be-bound namepl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails //oxm:jaxb2-marshaller/beans 现在让我们看一下Java代码-让我们从具有主要功能的类开始 ActiveMQRouter.java package pl.grzejszczak.marcin.camel.manual;import java.io.File; import java.util.Scanner;import javax.jms.JMSException;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource;import pl.grzejszczak.marcin.camel.jaxb.PlayerDetailsConverter; import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails; import pl.grzejszczak.marcin.camel.manual.jms.Sender;public class ActiveMQRouter {/*** param args* throws JMSException*/public static void main(String[] args) throws Exception {ApplicationContext context new ClassPathXmlApplicationContext(/camel/jmsApplicationContext.xml);SuppressWarnings(unchecked)SenderPlayerDetails sender (SenderPlayerDetails) context.getBean(originPlayerSender);Resource resource new ClassPathResource(/camel/RobertLewandowski.xml);Scanner scanner new Scanner(new File(resource.getURI())).useDelimiter(\\Z);String contents scanner.next();PlayerDetailsConverter converter context.getBean(PlayerDetailsConverter.class);sender.sendMessage(converter.unmarshal(contents));} } 我们可以在这里看到的是我们从类路径初始化了Spring上下文并检索了名为originPlayerSender的bean。 该组件用于将消息发送到初始队列。 为了发送消息我们从类路径中检索文件RobertLewandowski.xml并通过Scanner类将其读取为String变量。 接下来我们使用自定义的PlayerDetailsConverter类将String内容解组到PlayerDetails对象中该对象实际上由originPlayerSender发送到原始队列。 现在让我们看一下发送者逻辑 PlayerDetailsS​​enderImpl.java package pl.grzejszczak.marcin.camel.manual.jms;import javax.jms.Destination; import javax.jms.JMSException;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component;import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails;Component public class PlayerDetailsSenderImpl implements SenderPlayerDetails {private static final Logger LOGGER LoggerFactory.getLogger(PlayerDetailsSenderImpl.class);private Destination destination;Autowiredprivate JmsTemplate jmsTemplate;Overridepublic void sendMessage(final PlayerDetails object) throws JMSException {LOGGER.debug(Sending [{}] to topic [{}], new Object[] { object, destination });jmsTemplate.convertAndSend(destination, object);}public Destination getDestination() {return destination;}public void setDestination(Destination destination) {this.destination destination;}} 此类正在实现我的Sender接口该接口提供sendMessage函数。 我们正在使用JmsTemplate对象转换消息并将其发送到通过Spring注入的给定目标。 好的现在我们已经发送了消息有人必须检索它 ListenerImpl.java package pl.grzejszczak.marcin.camel.manual.jms;import java.util.List;import javax.jms.BytesMessage; import javax.jms.Message; import javax.jms.MessageListener;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.jms.support.converter.MessageConverter; import org.springframework.stereotype.Component;import pl.grzejszczak.marcin.camel.enricher.Enrichable; import pl.grzejszczak.marcin.camel.jaxb.Convertable; import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails;Component public class ListenerImpl implements MessageListener {private static final Logger LOG LoggerFactory.getLogger(ListenerImpl.class);Autowiredprivate ConvertablePlayerDetails playerDetailsConverter;Autowiredprivate ListEnrichablePlayerDetails listOfEnrichers;Autowiredprivate MessageConverter messageConverter;AutowiredQualifier(destinationPlayerSender)private SenderPlayerDetails sender;Overridepublic void onMessage(Message message) {if (!(message instanceof BytesMessage)) {LOG.error(Wrong msg!);return;}PlayerDetails playerDetails null;try {playerDetails (PlayerDetails) messageConverter.fromMessage(message);LOG.debug(Enriching the input message);for (EnrichablePlayerDetails enrichable : listOfEnrichers) {enrichable.enrich(playerDetails);}LOG.debug(Enriched text message: [{}], new Object[] { playerDetailsConverter.marshal(playerDetails) });sender.sendMessage(playerDetails);} catch (Exception e) {LOG.error(Exception occured, e);}}} 此类包含实现Enrichable接口的所有类的列表借助该类它可以提供消息的丰富内容而无需知道系统中丰富程序的数量。 还有一个PlayerDetailsConverter类可帮助编组和解组PlayerDetails。 丰富了消息后它将通过实现Sender接口并具有destinationPlayerSender ID的Bean将其发送到目标队列。 重要的是要记住我们从队列中收到的是BytesMessage因此这就是我们进行初始检查的原因。 让我们看一下其中一个扩展程序另一个是在PlayerDetails对象中设置另一个字段 ClubEnricher.java package pl.grzejszczak.marcin.camel.enricher;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails;Component(ClubEnricher) public class ClubEnricher implements EnrichablePlayerDetails {private static final Logger LOGGER LoggerFactory.getLogger(ClubEnricher.class);Overridepublic void enrich(PlayerDetails inputObject) {LOGGER.debug(Enriching player [{}] with club data, new Object[] { inputObject.getSurname() });// Simulating accessing DB or some other servicetry {Thread.sleep(2000);} catch (InterruptedException e) {LOGGER.error(Exception while sleeping occured, e);}inputObject.setTeamName(Borussia Dortmund);}} 如您所见该类只是在模拟对数据库或任何其他服务的访问然后在输入的PlayerDetails对象中设置团队名称。 现在让我们看一下转换机制 PlayerDetailsConverter.java package pl.grzejszczak.marcin.camel.jaxb;import java.io.ByteArrayOutputStream; import java.io.OutputStream;import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller;import org.apache.activemq.util.ByteArrayInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails;Component(PlayerDetailsConverter) public class PlayerDetailsConverter implements ConvertablePlayerDetails {private static final Logger LOGGER LoggerFactory.getLogger(PlayerDetailsConverter.class);private final JAXBContext jaxbContext;private final Marshaller jaxbMarshaller;private final Unmarshaller jaxbUnmarshaller;public PlayerDetailsConverter() throws JAXBException {jaxbContext JAXBContext.newInstance(PlayerDetails.class);jaxbMarshaller jaxbContext.createMarshaller();jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);jaxbUnmarshaller jaxbContext.createUnmarshaller();}Overridepublic String marshal(PlayerDetails object) {OutputStream stream new ByteArrayOutputStream();try {jaxbMarshaller.marshal(object, stream);} catch (JAXBException e) {LOGGER.error(Exception occured while marshalling, e);}return stream.toString();}Overridepublic PlayerDetails unmarshal(String objectAsString) {try {return (PlayerDetails) jaxbUnmarshaller.unmarshal(new ByteArrayInputStream(objectAsString.getBytes()));} catch (JAXBException e) {LOGGER.error(Exception occured while marshalling, e);}return null;}} 在构造函数中我们设置了一些JAXB组件-JAXBContextJAXB Marshaller和JAXB Unmarshaller它们具有必要的封送和取消封送方法。 最后但并非最不重要的是FinalListenerImpl它正在侦听来自目标队列的入站消息并关闭应用程序。 FinalListenerImpl.java package pl.grzejszczak.marcin.camel.manual.jms;import javax.jms.BytesMessage; import javax.jms.Message; import javax.jms.MessageListener;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.support.converter.MessageConverter; import org.springframework.stereotype.Component;import pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails;Component public class FinalListenerImpl implements MessageListener {private static final Logger LOG LoggerFactory.getLogger(FinalListenerImpl.class);Autowiredprivate MessageConverter messageConverter;Overridepublic void onMessage(Message message) {if (!(message instanceof BytesMessage)) {LOG.error(Wrong msg!);return;}PlayerDetails playerDetails null;try {playerDetails (PlayerDetails) messageConverter.fromMessage(message);if (playerDetails.getTeamName() ! null) {LOG.debug(Message already enriched! Shutting down the system);System.exit(0);} else {LOG.debug(The message should have been enriched but wasnt);System.exit(1);}} catch (Exception e) {LOG.error(Exception occured, e);}}} 通过使用MessageConverter在确认消息的类型正确之后我们检查团队名称是否已填写-如果是这种情况我们将终止应用程序。 日志如下 2012-11-05 [main] org.springframework.context.support.ClassPathXmlApplicationContext:495 Refreshing org.springframework.context.support.ClassPathXmlApplicationContext34fbb7cb: startup date [Mon Nov 05 21:47:00 CET 2012]; root of context hierarchy 2012-11-05 [main] org.springframework.beans.factory.xml.XmlBeanDefinitionReader:315 Loading XML bean definitions from class path resource [camel/jmsApplicationContext.xml] 2012-11-05 [main] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer:177 Loading properties file from class path resource [camel/jms.properties] 2012-11-05 [main] org.springframework.beans.factory.support.DefaultListableBeanFactory:557 Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory3313beb5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.annotation.internalAutowiredAnnotationProcessor, org.springframework.context.annotation.internalRequiredAnnotationProcessor, org.springframework.context.annotation.internalCommonAnnotationProcessor, org.springframework.context.annotation.internalPersistenceAnnotationProcessor, myRoute,AgeEnricher, ClubEnricher, PlayerDetailsConverter, finalListenerImpl, listenerImpl, playerDetailsSenderImpl, org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0, activeMQConnectionFactory, cachingConnectionFactory, origin, destination, producerTemplate, originPlayerSender, destinationPlayerSender, originListenerImpl, destinationListenerImpl, jmsOriginContainer, jmsDestinationContainer, oxmMessageConverter, marshaller, org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 2012-11-05 [main] org.springframework.oxm.jaxb.Jaxb2Marshaller:436 Creating JAXBContext with classes to be bound [class pl.grzejszczak.marcin.camel.jaxb.generated.PlayerDetails] 2012-11-05 [main] org.springframework.context.support.DefaultLifecycleProcessor:334 Starting beans in phase 2147483647 2012-11-05 [main] org.springframework.jms.connection.CachingConnectionFactory:291 Established shared JMS Connection: ActiveMQConnection {idID:marcin-SR700-38535-1352148424687-1:1,clientIdnull,startedfalse} 2012-11-05 [main] pl.grzejszczak.marcin.camel.manual.jms.PlayerDetailsSenderImpl:26 Sending to topic [queue://Initial.Queue] 2012-11-05 [jmsOriginContainer-1] pl.grzejszczak.marcin.camel.manual.jms.ListenerImpl:49 Enriching the input message 2012-11-05 [jmsOriginContainer-1] pl.grzejszczak.marcin.camel.enricher.AgeEnricher:17 Enriching player [Lewandowski] with age data 2012-11-05 [jmsOriginContainer-1] pl.grzejszczak.marcin.camel.enricher.ClubEnricher:16 Enriching player [Lewandowski] with club data 2012-11-05 [jmsOriginContainer-1] pl.grzejszczak.marcin.camel.manual.jms.ListenerImpl:53 Enriched text message: [?xml version1.0 encodingUTF-8 standaloneyes? PlayerDetailsNameRobert/NameSurnameLewandowski/SurnamePositionATT/PositionAge19/AgeTeamNameBorussia Dortmund/TeamName /PlayerDetails ] 2012-11-05 [jmsOriginContainer-1] pl.grzejszczak.marcin.camel.manual.jms.PlayerDetailsSenderImpl:26 Sending to topic [queue://Routed.Queue] 2012-11-05 [jmsDestinationContainer-1] pl.grzejszczak.marcin.camel.manual.jms.FinalListenerImpl:35 Message already enriched! Shutting down the system 这就是通过Spring JMS模块和JAXB库您可以轻松地为XML消息创建JMS侦听器发送者和消息转换器的方法。 参考 Spring JMS消息自动转换来自我们的JCG合作伙伴 Marcin Grzejszczak的JMS模板 位于Blog上用于编码上瘾者博客。 翻译自: https://www.javacodegeeks.com/2013/04/spring-jms-message-automatic-conversion-jms-template.html
http://www.huolong8.cn/news/229788/

相关文章:

  • 青岛开发区做网站网站商城是用什么框架做的
  • 棋盘网站开发重庆建筑工程安全施工管理安全网
  • 网站开发方案目录做毕业设计网站需要的工具
  • 设计模板网站老旧小区改造国家最新政策
  • 怎么查网站的注册信息重庆企业网络推广价格
  • 集团门户网站建设策划网站建设需求文章
  • 企业电商网站开发9个广州seo推广神技
  • 黄页是什么东西seo指的是搜索引擎营销
  • 花都区pc端网站建设专业的培训行业网站开发
  • 网站优化软件有哪些网站制作一般哪家好
  • 海口网站开发制作莱州网络建站
  • 惠州网站建设设计wordpress阅读时间
  • 深圳高端网站案例怎么建网站做
  • 郑州交通建设投资有限公司网站怎样更换网站模板
  • 炫酷特效网站新闻 最新消息
  • 网站建设和维护要花多少钱苏州seo网站公司
  • 北京网站建设找华网天下房地产集团网站建设
  • 运输房产网站建设grimhelm.wordpress
  • 如何制作网站连接数据库江苏电商网站开发
  • 四川网站备案青岛企业建设网站公司
  • 电子商务网站开发开题报告您的域名因未取得工信部网站备案号
  • 网站防护找谁做wordpress lay
  • 音乐网站建设程序如何开发网站软件app软件
  • 商城网站建设所必备的四大功能是哪些wordpress文章只显示标题
  • 网站做搜索引擎优化ppt模板的种类
  • 电商网站设计思路门面装修设计方案
  • 敦煌手机网站设计一个网站的后台
  • 中小学网站建设规范有赞商城官网
  • 网站开始开发阶段的主要流程网站开发php价格
  • 如何做自已网站安丘网站建设