无聊人士

搬家==》www.soapui.cn

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 60 评论 :: 0 Trackbacks

#

最近开始尝试hibernate annotations,终于成功的将手上一个小应用转为annotations :)

1、spring orm support
与原来使用LocalSessionFactoryBean相比,变动不大(AnnotationSessionFactoryBean本来就是从LocalSessionFactoryBean类继承过来的嘛)
 1    <bean
 2         id="sessionFactory"
 3         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
 4         parent="AbstractSessionFactory">
 5         <property name="annotatedClasses">
 6             <list>
 7                 <value>xxx.xxx.xxx.domain.Account</value>
 8             </list>
 9         </property>
10     </bean>
11     <bean
12         id="AbstractSessionFactory"
13         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
14         abstract="true">
15         <property
16             name="dataSource"
17             ref="DataSource" />
18         <property name="hibernateProperties">
19             <props>
20                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
21                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
22                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
23                 <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
24                 <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
25             </props>
26         </property>
27         <property
28             name="lobHandler"
29             ref="DefaultLobHandler" />
30     </bean>
2、id的配置
非常简单,在id的getter上面加个“@Id”就可以了。此时采用的id策略是javax.persistence.GenerationType.AUTO,也可以再加上“@GeneratedValue(generator =GenerationType.IDENTITY|GenerationType.SEQUENCE|GenerationType.TABLE)”换成其它策略。
我的应用采用的是hibernate的uuid策略,就不得不在这儿使用hibernate的扩展了
  @Id
  @Column(length 
= 32)
  @GeneratedValue(generator 
= "system-uuid")
  @GenericGenerator(name 
= "system-uuid", strategy = "uuid")

3、级联策略
在ejb3-persistence.jar中只定义了ALL、MERGE、PERSIST、REFRESH、REMOVE,比较恶心的就是,删除对象的时候,并不会级联删除关联对象,而是用update xx set parent_id=null where parent_id=?这类语句把关系干掉了事。不得已,在这儿用了hibernate的DELETE_ORPHAN。
  @OneToMany(targetEntity = Attachment.class)
  @Cascade(value 
= {org.hibernate.annotations.CascadeType.DELETE_ORPHAN,
      org.hibernate.annotations.CascadeType.ALL})
  @JoinColumn(name 
= "info_id")
4、CACHE
ejb3-persistence.jar里面没有找到cache的配置,继续请出hibernate来干活
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name 
= "T_INFO")
@Cache(usage 
= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
5、自定义字段类型
我的POJO中有一个private String content;的属性,按ejb3配成@Lob后,被处理成了text类型,text 64k的存储容量还是比较可怜了。
  @Lob
  @Column(columnDefinition 
= "LongText")

posted @ 2006-10-12 15:38 mmwy 阅读(4870) | 评论 (0)编辑 收藏

以如下字符串为例:
<h1>AVG Internet Security full license free of charge!</h1>
<p>GRISOFT
, the supplier of AVG security software, has released the Public Beta 2 version of the upcoming AVG 7.5 edition. Individual programs are now available for testing purposes to everyone. Why not participate in our AVG beta testing, complete the questionnaire about testing AVG 7.5 and get a free license? We will draw 100 participants from all of the received feedback forms. Winners will obtain a two-year license for AVG Internet Security 7.5 completely free of charge.</p>
使用RichTextEditor进行编辑时,产生的html有oFCKeditor_InfoEdit_model_content.Value = 'xxx'字样,由于字符串中包含单引号、双引号、换行符等字符,编辑器无法进行处理,浏览器控制台报js错误。

在freemarker中提供了一个StringUtil工具,在使用RichTextEditor前,应使用StringUtil.javaStringEnc()进行预处理。
posted @ 2006-09-25 12:05 mmwy 阅读(804) | 评论 (1)编辑 收藏

用webwork 2.2.4、sitemesh 2.2.1、freemarker 2.3.8,操作系统为winxp pro sp2.

web.xml配置大致如下:

 1      < filter >
 2          < filter-name > encodingFilter </ filter-name >
 3          < filter-class > com.yninfo.rules.web.util.CharacterEncodingFilter </ filter-class >
 4          < init-param >
 5              < param-name > encoding </ param-name >
 6              < param-value > UTF-8 </ param-value >
 7          </ init-param >
 8          < init-param >
 9              < param-name > forceEncoding </ param-name >
10              < param-value > true </ param-value >
11          </ init-param >
12      </ filter >
13      < filter >
14          < filter-name > webwork-cleanup </ filter-name >
15          < filter-class > com.opensymphony.webwork.dispatcher.ActionContextCleanUp </ filter-class >
16      </ filter >
17      < filter >
18          < filter-name > sitemesh </ filter-name >
19          < filter-class > com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter </ filter-class >
20      </ filter >
21      < filter >
22          < filter-name > webwork </ filter-name >
23          < filter-class > com.opensymphony.webwork.dispatcher.FilterDispatcher </ filter-class >
24      </ filter >
25      < filter-mapping >
26          < filter-name > webwork-cleanup </ filter-name >
27          < url-pattern > *.ftl </ url-pattern >
28      </ filter-mapping >
29      < filter-mapping >
30          < filter-name > sitemesh </ filter-name >
31          < url-pattern > *.ftl </ url-pattern >
32      </ filter-mapping >
33      < filter-mapping >
34          < filter-name > encodingFilter </ filter-name >
35          < url-pattern > *.ftl </ url-pattern >
36      </ filter-mapping >
37      < filter-mapping >
38          < filter-name > webwork </ filter-name >
39          < url-pattern > *.ftl </ url-pattern >
40      </ filter-mapping >
41      < filter-mapping >
42          < filter-name > webwork </ filter-name >
43          < url-pattern > /webwork/* </ url-pattern >
44      </ filter-mapping >

xwork.xml配置如下:
1        <action
2            name="index"
3            class="com.opensymphony.xwork.ActionSupport">
4            <result
5                name="success"
6                type="freemarker">
7                <param name="location">/admin/index.ftl</param>
8            </result>
9        </action>
sitemesh 配置如下
1    <decorator
2        name="admin"
3        page="/admin/main.ftl">
4        <pattern>/admin/*.ftl</pattern>
5    </decorator>

在tomcat 5.1.17、resin 3.0.19上跑得顺顺利利的,一移到weblogic 8.1.5上就报错
 1####<2006-9-8 上午02时46分44秒 CST> <Error> <HTTP> <www-c1f900a12b2> <myserver> <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <> <BEA-101104> <Servlet execution in servlet context "ServletContext(id=2664121,name=rules,context-path=/rules)" failed, java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '4949' bytes instead of stated: '4763' bytes..
 2java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '4949' bytes instead of stated: '4763' bytes.
 3    at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength()V(ServletOutputStreamImpl.java:481)
 4    at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength()V(ServletResponseImpl.java:1253)
 5    at weblogic.servlet.internal.ServletResponseImpl.send()V(ServletResponseImpl.java:1265)
 6    at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThread;)V(ServletRequestImpl.java:2771)
 7    at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(ExecuteThread.java:224)
 8    at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
 9    at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Source)
10

折腾了好几天,各种方式试过,最后还是从sitemesh cvs上下了最新的源码重新编译解决问题。
posted @ 2006-09-13 17:52 mmwy 阅读(1938) | 评论 (1)编辑 收藏

感谢google,感谢"webwork2.2.2的富文本编辑器的不完美解决方法"一文,感谢李李。当然,最应该感谢的是开源(刨源代码刨出来的)。

1、解决/webwork/*的路径问题
解决办法见“http://www.blogjava.net/mmwy/archive/2006/08/18/64234.html
BTW:也可以象“不完美解决方法”一文中描述的一样,设webwork.serve.static=false,将static/下的东西拷至/webwork目录下。

2、重写(继承)DefaultRichtexteditorConnector类,解决无法在windows平台上创建目录的问题

 1 public   class  RichtexteditorConnector  extends  DefaultRichtexteditorConnector  {
 2    /**
 3    * 解决无法在windows平台上创建目录的问题
 4    * overriding methods
 5    * (non-Javadoc)
 6    *  @see  com.opensymphony.webwork.components.DefaultRichtexteditorConnector#calculateActualServerPath(java.lang.String, java.lang.String, java.lang.String)
 7     */

 8    protected  String calculateActualServerPath(String actualServerPath,
 9       String type, String folderPath)  throws  Exception  {
10     String path  =  StringUtils.replaceChars( " file:/// "
11          +  servletContext.getRealPath( " / "   +  actualServerPath),  ' \\ ' ' / ' );
12     makeDirIfNotExists(path);
13     path  =  path.endsWith( " / " )
14        ?  path
15       : path  +   " / " ;
16      return  path  +  type  +  folderPath;
17   }

18
19    private  ServletContext servletContext;
20
21    public   void  setServletContext(ServletContext servletContext)  {
22      this .servletContext  =  servletContext;
23   }

24 }

3、配置webwork.xml,解决上传路径自定义问题(actualServerPath参数,默认的使用DefaultRichtexteditorConnector类中protected String _actualServerPath = "/com/opensymphony/webwork/static/richtexteditor/data/";的定义),解决获取上传文件url路径问题(默认的使用AbstractRichtexteditorConnector类中String _serverPath = "/webwork/richtexteditor/data/";的定义)

 1      < package
 2          name ="richtexteditor-browse"
 3         extends ="webwork-default"
 4         namespace ="/webwork/richtexteditor/editor/filemanager/browser/default/connectors/jsp" >
 5          < action
 6              name ="connector"
 7             class ="com.mmwy.weblogic_sitemesh.util.RichtexteditorConnector"
 8             method ="browse" >
 9              < result
10                  name ="getFolders"
11                 type ="richtexteditorGetFolders"   />
12              < result
13                  name ="getFoldersAndFiles"
14                 type ="richtexteditorGetFoldersAndFiles"   />
15              < result
16                  name ="createFolder"
17                 type ="richtexteditorCreateFolder"   />
18              < result
19                  name ="fileUpload"
20                 type ="richtexteditorFileUpload"   />
21              < param  name ="actualServerPath" > /upload/ </ param >
22              < param  name ="serverPath" > /upload/ </ param >
23          </ action >
24      </ package >
25
26      < package
27          name ="richtexteditor-upload"
28         extends ="webwork-default"
29         namespace ="/webwork/richtexteditor/editor/filemanager/upload" >
30          < action
31              name ="uploader"
32             class ="com.mmwy.weblogic_sitemesh.util.RichtexteditorConnector"
33             method ="upload" >
34              < result  name ="richtexteditorFileUpload"   />
35              < param  name ="actualServerPath" > /upload/ </ param >
36              < param  name ="serverPath" > /upload/ </ param >
37          </ action >
38      </ package >

注意:serverPath路径必须有后面的"/"。

4、解决获取上传文件url只能使用80端口的问题
顺着源码一直跟进,首先是DefaultRichtexteditorConnector类:

1      protected  String calculateServerPath(String serverPath, String folderPath, String type)  throws  Exception  {
2          // return UrlHelper.buildUrl(serverPath, _request, _response, null, _request.getScheme(), true, true, true);
3          return  UrlHelper.buildUrl(serverPath + type + folderPath, _request, _response,  new  HashMap(), _request.getScheme(),  true true true );
4     }

再跟进UrlHelper.buildUrl方法

 1      public   static  String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map params, String scheme,  boolean  includeContext,  boolean  encodeResult,  boolean  forceAddSchemeHostAndPort)  {
 2         StringBuffer link  =   new  StringBuffer();
 3
 4          boolean  changedScheme  =   false ;
 5
 6          int  httpPort  =  DEFAULT_HTTP_PORT;
 7
 8          try   {
 9             httpPort  =  Integer.parseInt((String) Configuration.get(WebWorkConstants.WEBWORK_URL_HTTP_PORT));
10         }
  catch  (Exception ex)  {
11         }

12
13          int  httpsPort  =  DEFAULT_HTTPS_PORT;
14
15          try   {
16             httpsPort  =  Integer.parseInt((String) Configuration.get(WebWorkConstants.WEBWORK_URL_HTTPS_PORT));
17         }
  catch  (Exception ex)  {
18         }

19

因此,解决这个问题的方法很简单,只要在webwork.properties中设webwork.url.http.port = 8080即可。

5、语言问题
RichTextEditor标记autoDetectLanguage默认值为true,在中文环境下使用/editor/lang/zh.js,显示繁体中文字符,而简体中文应该使用zh-cn.js,因此,应设置defaultLanguage="zh-cn"。

1              < @ww .richtexteditor
2                 theme ="simple"
3                 defaultLanguage ="zh-cn"
4                 width ="750"
5                 height ="500"
6                 name ="description4"   />

 



 

posted @ 2006-09-11 12:29 mmwy 阅读(2260) | 评论 (0)编辑 收藏

在网上google半天也没见人解决,还是看了FilterDispatcher的源码才解决,特地贴到blog上,备忘吧。


在com.opensymphony.webwork.dispatcher.FilterDispatcher中有以下代码
1             if ("true".equals(Configuration.get(WebWorkConstants.WEBWORK_SERVE_STATIC_CONTENT)) 
2                     && resourcePath.startsWith("/webwork")) {
3                 String name = resourcePath.substring("/webwork".length());
4                 findStaticResource(name, response);
5             } else {
6                 // this is a normal request, let it pass through
7                 chain.doFilter(request, response);
8             }
也就是说,只要webwork.properties文件中webwork.serve.static=true(系统默认),并且FilterDispatcher这个过滤器对/webwork/*这个url进行了处理的话,就不会发生使用ww2提供的datepicker时,找不到/webwork/*下所有的js、image等资源,不得不手工拷贝webwork.jar中/com/opensymphony/webwork/static为/webwork/*的情况。
 1     <filter>
 2         <filter-name>webwork</filter-name>
 3         <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
 4     </filter>
 5     <filter-mapping>
 6         <filter-name>webwork</filter-name>
 7         <url-pattern>*.action</url-pattern>
 8     </filter-mapping>
 9     <filter-mapping>
10         <filter-name>webwork</filter-name>
11         <url-pattern>/webwork/*</url-pattern>
12     </filter-mapping>

posted @ 2006-08-18 02:16 mmwy 阅读(1538) | 评论 (2)编辑 收藏

很简单,就几个jar包

1 groovy-all- 1.0 -jsr- 05 .jar
2 groovysoap-all- 20060503 .jar
3 activation.jar
4 log4j- 1.2.13 .jar
5 mail.jar

拿以前HelloXfire时的Echo接口做测试,代码少得可怜

 1 import  groovy.net.soap.SoapClient
 2
 3 class  HelloGroovy  {
 4
 5    static   void  main(args)  {
 6     def proxy  =   new  SoapClient( " http://localhost:8080/query/EchoService?wsdl " );
 7     System.out.println(proxy.sayHello());     
 8   }

 9
10 }

在Eclipse里面写完,一运行,出来个“HelloWorld”,顺利得让我简直不敢相信。
posted @ 2006-05-06 12:41 mmwy 阅读(575) | 评论 (1)编辑 收藏

受白衣同志的当,上了xfire的贼船,抛弃了axis,呜!

xfire 1.0终于final了,试用了一下,,感觉同1.0M6相比,使用变化不大。

看看user guide,照着examples下的例子,基本上hello xfire不成问题。

1、jar包

同以往一样,xfire user guide中的Dependency Guide.html还是说得不明不白,除了让人发晕,没有太大的实际意义。

SNAG-0000.jpg

注:
1)XmlSchema-1.0.jar、jakatra commons httpclient/codec只有在Dynamic Client中才需要用。
2)采用quick start、examples/book中用的service.xml配置方法时,xbean-spring与spring有兼容问题,我用1.2.7、2.0M2的spring时,总是报addPropertyValue(String,Object)之类的异常,换成1.2.6以后一切正常。用examples/spring例子中的配置方法时,没有出现这种情况。

2、quick start、examples/book

这种做法很简单,好象也不太合我的胃口,就没仔细折腾。
(1)在web.xml中配置一下

 1  <servlet>
 2    <servlet-name>XFireServlet</servlet-name>
 3    <display-name>XFire Servlet</display-name>
 4    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
 5  </servlet>
 6
 7  <servlet-mapping>
 8    <servlet-name>XFireServlet</servlet-name>
 9    <url-pattern>/servlet/XFireServlet/*</url-pattern>
10  </servlet-mapping>
11
12  <servlet-mapping>
13    <servlet-name>XFireServlet</servlet-name>
14    <url-pattern>/services/*</url-pattern>
15  </servlet-mapping>

(2)编码。这个不用说,呵呵
(3)在classpath中,建META-INF/xfire/services.xml配置文件,把刚才做好的webservices配置一下。

1<beans xmlns="http://xfire.codehaus.org/config/1.0">
2  <service>
3    <name>BookService</name>
4    <namespace>http://xfire.codehaus.org/BookService</namespace>
5    <serviceClass>org.codehaus.xfire.demo.BookService</serviceClass>
6  </service>
7</beans>

(4)然后就是deploy,访问http://ip:port/webapp name/BookService?WSDL之类的动作了。

3、examples/spring

xfire和spring勾搭得比较紧密啊,只需要简单配置一下,就可以把spring.xml中配置好的bean拿出来做web services了。
(1)折腾spring的东西(略)。
(2)在web.xml中配置一下(注意xfire那一段)

 1    <context-param>
 2        <param-name>contextConfigLocation</param-name>
 3        <param-value>/WEB-INF/applicationContext.xml classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
 4    </context-param>
 5
 6    <listener>
 7        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 8    </listener>
 9
10    <servlet>
11        <servlet-name>xfire</servlet-name>
12        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
13    </servlet>
14    <servlet-mapping>
15        <servlet-name>xfire</servlet-name>
16        <url-pattern>/*</url-pattern>
17    </servlet-mapping>

(3)在WEB-INF/xfire-servlet.xml中把spring bean同xfire webservices“关联”起来。这个xfire-servlet.xml实际上就是一个标准的spring.xml配置文件。

 1<?xml version="1.0" encoding="UTF-8"?>
 2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 3<beans>
 4    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 5        <property name="urlMap">
 6            <map>
 7                <entry key="/EchoService" value-ref="echo"/>
 8            </map>
 9        </property>
10    </bean>
11    
12    <bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter">
13        <property name="serviceFactory" ref="xfire.serviceFactory"/>
14        <property name="xfire" ref="xfire"/>
15        <property name="serviceBean" ref="echoBean"/>
16        <property name="serviceClass" value="org.codehaus.xfire.spring.example.Echo"/>>
17    </bean>
18</beans>

注:第16行,xfire 1.0M6中用serviceInterface,现在改成serviceClass了。

(4)然后就完工,用http://ip:port/webapp name/xfire/EchoService?WSDL可以看到WSDL内容。

4、客户端

按我的恶习,这类事情,肯定是直接开vs.net或者C# developer来显摆一下了。不得不承认,.net里面调web services就是方便啊!
SNAG-0001.jpg
至于java做client么,以前一般是用axis来生成client class,xfire也提供类似的工具,不过对于xfire来说,最简单的办法就是用Dynamic Client,几行代码搞定。

1    Service serviceModel = new ObjectServiceFactory().create(Echo.class);
2    Echo service = (Echo) new XFireProxyFactory().create(serviceModel,
3        "http://localhost:8080/xfire-examples/EchoService");
4    String result = service.echo("ok");


 

posted @ 2006-03-02 10:47 mmwy 阅读(11078) | 评论 (13)编辑 收藏

首先强烈遣责water ye同学不负责任的行为,那家伙在blog上贴了一段spring 2.0m2的test代码就了事,居然不测试一下,结果俺的spring groovy test代码折腾半天才过去。

测试代码俺就不贴了,spring的配置就够了
 1 <?xml version="1.0" encoding="GBK"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
 3     "http://www.springframework.org/dtd/spring-beans.dtd">
 4 <beans>
 5     <bean class="org.springframework.scripting.support.ScriptFactoryPostProcessor" />
 6     <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
 7         <constructor-arg>
 8             <value>inline:
 9                     package spring.groovy;
10                     
11                     class GroovyInlineMessenger  implements Messenger{
12                         void sayHello(){
13                             System.err.println("Hello");
14                         }
15                     }
16             </value>
17         </constructor-arg>
18     </bean>
19     <bean id="messenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
20         <constructor-arg value="classpath:spring/groovy/GroovyMessenger.groovy" />
21         <property name="message" value="Hello World!" />
22     </bean>
23 </beans>

1、第5行的bean定义一定要有,估计是提前编译groovy脚本的(具体的可能啃一下源码就明白了)。
2、inlineMessenger这个bean的定义,inline一定要紧跟着<value>写,我为了美观,弄成下面两种写法都没过去。
 1     <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
 2         <constructor-arg>
 3             <value>
 4             inline:
 5                     package spring.groovy;
 6                     
 7                     class GroovyInlineMessenger  implements Messenger{
 8                         void sayHello(){
 9                             System.err.println("Hello");
10                         }
11                     }
12             </value>
13         </constructor-arg>
14     </bean>
1     <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
 2         <constructor-arg>
 3             <value>
 4             <![CDATA[inline:
 5                     package spring.groovy;
 6                     
 7                     class GroovyInlineMessenger  implements Messenger{
 8                         void sayHello(){
 9                             System.err.println("Hello");
10                         }
11                     }]]>
12             </value>
13         </constructor-arg>
14     </bean>
写成这样倒是过的
 1     <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
 2         <constructor-arg>
 3             <value><![CDATA[inline:
 4                     package spring.groovy;
 5                     
 6                     class GroovyInlineMessenger  implements Messenger{
 7                         void sayHello(){
 8                             System.err.println("Hello");
 9                         }
10                     }]]>
11             </value>
12         </constructor-arg>
13     </bean>
俺平时习惯让myeclipse对xml进行格式化,照这么看来,估计一不小心,按个ctrl+shift+F,好端端的spring groovy代码就过不去了,然后就慢慢找问题吧。

posted @ 2006-02-07 10:09 mmwy 阅读(928) | 评论 (0)编辑 收藏


1、webwork.properties

ww2.2.1默认的webwork.properties配置已经非常不错,i18n用utf-8,ioc用spring,fileup用jakarta。因此,我的webwork.properties就只剩两行
1 webwork.multipart.maxSize=209715200
2 webwork.action.extension=ftl #个人恶习,用freemarker做view,再加上不喜欢.action、.do的扩展名,就直接配成ftl了,用frontpage等软件时也比较方便

2、web.xml

ww2.1.7是配servlet的,为了与spring集成,还得加上一个listener
 1     <context-param>
 2         <param-name>contextConfigLocation</param-name>
 3         <param-value>classpath:beans.xml,classpath:com/yninfo/rules/spring.scheduling.xml</param-value>
 4     </context-param>
 5     <listener>
 6         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 7     </listener>
 8     <listener>
 9         <listener-class>com.opensymphony.xwork.spring.SpringExternalReferenceResolverSetupListener</listener-class>
10     </listener>
11     <servlet>
12         <servlet-name>webwork</servlet-name>
13         <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
14         <load-on-startup>1</load-on-startup>
15     </servlet>
16     <servlet-mapping>
17         <servlet-name>webwork</servlet-name>
18         <url-pattern>*.ftl</url-pattern>
19     </servlet-mapping>
ww2.2.1改成filter,也不需要配listener来处理spring

3、xwork.xml

原来的配置
 1 <xwork>
 2     <include file="webwork-default.xml" />
 3     <package name="default" extends="webwork-default"
 4         externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver">
 5         <interceptors>
 6             <interceptor name="reference-resolver"
 7                 class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
 8             <interceptor-stack name="default-stack">
 9                 <interceptor-ref name="timer" />
10                 <interceptor-ref name="logger" />
11                 <interceptor-ref name="completeStack" />
12                 <interceptor-ref name="reference-resolver" />
13             </interceptor-stack>
14         </interceptors>
15 
16         <action name="rule" class="com.yninfo.rules.web.action.RuleAction">
17             <result name="success" type="freemarker">
18                 <param name="location">/rule.ftl</param>
19             </result>
20             <result name="error" type="freemarker">
21                 <param name="location">/rule_error.ftl</param>
22             </result>
23             <external-ref name="ruleManager">RuleManager</external-ref>
24         </action>
25     </package>
26 </xwork>
ww2.2.1以后的配置,去掉了上面旧配置中粗体部分
 1 <xwork>
 2     <include file="webwork-default.xml" />
 3     <package name="default" extends="webwork-default">
 4         <interceptors>
 5             <interceptor name="reference-resolver"
 6                 class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
 7             <interceptor-stack name="default-stack">
 8                 <interceptor-ref name="timer" />
 9                 <interceptor-ref name="logger" />
10                 <interceptor-ref name="completeStack" />
11             </interceptor-stack>
12         </interceptors>
13 
14         <action name="rule" class="com.yninfo.rules.web.action.RuleAction">
15             <result name="success" type="freemarker">
16                 <param name="location">/rule.ftl</param>
17             </result>
18             <result name="error" type="freemarker">
19                 <param name="location">/rule_error.ftl</param>
20             </result>
21         </action>
22     </package>
23 </xwork>

4、注意:

ww2.2.1中ioc使用spring,默认的是byName,要求spring的beans.xml配置文件中id与ww action中的名称完全相同,由于我个人的恶习,不习惯首字母小写的写法,因此,在action中定义private AccountManager accountManager;,在spring中定义bean id="AccountManager",结果spring不能将AccountManager这个bean注入action的accountManager中,抛出NPE的异常
posted @ 2006-02-04 16:46 mmwy 阅读(548) | 评论 (1)编辑 收藏

1、安装
从trutix 3.0的碟中,上传两个RPM文件DHCP_COM.RPM、DHCP_SER.RPM,然后使用rpm -ivh xxxx.rpm安装即可。

2、配置
root@trustix-v22-cvs-001 ~# cat /etc/dhcpd.conf
# Do not claim to rule this network.  You want to change this if you really
# want it to work.
not authoritative;

# Do not try to update DNS by default
ddns-update-style none;

#网络
subnet 61.138.209.0 netmask 255.255.255.0 {
        range 61.138.209.235 61.138.209.240;  #地址范围
        default-lease-time 600;                             #默认租期时间
        max-lease-time 3600;                               #用户可以获得的最长租期时间
        option subnet-mask 255.255.255.0;         #掩码
        option routers 61.138.209.1;                    #网关
        option domain-name-servers 61.166.150.101; #DNS地址
}
#为某个MAC地址绑定IP
host usr1{
        hardware ethernet 00:50:8D:5A:9C:E9;
        fixed-address 61.138.209.235;
}

posted @ 2005-12-29 18:07 mmwy 阅读(437) | 评论 (0)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4 下一页