• 总结经验


    一、

    1、问题背景:

        俩个系统做集成,服务端用spring集成cxf发布的接口。客户端将在业务中集成服务端的接口,为服务端接口提供数据。

    客户端为服务端批量传入多条数据,如果服务端接口不配置事务,这样的话,前俩条数据添加成功了,第三条数据添加失败

    程序不会回滚。但是客户端知道服务端程序出错了,会把整个客户端的事务回滚,也就导致俩个系统中的数据不一致。

    2、解决:

       所以,服务端一定要控制事务。spring集成的cxf,一定要基于接口发布,接口配置事务。

    二、

    1、问题背景:

       生成的客户端带有ip地址在注解中,所以我就研究一下,ip地址如何使动态配置的。后来发现不可行。继续详细看了一下生成的客户端程序,发现此文件并没有什么卵用。

    2、解决

        cxf生成的客户端程序,如果采用spring集成cxf调用服务,带有三个ip地址的java文件(一般以service结尾的),没有用,它只是为以client结尾的调用文件服务的。这个

    文件也可以直接删掉。

    三、地址动态(占位符)

    我想把spring配置的客户端配置文件的地址写成动态的。因为我的资源文件被spring已经加载了,所以我可以将地址写到被加载的这个配置文件中就行。通过占位符去取,注意

    这个位置,spring加载资源文件一定要比用到占位符的地方要早。不然取不到(现在发现可以了,不知道为什么,具体看占位符加载机制(容器先加载spring的xml,然后初始化bean时,会为bean赋值,包括里面的占位符,所有的bean都是在spring加载后一起初始化的,通过控制台也可以看出来,先加载了web.xml中context中配置的所有的xml,然后再初始化,例如我把占位符故意输错,控制台就会看到xml全部加载完成了(Initializing Spring root WebApplicationContext),然后报错(ContextLoader:307 - Context initialization failed,org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name)))。可以通过将如下内容与用到占位符的放在一个资源文件中,这样就不用考虑文件加载顺序了。

    确保占位符可以取到值。或则配置多个此文件也可以。在每个用到占位符的文件上面都加上此配置,id不要重复(为验证)。不同配置文件中可以重复,只是会覆盖。

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location">
      <value>classpath:applicationConf.properties</value>
      </property>
      <property name="fileEncoding" value="utf-8"/>
     </bean>

    以下动态占位符:可以拼成字符串:如下格式即可

    address="${bj.url}lanling-hr/services/bj?wsdl" />

    四、本地ip127开头的都可以访问项目

    本地发布的接口127.0.0.1可以访问接口。发现以127开头的地址都可以访问。这也导致我看了一晚上才发现的问题。我将地址配置成127.89.23.1,实际上我是有意配置错误

    就是想让接口访问不了,但是发现程序还是正常访问了。后来将这个地址与wsdl文件相结合访问wsdl,没想到既然还可以访问,我也是醉了。后来把地址换成172开头的才不能访问,具体什么原因我也不知道。下次再出现类似的问题,可以拿到这个地址,在浏览器中访问以下。

    解释:

    本地回路地址是指本地回环地址,本地回环地址不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在windows操作系统中也有相似的定义,所以通常在不安装网卡前就可以ping通这个本地回环地址。
    作用:
    一般都会用来检查本地网络协议、基本数据接口等是否正常的。
    主要作用有两个:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;另一个作用是某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行而没有别的SERVER时就可以把SERVER的资源装在本机,SERVER的IP地址设为127.0.0.1同样也可以运行。
    本地回环地址指的是以127开头的地址(127.0.0.1 - 127.255.255.254),通常用127.0.0.1来表示。

  • 相关阅读:
    tomcat8.5配置redis实现session共享(tomcat-redis-session-manager-master)
    HDU4292(KB11-H 最大流)
    HDU4280(KB11-G 最大流)
    POJ1149(最大流)
    POJ3281(KB11-B 最大流)
    POJ3436(KB11-A 最大流)
    Codeforces841B
    Codeforces841A
    HDU2255(KB10-K 二分图最大权匹配)
    HDU1281(KB10-D 二分图最大匹配)
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/5630594.html
Copyright © 2020-2023  润新知