<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>moses3017</title>
    <description></description>
    <link>http://moses3017.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Java初始化顺序</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/209503" style="color:red;">http://moses3017.javaeye.com/blog/209503</a>&nbsp;
          发表时间: 2008年06月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java中初始化顺序：<br />父类的静态变量、静态初始化块 > 子类的静态变量、静态块 > 父类的变量、初始化块、构造函数 > 子类的变量、初始化快、构造函数<br />其中静态变量和静态初始化块、变量和初始化块的初始化顺序由在代码中的出现顺序决定。
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/209503#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 29 Jun 2008 19:32:04 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/209503</link>
        <guid>http://moses3017.javaeye.com/blog/209503</guid>
      </item>
      <item>
        <title>Java中注意点</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/198502" style="color:red;">http://moses3017.javaeye.com/blog/198502</a>&nbsp;
          发表时间: 2008年05月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 基本类型进行运算时，只要类型比int小，运算时就会自动转换为int类型。<br />2. foreach可以用于任何Iterable对象。
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/198502#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 30 May 2008 07:23:48 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/198502</link>
        <guid>http://moses3017.javaeye.com/blog/198502</guid>
      </item>
      <item>
        <title>Thinking in java</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/198050" style="color:red;">http://moses3017.javaeye.com/blog/198050</a>&nbsp;
          发表时间: 2008年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1） 3.10按位操作符，p49-52
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/198050#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 May 2008 23:51:43 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/198050</link>
        <guid>http://moses3017.javaeye.com/blog/198050</guid>
      </item>
      <item>
        <title>在运行中添加命令</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/198015" style="color:red;">http://moses3017.javaeye.com/blog/198015</a>&nbsp;
          发表时间: 2008年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大家都知道，在运行中敲入notepad确定后会打开一个记事本，如果把自己常用的软件也加入到运行命令中一定会很方便，下面就是我找到的添加运行命令的方法：<br />打开注册表编辑器：运行中键入regedit回车<br />然后找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths，在下面添加你要增加的项就行了。<br />比如：新建项eclipse.exe，数值数据：D:\Program Files\eclipse\eclipse.exe<br />这里的项好像一定得以.exe结尾。
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/198015#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 May 2008 21:42:03 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/198015</link>
        <guid>http://moses3017.javaeye.com/blog/198015</guid>
      </item>
      <item>
        <title>文件路径中的“.”，new File(&quot;.&quot;)</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/197215" style="color:red;">http://moses3017.javaeye.com/blog/197215</a>&nbsp;
          发表时间: 2008年05月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天在看Thinking in java时发现这样一行代码：<br /><pre name="code" class="java">File file = new File(".");</pre><br />起初十分纳闷，不懂这个“.”代表什么意思。<br />后来经过一番实验返现：<br />“.”知识代表当前工作目录的意思，它是一个相对路径的写法，一般也就是jvm调用路径，可以通过<pre name="code" class="java">System.getProperty("user.dir")</pre>得到。<br />如果这样写：<pre name="code" class="java">File file = new File("..");</pre><br />则表示得到user.dir的上层目录。<br />最后总结如下：<br />“.”当前的工作目录，即user.dir，相当于“.\\”；也就是<pre name="code" class="java">File file = new File(".");</pre>与<pre name="code" class="java">File file = new File(".\\");</pre>是等价的。<br />“..”代表user.dir上层目录，与“..\\”等价<br />“/”linux下表示根目录，windows下表示user.dir所在盘符的根目录，同样等价于“\\”
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/197215#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 May 2008 22:07:20 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/197215</link>
        <guid>http://moses3017.javaeye.com/blog/197215</guid>
      </item>
      <item>
        <title>【转】XFire与Spring结合的几种方式</title>
        <author>moses3017</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://moses3017.javaeye.com">moses3017</a>&nbsp;
          链接：<a href="http://moses3017.javaeye.com/blog/189766" style="color:red;">http://moses3017.javaeye.com/blog/189766</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、使用org.codehaus.xfire.spring.XFireSpringServlet与ServiceBean<br /><br />1.1 web.xml的配置<br /><br /><pre name="code" class="xml">
&lt;web-app>
&lt;display-name>Spring Image Database&lt;/display-name>
&lt;description>Spring Image Database sample application&lt;/description>
&lt;!--
These values are used by ContextLoaderListener, defined immediately below.
The files listed below are used to initialize the business logic portion of the application.
Each dispatcher servlet (defined further down) has their own configuration file,
which may or may not depend on items in these files.
-->
&lt;context-param>
&lt;param-name>contextConfigLocation&lt;/param-name>
&lt;param-value>
classpath:applicationContext-webservice.xml
&lt;/param-value>
&lt;/context-param>
&lt;!-- Log4j configuration listener-->
&lt;listener>
&lt;listener-class>org.springframework.web.util.Log4jConfigListener&lt;/listener-class>
&lt;/listener>
&lt;!-- Spring framework -->
&lt;listener>
&lt;listener-class>org.springframework.web.context.ContextLoaderListener&lt;/listener-class>
&lt;/listener>

&lt;servlet>
&lt;servlet-name>XFireServlet&lt;/servlet-name>
&lt;display-name>XFire Servlet&lt;/display-name>
&lt;servlet-class>org.codehaus.xfire.spring.XFireSpringServlet&lt;/servlet-class>
&lt;/servlet>
&lt;servlet-mapping>
&lt;servlet-name>XFireServlet&lt;/servlet-name>
&lt;url-pattern>/services/*&lt;/url-pattern>
&lt;/servlet-mapping>

&lt;welcome-file-list>
&lt;welcome-file>index.jsp&lt;/welcome-file>
&lt;/welcome-file-list>
&lt;/web-app>
</pre><br /><br />1.2 applicationContext-webservice.xml的配置：<br /><br /><pre name="code" class="xml">
&lt;beans>
&lt;import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
&lt;bean name="echoService" class="org.codehaus.xfire.spring.ServiceBean">
&lt;property name="serviceBean" ref="echo"/>
&lt;property name="serviceClass" value="org.codehaus.xfire.test.Echo"/>
&lt;property name="inHandlers">
&lt;list>
&lt;ref bean="addressingHandler"/>
&lt;/list>
&lt;/property>
&lt;/bean>

&lt;bean id="echo" class="org.codehaus.xfire.test.EchoImpl"/>

&lt;bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>
&lt;bean name="bookService" class="org.codehaus.xfire.spring.ServiceBean">
&lt;property name="serviceBean" ref="bookServiceBean"/>
&lt;property name="serviceClass" value="org.codehaus.xfire.demo.BookService"/>
&lt;/bean>

&lt;bean id="bookServiceBean" class="org.codehaus.xfire.demo.BookServiceImpl"/>

&lt;/beans>
</pre><br /><br />1.3 这样将会发布两个service，BookService和EchoService。随后就可以使用client端进行测试了。<br /><br />//测试BookService<br /><pre name="code" class="java">
public static void main(String args[])
{ 
String serviceURL = "http://127.0.0.1:9001/xfire/services/BookService";
Service serviceModel = new ObjectServiceFactory().create(BookService.class,null,"http://xfire.codehaus.org/BookService",null);
XFireProxyFactory serviceFactory = new XFireProxyFactory();
try
{
BookService service = (BookService) serviceFactory.create(serviceModel, serviceURL);
Client client = Client.getInstance(service);
client.addOutHandler(new OutHeaderHandler());
Book[] books = service.getBooks();
System.out.println("BOOKS:");
for (int i = 0; i &lt; books.length; i++)
{
System.out.println(books[i].getTitle());
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
}
</pre><br /><br />1.4 忘了BookService及其实现了。<br /><br /><pre name="code" class="java">
public interface BookService
{
public Book[] getBooks();
public Book findBook(String isbn);
public Map getBooksMap();
}


public class BookServiceImpl implements BookService
{
private Book onlyBook;
public BookServiceImpl()
{
onlyBook = new Book();
onlyBook.setAuthor("Dan Diephouse");
onlyBook.setTitle("Using XFire");
onlyBook.setIsbn("0123456789");
}

public Book[] getBooks() 
{
return new Book[] { onlyBook };
}
public Book findBook(String isbn)
{
if (isbn.equals(onlyBook.getIsbn()))
return onlyBook;
return null;
}

public Map getBooksMap() {
Map result = new HashMap();
result.put(onlyBook.getIsbn(), onlyBook);
return result;
}
}
</pre><br /><br />1.5 简单的测试就是通过IE，输入http://ip:port/context/services/BookService?wsdl或者http://ip:port/context/services/EchoService?wsdl，将会出现相应的wsdl文档。<br /><br />如果只是输入http://ip:port/context/services/BookService，会出现Invalid SOAP request.这也说明配置正确。<br /><br />2、直接集成Spring（通过Spring的org.springframework.web.servlet.DispatcherServlet）<br /><br />2.1 web.xml配置<br /><pre name="code" class="xml">
&lt;web-app>
&lt;!-- START SNIPPET: xfire -->
&lt;context-param>
&lt;param-name>contextConfigLocation&lt;/param-name>
&lt;param-value>
classpath:org/codehaus/xfire/spring/xfire.xml&lt;/param-value>
&lt;/context-param>

&lt;context-param>
&lt;param-name>log4jConfigLocation&lt;/param-name>
&lt;param-value>/WEB-INF/log4j.properties&lt;/param-value>
&lt;/context-param>

&lt;listener>
&lt;listener-class>org.springframework.web.util.Log4jConfigListener&lt;/listener-class>
&lt;/listener>

&lt;listener>
&lt;listener-class>org.springframework.web.context.ContextLoaderListener&lt;/listener-class>
&lt;/listener>

&lt;servlet>
&lt;servlet-name>xfire&lt;/servlet-name>
&lt;servlet-class>org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class>
&lt;/servlet>

&lt;servlet-mapping>
&lt;servlet-name>xfire&lt;/servlet-name>
&lt;url-pattern>/*&lt;/url-pattern>
&lt;/servlet-mapping>
&lt;!-- END SNIPPET: xfire -->
&lt;/web-app>
</pre><br />2.2 xfire-servlet.xml配置<br /><pre name="code" class="xml">
&lt;beans>
&lt;!-- START SNIPPET: xfire -->
&lt;bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
&lt;property name="urlMap">
&lt;map>
&lt;entry key="/EchoService">
&lt;ref bean="echo"/>
&lt;/entry>
&lt;/map>
&lt;/property>
&lt;/bean>
</pre><br /><br /><pre name="code" class="xml">
&lt;bean id="echoBean" class="org.codehaus.xfire.spring.example.EchoImpl"/>

&lt;!-- Declare a parent bean with all properties common to both services -->
&lt;bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter">
&lt;property name="serviceFactory">
&lt;ref bean="xfire.serviceFactory"/>
&lt;/property>
&lt;property name="xfire">
&lt;ref bean="xfire"/>
&lt;/property>
&lt;property name="serviceBean">
&lt;ref bean="echoBean"/>
&lt;/property>
&lt;property name="serviceClass">
&lt;value>org.codehaus.xfire.spring.example.Echo&lt;/value>
&lt;/property>
&lt;/bean>
&lt;!-- END SNIPPET: xfire -->
&lt;/beans>
</pre><br />2.3 余下的配置跟第一种方法一样。<br /><br />3、另外xfire的官方文档上还有一种方法，是通过XBean与Spring结合来实现webservice的expose。还是觉得上面的两种方法比较好。既然已经与spring集成在一起了，何必再引入其他的呢？以后的维护是不是也要有问题呢？
          <br/>
          <span style="color:red;">
            <a href="http://moses3017.javaeye.com/blog/189766#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 May 2008 15:43:37 +0800</pubDate>
        <link>http://moses3017.javaeye.com/blog/189766</link>
        <guid>http://moses3017.javaeye.com/blog/189766</guid>
      </item>
  </channel>
</rss>