`
文章列表
对于系统的报表来说,使用spring MVC展现需要对于每个报表修改很多东西,而同时报表的展现效果开发也需要比较多的时间,比如报表常用的分组,按某列排序,多种格式输出,分页输出等,因此开始我就努力去寻找一个容易使用的报表。 birt是eclipse开发的报表控件,这么权威的东西当然要用一用啦!把自带的例子跑起来以后,我就开始往我的appfuse框架中去集成。然而。。。 首先碰到的问题就是:birt集成需要把很多html/jsp/js文件导入到系统中,加入很多的lib,web.xml需要修改等。好不容易放到了一起,发现解析总是报错,原来在产生报表的时候,birt自动调用它自带的一个html,而这个 ...
对于java来说,唯一的参数传递方式就是传值!对于对象的传递来说,传递的是内存地址的拷贝。 http://java.ccidnet.com/art/3737/20050527/472879_1.html http://www.an-ping.com/forum/blog/detail.asp?blog_id=2&content_id=127
在使用hibernate进行类关联的时候,通常采用如下的做法:  <class name="org.appfuse.task.model.Advertisement" table="advertisement_t" > ... <many-to-one name="resource" class="org.appfuse.task.model.Resource" ...
hibernate对于子类的映射有3种方式,这里描述的是每个具体子类一张表的方式。 这种策略是使用union-subclass标签来定义子类的。每个子类对应一张表,而且这个表的信息是完备的,即包含了所有从父类继承下来的属性映射的字段(这就是它跟joined-subclass的不同之处,joined-subclass定义的子类的表,只包含子类特有属性映射的字段)。实现这种策略的时候,有如下步骤: 1、父类用普通标签定义即可 2、子类用标签定义,在定义union-subclass的时候,需要注意如下几点: a)Union-subclass标签不再需要包含key标签(与joined-subclas ...
先说说cascade的取值:如果用save-update,只是对存储过程和更新过程级联,在删除数据的时候,引用表的外键为空,不做级联删除,而用delete的话时,在对父表操作时,同时级联所有的更新操作和删除操作,也就是说在删除父表时同时删除子表中引用父表pk做外键的项,但是和内存中不同步.all-delete-orphan可以和内存中数据做同步. 再说说应用场合: BookType bookType = new BookType(); Book book1 = new Book(); book1.setType(bookType); Book book2 = new Book(); book2. ...
我们知道静态变量是ClassLoader级别的,如果Web应用程序停止,这些静态变量也会从JVM中清除。但是线程则是JVM级别的,如果你在Web应用中启动一个线程,这个线程的生命周期并不会和Web应用程序保持同步。也就是说,即使你停止了Web应用,这个线程依旧是活跃的。正是因为这个很隐晦的问题,所以很多有经验的开发者不太赞成在Web应用中私自启动线程。     如果我们手工使用JDK Timer(Quartz的Scheduler),在Web容器启动时启动Timer,当Web容器关闭时,除非你手工关闭这个Timer,否则Timer中的任务还会继续运行! 要终止自己的线程,需要按照下面的文章, ...
做一个能活的时间长的web server还真是不容易,这不没几天,tomcat又死掉了。这次死掉的方式跟以往又不同,在catalina.out输出日志如下: Dec 5, 2007 8:09:46 AM org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status 在网上搜了一下,也没看到啥原因,先按照提示说的,把maxThreads增加试试 ...
现在我的服务器抛了如下的异常: Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap space Oct 22, 2007 7:53:54 PM org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run SEVERE: Caught exception (java.lang.OutOfMemoryError: Java heap spac ...
spring ioc的最大特点是依赖注入,对于observer pattern来说,使用spring框架最大的麻烦在于registerObserver的时候,需要双方的class都已经构造成功,而且spring的配置都应当是基于接口的(否则在aop配置transaction的时候会抛异常),因此如何方便的配置是应用observer pattern的关键。 首先编写observer pattern的基础类: java 代码 public interface Observer {        public void update(Object arg);    }   ...
在使用spring进行ioc配置aop的时候,我们通常是对接口进行编程的,属性的注入是接口。但如果由于某些原因,我们需要将class注入的时候,我们就会得到一个异常: java 代码 PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Fail    ed to convert property value of type [$Proxy7] to required type [org.appfuse.net    bar.service.impl.NetBarM ...
用axis开发web service服务接口,对方(客户端)希望soap返回的编码是utf-8的,可现在是gb2312的。找了半天api也没有发现设置encoding的方法。最后发现原来这个encoding不是程序设置的: SOAP 1.1 HTTP/SOAP 消息的媒体类型为“text/xml”,其编码处理是在 RFC2376 中定义的。而 SOAP 1.2 HTTP/SOAP 消息的媒体类型为“application/soap+xml”,其编码处理是在 RFC3023 中定义的。这些 RFC 规范定义了下列行为: SOAP 1.1: HTTP/SOAP 请求的字符集由 HTTP 头中的 C ...
使用mysql,经常碰到too many connections的报错,登录不上去,只能重新启动。通过如下的方法可以解决这个问题: 1。首先修改/etc/my.cnf文件,增加如下一行 set-variable = max_connections=500 或在启动命令中加上参数 max_connections=500 就是修改最大连接数,然后重启mysql.默认的连接数是100,太少了,所以容易出现如题错误. 2。重新启动mysql,通过show variables可以查看max_connections是否修改成功。 3。为了防止发生too many connections时候无法登录的问题 ...
在hibernate执行标准的sql,一开始写了如下的代码: java 代码 public List querySQL(final String sql) {        HibernateTemplate ht = getHibernateTemplate();        return (List) ht.execute(new HibernateCallback() {                public Object doInHibernate(Session session) throws HibernateException {    ...
新接触mysql5,对用户管理这一部分操作很是不熟悉,添加的用户不是没有登录的权限,就是创建的procedure无法 访问。摸索了半天,把找到的资料总结在这里。 首先是用户的创建,可以用grant GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'     ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION; 也可以直接插入: INSERT INTO user (Host,User,Password)     ->     VALUES('localhost','dummy',PAS ...
appfuse中使用/common/pickList.jsp来处理多选,在开发的过程中开始照猫总是画不出虎来,后来才发现涉及到好几个地方。 1。pickList.jsp里面使用List<LabelValue>进行处理,因此要进行转换。比如左侧的availableRoles就是在StartupListener中把需要的数据放到context中。右侧的list是在User中提供getRoleList这样的辅助方法来获得。 2。在userForm.jsp中,需要增加下面的js,来保证提交的时候userRoles都被选中,否则数据就提交不上去: <!-- This is here so ...
Global site tag (gtag.js) - Google Analytics