好久之前玩過的東西,,昨天應一個哥們要去,給他做一個服務,,只好想了又想,,因為自己對java一知半解,,只停留在照貓畫虎的層次,,不過運氣還好,,加上以前碰到過很多挫折,,所以配的還算順利,。在csdn進行記錄,以免忘記,。
順序:
一 準備
1 Eclipse3.4
2 JDK1.5
3 Tomcat 6
4 tomcat plugin v3.2.1
5 cxf開發(fā)包 2.2.5
二 配置環(huán)境
1 安裝jdk
2 copy eclipse && tomcat6 && cxf 到自己想放它們的地方(eclispe不需要安裝,,tomcat從6開始也不需要install)
3 配置環(huán)境變量如下:
參考 set CXF_HOME=C:\cxf2.1
set JAVA_HOME=C:\Java\jdk1.5.0_09 set PATH=%JAVA_HOME%\bin;%CXF_HOME%\bin;%PATH%
set CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes 4. 解壓縮tomcat plugin v3.2.1到Eclipse的plugin目錄下
三 開發(fā)過程
關于開發(fā)過程,Apache和IBM官方有很詳細的文檔,,
我這里只針對過程中可能遇到的一個問題進行總結。(之后會附上可行的源代碼)
1 Eclispe下new個新的普通java工程就可以,,但是myeclipse下好像只能在建立在web項目中
2 暴露服務有兩種方式jaxws:Endpoint和jaxws:Server兩種方式,,網上有很詳細的解釋它們的區(qū)分,你可以任選一種
3 有的時候,,eclipse會提示找不到Endpoint的說明,,沒有問題,go on
4 你要部署一個項目到tomcat, 要寫一個xml到tomcat目錄去:
參考:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="E:\自己-CODE\JavaCode\Eclipse34_workspace\你的項目名稱,,一定要正確,,大小寫匹配"/> 建議:目錄最好用英文,,否則有時候用不同編輯的時候,會出現二進制無法讀取現象,,比如上面的“自己”用記事本程序寫入后,,
Eclipse在執(zhí)行時有時會出錯的,如果你用Eclipse打開會發(fā)現這個記事本打開能看的“自己”由于編碼問題可能在eclipse中不能
正常顯示,,需要修改,。
5 接口和類加@WebService后會暴露接口,你也可以選擇性暴露,。 6 附上一個可行的代碼參考:
【1】類接口(函數名字隨便起的,,和參數沒有任何關系)
package ws.cxf; import javax.jws.WebService;
@WebService public interface IAuthenService { public String ClientService(String footname,int num); } 【2】類
/**
* */ package ws.cxf; import javax.jws.WebService;
import ws.cxf.IAuthenService;
@WebService
public class AuthenService implements IAuthenService { private String myfootname="potatoAndTomato"; private int eatnum=1000; public static void main(String[] args) { System.out.println("Hello,world!Jo 1"); } public String ClientService(String footname, int num)
{ String result=""; if(this.myfootname.equals(footname)) { result="你不能再吃這個了,buddy,!"; } else { result="你還能吃呀,,強!"; if(num<this.eatnum) { result+=" 可惜,,你要的已經沒有了,!"; } else { result+="稍等等,一會就給你,!"; } } return result; } public String getMyfootname() { return myfootname; } public void setMyfootname(String myfootname) {
this.myfootname = myfootname; } public int getEatnum() {
return eatnum; } public void setEatnum(int eatnum) {
this.eatnum = eatnum; } }
【3】配置暴露服務xml <beans xmlns="http://www./schema/beans"
xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:jaxws="http://cxf./jaxws" xsi:schemaLocation="http://www./schema/beans http://www./schema/beans/spring-beans-2.0.xsd http://cxf./jaxws http://cxf./schemas/jaxws.xsd"> <!-- Import Apache CXF Bean Definition --> <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> <!-- EatService -->
<bean id="myService2" class="ws.cxf.AuthenService"> <property name="myfootname" value="qiao"/> <property name="eatnum" value="10"/> </bean> <!-- Expose EatWebService --> <jaxws:endpoint id="eatWebService2" serviceName="AuthenSrv" address="/AccessControlDomain/Access"> <jaxws:implementor ref="myService2"/> </jaxws:endpoint> </beans>
【4】項目配置文件xml:放置在WEB-INF下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java./xml/ns/j2ee" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://java./xml/ns/j2ee http://java./xml/ns/j2ee/web-app_2_4.xsd"> <description>在tomcat manager中顯示的描述</description> <display-name>在tomccat manager中顯示的名字 </display-name> <!-- Spring Config Location --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/BeanRefServer.xml</param-value> </context-param> <!-- Spring ContextLoaderListener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Apache CXFServlet --> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- CXFServlet Mapping --> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app> 7 運行tomcat:如果提示端口被占,,可以看看自己電腦上有沒有安裝oracle,它會自動安裝apache服務,,會占用8080端口,,你需要修改其中一個端口,到對應的配置文件中替換8080為一個不常使用的端口即可,,如8088,。
8 在瀏覽器下看訪問:127.0.0.1:8080 是會顯示tomcat主頁的,點擊tomcat manager,,如果你配置好tomcat的用戶,,
在tomcat 6下,用戶配置信息放在其目錄下的tomcat-user.xml中,,默認是注釋掉的,,你需要去掉注釋符,然后添加一個角色manager
如下面的用戶tomcat.
<tomcat-users>
<role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="tomcat" roles="tomcat,manager"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> </tomcat-users> 之后,,你進入tomcat manager后,,就可看見自己部署的項目,點擊即可訪問其,。
9 oracle的osb可以進行類似于微軟web服務的那種基于瀏覽器的測試,,如果你需要可以試試,還是很方便的。
以上說明就到此位置,,感覺以前遇到了很多小問題,,但是一時也想不起來了,先這樣吧,。
附錄:關于微軟的服務開發(fā)和uddi部署,,可以參考一個我寫在電腦編程與技巧的文章。
里面關于UDDI的部署的一些發(fā)現,,可能在網上很難找到,。
說明:我以前看的一個關于cxf開發(fā)的很詳細的文章在我的資源中,,1分,。
附錄:
【1】 tomcat manager 查看
【2】 發(fā)布界面:
That‘s all.
Good luck 2 u.
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jo_say/archive/2010/05/06/5562821.aspx
(#)
|
|
來自: 9loong > 《Web Service》