大梦想家 -凯发k8网页登录

5年开发工程师,2年实施经理,x年售前顾问,......
数据加载中……

2013年1月9日

今天客户方服务器上突然有一个功能保存了,查看日志信息后发现,错误信息:

could not instantiate class xxx from tuple at aliastobeanconstructorresulttransformer...

google了很久才发现有可能是hql语句中别名的问题,具体原因未知,现在处理办法是,将下面的语句中的别名去掉:

stringbuffer hql = new stringbuffer("select new contractitem(l, "
" pi.unitprice, " " pi.currencytype, " "pi.currencytypedisplay," " pi.units, "
" sum(pi.quantity pi.adjquantity), " " pp, " " pi.task) "
" from purchaseplanitem pi " " join pi.purchaseplan pp"
" join pi.priorlist l " " where l.supplierno = ?  "
" and pp.id in (");
具体是否可以解决,还要看一会儿的部署情况。
posted @ 阿南 阅读(2247) | |  

2013年1月3日

    上篇文章中我简单阐述了军工企业信息化遇到的困境,而我们公司(西安融智软件有限公司www.xardmu.com)则主要是面向军工企业进行软件产品的研发和定制项目的开发的。
    在产品实施和项目研发过程中,我们的前端技术人员需要做大量的浏览器兼容性的工作。痛苦至极啊~而且,即便完成了兼容性的修改,浏览器端的js解析又变成了巨大的瓶颈!例如我们有一个项目为了提高用户使用的时的方便性,使用了extjs4,结果在ie6下性能极其低下。我们的p8是一个项目管理软件,需要使用到基于extjs的gantt组件,但是此组件在ie6下十分不稳定,而且经常导致ie6崩溃。
   介于上面的种种问题,我们开始寻找从浏览器上解决问题的方法,例如使用firefox或者chrome,因为军工企业都有域,所以通过域安装一款软件是十分容易的。经过权衡,我们决定使用chrome做为我们软件的入口。
   在企业内部署chrome其实有三种方式:
   1.直接使用chrome的某一个版本,对此版本进行精简和简单的参数配置,或者内置一些自定义的插件,直接进行部署。
   优点:技术门槛较低,只需要简单的精简安装文件和配置参数即可。
   缺点:无法通过统一的策略管理局域网内所有的部署情况和策略。
   2.使用google提供的chrome商业版,通过google提供的商业版可以轻松定制自己企业内部的chrome,并生成分发文件,同时可以通过配合域策略完成对局域网内的客户端的行为进行限制。
   优点:此版本是11年放出的,一直和多个大型企业紧密合作,相信不久将会形成更加完善的方案,从而在企业级应用市场站稳脚跟。
   缺点:需要在线安装。
   3.使用google的chrome frame,一个让披着ie外壳的chrome,拥有chrome的所有性能,只是披着ie的外壳而已。
   优点:对于较老一些的企业,而且企业内部又拥有大量的ie时代产物的企业,绝对是一个好选择。
   缺点:需要在线安装。原有软件代码需要修改,才能在用户浏览时使用chrome模式。

   看到痛苦了吧?都需要在线安装。看来下一步只能开始研究chrome的源码,修改并编译属于自己的浏览器了。。。

posted @ 阿南 阅读(492) | |  

2010年6月17日

最近在做项目的过程中,有些时候需要用oracle的blob/clob类型存储一些很长的文章,一直不知道怎么来进行相关的检索,经过不懈的努力,终于能够解决这个问题了。查询语句如下:
 
select count(*) from 表名 where dbms_lob.instr(表名.列名, utl_raw.cast_to_raw(convert('关键词','utf8')), 1, 1) > 0;
 
需要注意的是,这个凯发天生赢家一触即发官网的解决方案只能查询blob/clob中存储的是经过处理的字符串。
 
本方法在oracle 10g上测试通过
转自http://commandos.blog.51cto.com/154976/128732
posted @ 阿南 阅读(827) | |  

2009年7月3日

    作为一个技术人员,谁不知道构架?

    前一段时间公司找开发人员谈心,有位领导问一位开发人员,大致对话如下:

    a:“你了解咱们现在产品的构架吗?能不能谈谈你对构架的看法?”

    b:“… …”

    a:“说说看吧~”

    b:“我不懂构架!构架是什么?咱们现在的产品还有构架呢?”

    作为一个有3年工作经验,2家公司经历的vc程序员来说,我觉得,这几年的积累是白做了!这样的思想永远都只能停留在写程序上~

    一个产品没有构件,就如同一个人没有灵魂一样!他不是没有,只是你没有去思考,没有去发现他而已!

    我记得袁洪刚说过,“一个伟大的产品背后一定有一个伟大构架师!”,我坚信这一点~产品好坏一方面决定于对现实问题的解决程度,另一方面是构架的好坏!

    几年前,中国的软件公司里面很少出现构架师/架构师这样的角色,这几年开始有改观了,越来越多的人开始认识到很多错误的问题,其实从一开始就是错的。很多事情并没有谋定而后动。一味的追求简单,到最后变成了下线很简单了!

   说自己不知道构架的开发人员有两种,新手和没有思想的新手,拼命的同时我们也应该停下脚步想想,抬起头看看天空。别总把经验的缺失都归结于时间的长短,更应该想想自己是否真的积累过。

posted @ 阿南 阅读(1627) | |  

2009年7月2日

    无状态会话bean发布为webservice是非常有意义的,因为如果我们将每一个ejb模块按照soa的思想做成一个一个独立的服务模块(这里不讨论sca,我认为apache的sca框架还不够强大,文档还不够全面),同样的代码在javaee体系之内的应用程序可以直接使用ejb3直接访问,javaee体系之外的应用程序可以直接使用webservice访问,这一点是非常有意义的。

    下面要考虑的就是如何只写一份代码,让它能做两样事情。

    网上有大量的使用ejb3发布webservice的教程,但是这些教程都是一个人写的,基本上没有太大的参考价值。最重要的是,他写的元注释都是写在实现类上的,接口上没有做任何描述。这种做法有两个问题,第一如果你的会话bean使用了em,那么麻烦了,jaxb在做绑定的时候不认识接口;第二wsdl文件的描述实际上应该是基于接口的描述,应该和实现类没有太大的关系。

    看看网上流行的代码:

 

1@webservice(name = "purchasearrival", servicename = "purchasearrivalservice"
2@soapbinding(style = soapbinding.style.rpc) 
3public class purchasearrivalimpl implements ipurchasearrival {

 

注意,基于rpc绑定模式下list,set一类的接口都是不可传输的,这点会很麻烦,要用必须用实现类。

看看我的代码:

接口:

 

1@webservice(name = "ilogremoteservice",targetnamespace = "http://www.glnpu.com/dmp/xml"
2@soapbinding(style = soapbinding.style.document) 
3public interface  ilogremoteservice {

 

实现类:

 

1@stateless 
2@remote(ilogremoteservice.class
3@webservice(endpointinterface = "com.glnpu.dmp.server.service.base.log.ilogremoteservice",servicename = "logremoteservice"
4public class logremoteservice extends baseservice implements ilogremoteservice {

 

这个webservice是针对接口发布出去,而且使用的document样式,可以直接使用list、set的接口。

这个webservice生成的wsdl文件很有意思:

 

 1<definitions name="logremoteservice" targetnamespace="http://impl.log.base.service.server.dmp.glnpu.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://www.glnpu.com/dmp/xml" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.log.base.service.server.dmp.glnpu.com/" xmlns:xsd="http://www.w3.org/2001/xmlschema">
 2
 3<import location="http://127.0.0.1:8080/logremoteserviceservice/logremoteservice?wsdl&resource=ilogremoteservice_porttype25057.wsdl" namespace="http://www.glnpu.com/dmp/xml" />
 4
 5<service name="logremoteservice">
 6
 7<port binding="ns1:ilogremoteservicebinding" name="logremoteserviceport">
 8
 9<soap:address location="http://127.0.0.1:8080/logremoteserviceservice/logremoteservice" />
10
11port>
12
13service>
14
15definitions>
16
17

 

里面有import来指引到真正的wsdl文件。这样很容易将会话bean变成ws~一样的代码两样的功能,超值!

posted @ 阿南 阅读(1924) | |  

2009年7月1日

    wazaabi 2.0 基于 eclipse3.4/emf/gef 的动态界面设计和现实组件,依赖emf进行界面描述,依赖gef进行界面显示。

    比较起xui,xswt,它的设计器更加的完善,功能比较1.0版本也有很大的提高,而且作者也提出了使用emf进行数据绑定的思路和实现。

    麻烦的是它本身只提供了fill和row两种布局,button、text、list、label这些基本控件。还好作者的文档功底不错,简单几张图就把自己的设计思路描述的清清楚楚,高手所为,赞一个!

   在它基础上可以很简单的进行扩展,而且比扩展ve要简单的多~这是我喜欢的!现在对它的使用本人还是处于观望态度,一方面等待它的持续更新,另一方面等待e4的激动人心的放出!

    有兴趣的朋友可以看看

posted @ 阿南 阅读(1967) | |  

2009年6月30日

    明显第一种构架比第二种构架好很多,但是我们偏偏在第二种构架上面挣扎了半年的时间。

    总是有各种各样的接口和推辞说业务太复杂,客户催的太紧,没办法把业务放到服务器上,成本太高了!已经是2009年了,10年前大家就意识到维护是关键,业务一定要封装,不能分散于客户端… …10年后的今天我们竟然还在挣扎!完全没有思想,完全没有设计,完全没有接口,完全没有oo… …!!!

    项目告一段落我要拼命的重构,彻底抽离公共业务,彻底剥离特殊业务,我要oo,我要接口,我要设计,我甚至还要soa!

    我错了!我认错!可是为什么公司还有那么多的人还是不认错呢?做了10年的产品,10年前的东西竟然比10年后的东西还好用!做了10年还是死缠烂打在10年前的原型之上~他们比我更悲哀~

posted @ 阿南 阅读(461) | |  

2009年4月23日

   粗心大意,老犯错!

   今天上午在调试ejb3调用webservice时一直遇到mysql报出的这个问题。郁闷坏了,只是执行了一句update而已,就导致这样错误… …

   经过半个小时排查,终于找到问题所在了。原因是分布式事务引起的。

   场景描述:

ejb3操作a表-->调用webservice-->webservice操作b表

    在操作a表的时候需要等待webservice的调用,如果没有异常,则可以提交事务,如果出现异常,则不能提交事务;

    在操作b表的时候需要处理异常;

    一个简单的分布式事务,一般情况下是没有问题的~但是由于我的粗心大意,做成了ejb3也在操作b表,这样就导致了表被锁死的情况出现~真是郁闷啊!

posted @ 阿南 阅读(4258) | |  

2009年3月17日

    以前我们的产品重启rcp应用程序的时候都是找到本地路径的exe程序,然后使用:

1runtime runtime = runtime.getruntime();
2runtime.exec("cmd.exe /c "  excutestr );


重新启动应用程序,太复杂,而且上次打开的参数都会丢失。

    今天早上翻看了一下eclipse的org.eclipse.update.ui cvs,找到了:
platformui.getworkbench().restart();
使用这个重新启动rcp应用程序,非常的方便,而且参数都在,即使在开发环境下也一样没有问题!
posted @ 阿南 阅读(1545) | |  

2009年3月15日

    这个问题非常的重要!
    做过rcp开发的朋友应该都遇到过,使用abstractsplashhandler做的登陆界面,在windows的任务栏上面是不会显示的,这个问题让客户用起来很麻烦,总是动不动就找不到登陆界面了!现在有解决办法了~

 1here is the modified code of the interactivesplashhandler class:
 2
 3
 4    private shell splash;
 5
 6
 7    public void init(final shell splash) {
 8        // shell replaced by one with task bar icon
 9        // (old style: swt.tool, new style: swt.no_trim)
10        replaceshell(splash);
11        // store the shell
12        super.init(getsplash());
13        // configure the shell layout
14        configureuisplash();
15        // create ui colors and fonts
16        createcolorsandfonts();
17        // create ui
18        createui();
19        // create ui listeners
20        createuilisteners();
21        // force the splash screen to layout
22        splash.dispose();
23        getsplash().layout(true);
24        // keep the splash screen visible and prevent the rcp application from
25        // loading until the close button is clicked.
26        doeventloop();
27    }

28
29
30    private void replaceshell(shell splash) {
31        shell newsplash = new shell(display.getcurrent(), swt.no_trim);
32        newsplash.setbackgroundimage(splash.getbackgroundimage());
33        newsplash.setbounds(splash.getbounds());
34        newsplash.setfont(splash.getfont());
35        newsplash.setvisible(true);
36        setsplash(newsplash);
37    }

38
39
40    public shell getsplash() {
41        return splash;
42    }

43
44
45    public void setsplash(shell splash) {
46        this.splash = splash;
47    }

48
49

稍稍进行改造,就可以了~
posted @ 阿南 阅读(1286) | |  
仅列出标题  下一页
网站地图