程序员的吐槽

本人在A公司工作,公司主要业务跟保险行业有关,开发的程序大部分提供为各大保险公司。近日的在工作中发生的一些事,让我这个小程序员,让我感到及心酸又生气,所以特来次吐槽,可能现在借着点酒劲写的内容,会有些客观偏激。但是实在是太憋屈了,没办法就是想吐槽。欢迎板砖。

事情是这样的,我们小组开发的程序是用来检测服务器的运行情况,我有幸分配到了程序的核心模块开发,经过三个月左右的设计、开发和测试工作整个程序基本上圆满了。领导让我我负责程序的搭建工作,这时在我看来噩梦才刚刚开始,程序开始上线了。可是到了生成环境,本身我们程序能够完全支持jdk1.5,可生产环境偏不这样,开始的时候给您来个jdk1.4,经过老大和客户协商后终于同意升级jdk,生就生吧?按说应该升级到jdk1.5,好达到“完美"支持程序。可是人家偏不,直接来个1.6。没办法,出现了一些问题,那好吧改程序吧。

按说对程序进行微调之后应该就可以正常上线了,但是这时程序又被客户的各种环境、权限进行了限制。这时程序与起初的设计有了较大的变化,导致问题出现了一大片,那好吧,我继续修改,这时已经做了将近三天的修改。心中是各种郁闷啊。这还没玩,改完之后,发现是“一波未平一波又起啊”。程序又开始出问题了,那继续改吧,在我便测试边改程序的同时,”事故“就这样发送了,mysql的数据库连接数因为我的程序达到了最大80,直接导致生产环境,其他程序或库无法访问数据库。领导发威了”我希望是就这一次,仅此一次 ... ...“。我去,为啥我费了这么大劲,花了将近一个星期的时间对程序修改。换了的是一个事故,领导的警告。

出事就算我们这帮小兵程序员的头上,环境搭好了,领导收到客户和各种上级表扬、奖金。好人你们来当,出问题我们总是被先”捏死“的那个,你为啥不说是因为客户环境导致的程序现在这样问题啊。程序员,干的最多,拿的最少,程序出现bug问题,测试和运维人员就会各种理直气壮,指责程序各种不好,真是站着说话不腰疼啊。那里有十全十美的code啊。总之,这行真的很难干啊。

今天就先写到这吧,改日继续吐槽。

org.hibernate.exception.GenericJDBCException异常

org.hibernate.exception.GenericJDBCException异常

Caused by: java.net.ConnectException: Connection refused: connect

有3种可能:
1.数据库没有启动
2.数据库连接url没写正确,

  • ip地址;
  • 数据库名【数据库是否存在?还是名字写错】;
  • 检查用户名、密码是否正确;

3.数据库连接驱动包不正确、不匹配,或者甚至没有。
检查lib目录下是否有对应数据库的jar包。

sun.io.MalformedInputException IBM Websphere 中间件异常

sun.io.MalformedInputException  IBM Websphere 中间件异常

[13-12-2 18:09:21:923 CST] 00000015 WebApp E Exception caught while initializing context
org.springframework.beans.factory.BeanDefinitionStoreException: Unable to determine validation mode for [file [/opt/IBM/WebSphere/AppServer/profiles/Appserver02/installedApps/Appserver02/sinoom_v1_0_0_war.ear/sinoom_v1.0.0.war/WEB-INF/classes/spring/applicationContext-quartz.xml]]: an error occurred whilst reading from the InputStream.; nested exception is sun.io.MalformedInputException
Caused by: sun.io.MalformedInputException
at sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java:171)
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java:314)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:364)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:250)
at java.io.InputStreamReader.read(InputStreamReader.java:212)
at java.io.BufferedReader.fill(BufferedReader.java:157)
at java.io.BufferedReader.readLine(BufferedReader.java:320)
at java.io.BufferedReader.readLine(BufferedReader.java:383)
at org.springframework.util.xml.XmlValidationModeDetector.detectValidationMode(XmlValidationModeDetector.java:79)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.detectValidationMode(XmlBeanDefinitionReader.java:468)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.getValidationModeForResource(XmlBeanDefinitionReader.java:438)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:357)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:123)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:91)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:94)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:294)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at com.ibm.ws.wswebcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:641)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:298)
at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:289)
at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:90)
at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:157)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:665)
at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:618)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:335)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:551)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1301)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1138)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:817)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:950)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2120)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)

此问题为xml配置文件编码问题,一般出现的websphere、weblogic等中间件上。
1、解决方法将xml文件的编码格式,注意是文件,改成GB18030。此外还要将内部编码格式encoding="GB18030"。
这里说明一下修改方法:
1)、创建一个xml文件,将其文件格式改为GB18030
2)、将原来出问题的编码格式的文件所有内容copy到记事本中,注意是记事本,而不是其他编辑器。
3)、将xml中编码格式改为encoding="GB18030"

2、如果上边的第一种方法解决不了,我们可以将xml配置文件里的所有中文字符删掉,再试试。

3、有的人认为是ibm io的问题,他们是这样解决问题的。
这个问题产生的原因是IBM在JDK 1.4版本中为了追求对io通道的高效率改变了JDK 1.3中对io通道中异常处理的策略。
IBM JDK 1.4中对于io通道的异常处理更加严格,因此系统中会报上面的错误。
解决这一问题的办法是不使用IBM JDK 1.4中默认的io通道,而使用nio通道。具体的做法如下:
1)、打开管理控制台,找到并选择运行这个JSP的应用服务器
2)、依次选择进程定义,java虚拟机,一般JVM自变量
3)、添加-Dibm.stream.nio=true
4)、确定,保存
5)、重新启动该服务器

 

参考文档

http://blog.csdn.net/xiangnideshen/article/details/7469400
http://www.cnblogs.com/keer/archive/2007/07/11/814225.html