<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22, comments - 32, trackbacks - 0, articles - 73
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    前一段時間在公司比較閑看了看CXF2.3 與SPRING 3.0.5集成,以前用XFire開發(fā)東西,去XFire社區(qū)轉(zhuǎn)時候都說建議換用CXF。哈哈不說廢話了開始吧:

    準(zhǔn)備:CXF2.3.0 所有jar 包,去官網(wǎng)下就可以了,如果為了測試建議把lib下所有jar包導(dǎo)入工程中(它里邊包含了spring所必需的jar包版本是spring3.0.5的,如果你不想使用CXF2.3.0中的spirng jar包可以不導(dǎo)入,導(dǎo)入自己的)。

    oracle 數(shù)據(jù)驅(qū)動包:ojdbc14.jar
    spirng -jdbc 包: org.springframework.jdbc-3.0.5.RELEASE.jar(因為本用例需要用spring JDBC 做持久層測試)

    第一步:建立一個webproject ,把CXF包導(dǎo)入工程lib目錄下;

    接口代碼如下:
    import javax.jws.WebService;
    /*
     * @author zzz
     * @version 1.0
     * @ userservice接口;
     */

    @WebService 
    public interface UserService {
     public String getSomething(String data);
    }


    實現(xiàn)類:
    import java.sql.SQLException;
    import javax.jws.WebService;
    import org.springframework.jdbc.core.JdbcTemplate;
    import com.tchzt.demo.user.service.UserService;

    @WebService
    public class UserServiceImpl extends JdbcTemplate implements UserService{

     public String getSomething(String data) {
      System.out.println("this is server message :"+data);
      try {
       System.out.println("獲得數(shù)據(jù)庫連接:"+getDataSource().getConnection());
       //這里是用的spring 的JDBC,可以在這里寫持久化代碼;
      } catch (SQLException e) {
       e.printStackTrace();
      }
      return data;
     }
     
    }

    在src目錄下建立一個applicationContext-client-beans.xml 這個名字可以自己定,但在web.xml 加載名字要一致:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
     xsi:schemaLocation="  
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
    <!-- 這是JNDI配置數(shù)據(jù)源方式

     <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location">
       <value>classpath:com/chtt/cfg/dbconn/oracle_jndi.properties</value>
      </property>
     </bean>
     
     <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName">
       <value>${oraconn.jndi}</value>
      </property>
     </bean>
    --> 
    <!-- 數(shù)據(jù)據(jù)源配置方式 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="url" value="jdbc:oracle:thin:@110.168.1.51:1521:pos"/>
         <property name="username" value="pos"/>
         <property name="password" value="pos"/>
    </bean>
    <!-- 配置DAO -->
    <bean id="daoTemplate" abstract="true">
     <property name="dataSource">
      <ref local="dataSource"/>
     </property>
    </bean> 
    <!-- dao引用 -->
    <bean id="userServiceImpl" class="com.tchzt.demo.user.serviceImpl.UserServiceImpl" parent="daoTemplate"/>

    <!-- webservice 發(fā)布配置 -->
    <bean id="client" class="com.test.Client" factory-bean="clientFactory" factory-method="create" />

    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean" >
     <!-- 服務(wù)發(fā)布供外部調(diào)用接口 -->
     <property name="serviceClass" value="com.tchzt.demo.user.service.UserService" />
     <property name="address" value="http://127.0.0.1:8080/WebServiceCXF/UserService" />
    </bean> 
    </beans>

    WEB-INF目錄下建立一個services.xml (名字自己定):

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:jaxws="http://cxf.apache.org/jaxws" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> 
     
        <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" /> 
       <!-- webService發(fā)布地址 , #userServiceImpl引用bean方式,也可以寫成類的全路徑 -->
       <!--userServiceImpl 加入數(shù)據(jù)連接, 在此引用  -->
        <jaxws:endpoint id="userService" implementor="#userServiceImpl" address="/UserService"/>
       
     <!-- 第二種方式引用其它bean;
      <jaxws:endpoint id="userService"
                    implementorClass="demo.spring.HelloWorld"
                    address="/UserService">
           <jaxws:implementor>
              <bean ref="userServiceImpl"/>
           </jaxws:implementor>
          
           <jaxws:implementor>
              <bean ref="userServiceImpl2"/>
           </jaxws:implementor>
      </jaxws:endpoint>
      
      -->     
    </beans> 



    web.xml 文件內(nèi)容:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext-client-beans.xml,WEB-INF/services.xml</param-value>
     </context-param>

     <listener>
      <listener-class>
       org.springframework.web.context.ContextLoaderListener
      </listener-class>
     </listener>

     <servlet>
      <servlet-name>CXFServlet</servlet-name>
      <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
     </servlet>

     <servlet-mapping>
      <servlet-name>CXFServlet</servlet-name>
      <url-pattern>/*</url-pattern>
     </servlet-mapping>

     <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
     <!-- 加載數(shù)據(jù)源
     <resource-ref>
      <res-ref-name>jdbc/cdbank</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
     </resource-ref>
     -->
    </web-app>

    測試類內(nèi)容:
    package com.test;

    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.tchzt.demo.user.service.UserService;
    import com.tchzt.demo.user.serviceImpl.UserServiceImpl;

    public class Client {
        public static Client client = new Client();  
        private UserService userService=null;
        //這是spring得到服務(wù)實例構(gòu)造方法;
        private Client(){
         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-client-beans.xml");
         userService=(UserService) context.getBean("client");
        }
        //這是普通客戶端得到服務(wù)實例;
        private Client(UserService userService){
         this.userService=userService;
        }
        public String getText(String text) throws Exception {  
            String data = userService.getSomething(text);  
            return data;  
        }
       /*
        *單獨測試spring 加載數(shù)據(jù)連接;
        */
        public static void  getConnectTest(){
         ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-client-beans.xml");
         UserServiceImpl userServiceImpl=(UserServiceImpl) context.getBean("userServiceImpl");
         System.out.println("數(shù)據(jù)庫連接測試:"+userServiceImpl.getSomething("adfasdf"));
        }
        /*
         * CXF 普通客戶端測試;
         */
        public static void testCxfClient()throws Exception{
         //這里不用Spring 得到bean實例;
      JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
      //設(shè)置服務(wù)類的名字;
      factory.setServiceClass(UserService.class);
      //設(shè)置服務(wù)的地址;
      factory.setAddress("http://127.0.0.1:8080/WebServiceCXF/UserService");
      
      //得到服務(wù)類的實例;
      UserService userService=(UserService) factory.create();
      
      Client client=new Client(userService);
      
      System.out.println(client.getText("這是webserviceCXF測試數(shù)據(jù)"));
        }
        /*
         * spring 與CXF 集成發(fā)布測試;
         */
        public static void testSpringCxfClient()throws Exception{
         //這是用spring 得到服務(wù)實例;
      System.out.println(client.getText("這是webserviceCXF與 spring集成發(fā)布的測試數(shù)據(jù)!"));
        }
     public static void main(String[] args)throws Exception {
      //測試數(shù)據(jù)連接是否成功!
      //Client.getConnectTest();
      //普通測試;
      //Client.testCxfClient();
      //集成測試;
      Client.testSpringCxfClient();
     }

    }

    測試:把工程發(fā)布到tomcat上運行測試類出現(xiàn)下面結(jié)果:

    Client.testSpringCxfClient()方法測試:

     客戶端輸出:
        這是webserviceCXF與 spring集成發(fā)布的測試數(shù)據(jù)!

    服務(wù)器端的輸出:
    this is server message :這是webserviceCXF與 spring集成發(fā)布的測試數(shù)據(jù)!
    獲得數(shù)據(jù)庫連接:oracle.jdbc.driver.OracleConnection@7fb878



    Client.testCxfClient()測試:

    客戶端輸出:
    這是webserviceCXF測試數(shù)據(jù)

    服務(wù)器端的輸出:

    this is server message :這是webserviceCXF測試數(shù)據(jù)
    獲得數(shù)據(jù)庫連接:oracle.jdbc.driver.OracleConnection@6276e5

    Client.getConnectTest()數(shù)據(jù)庫連接測試:
    this is server message :adfasdf
    獲得數(shù)據(jù)庫連接:oracle.jdbc.driver.OracleConnection@c38157
    數(shù)據(jù)庫連接測試:adfasdf


    好了到此CXF+spring 集成完畢(不足這處沒有加入聲明式事物的管理,只加入了spring 連接數(shù)據(jù)庫和持久層JDBC,有時間在完善下),如果有什么問題請聯(lián)系我:zzzlyr@163.com

    有時間更新這篇文章了,加入聲明式事物,這個很簡單。在把項目里用的CXF細節(jié)和遇到問題說明下:

    把appcliatContext.xml 這個文件加入Spring包 自動掃描,在你的業(yè)務(wù)層上加下面基于注解事物:
    開起注解事物 在需要的方法上加入即可
      默認Spring為每個方法開啟一個事務(wù),如果方法發(fā)生運行期錯誤unchecked(RuntimeException),事務(wù)會進行回滾
      如果發(fā)生checked Exception,事務(wù)不進行回滾.
      @Transactional(propagation=Propagation.REQUIRED)
      @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)

    重點說下在項目中用CXF2.3 遇到問題:
       第一個:就是CXF命名空間問題,在網(wǎng)上好多例子,就簡單是一個例子。在項目中CXF發(fā)布webService ,一般做法是實現(xiàn)類和接口沒有在一個包中;這是項目中要用到的:

    這是接口:
    package com.tchzt.service;

    import javax.jws.WebResult;
    import javax.jws.WebService;

    /*
     * @author zzz
     * @version 1.0
     * @ userservice接口;
     */
    /*
     * webService接口綁定;
     * com.tchzt.webService
     *
     */
    @WebService(targetNamespace="com.tchzt.seals.service")
    public interface SealHandOverService {
     /*
      * 反回值標(biāo)注,可以改變返回參數(shù)WSDL發(fā)布名字,還有參數(shù)名字;
      */
     public @WebResult(name="sealHandOverService") String getDocumentByBantchNo(String nantchNo)throws Exception;
     
    }



    實現(xiàn)類:
    package com.tchzt.service.imp;

    import java.util.LinkedList;
    import java.util.List;

    import javax.jws.WebService;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Service;

    import com.tchzt.dao.PrintlogDaoIf;
    import com.tchzt.dao.SealTypeDaoIf;
    import com.tchzt.dao.SealsDaoIf;
    import com.tchzt.po.AppSeals;
    import com.tchzt.po.AppSealtype;
    import com.tchzt.po.Printlog;
    import com.tchzt.service.SealHandOverService;
    import com.tchzt.util.Document4jUtils;

    @Service
    @WebService(targetNamespace="com.tchzt.seals.service",endpointInterface="com.tchzt.service.SealHandOverService")
    public class SealHandOverServiceImpl implements SealHandOverService {
     @Autowired
     @Qualifier("printlogDaoIfImpl")
     private PrintlogDaoIf printlogDao;
     
     @Autowired
     @Qualifier("sealsDaoIfImpl")
     private SealsDaoIf sealsDao;
     
     @Autowired
     @Qualifier("sealTypeDaoIfImpl")
     private SealTypeDaoIf sealTypeDao;
     
     @Override
     public String getDocumentByBantchNo(String banchno) throws Exception {
      List<Printlog> list=printlogDao.getPrintlogs(banchno);
      List<String> sealXML=new LinkedList<String>();
      for(Printlog p:list){
        AppSeals seal=sealsDao.getByIdx(AppSeals.class, p.getSealid());
        AppSealtype sealType=sealTypeDao.getByIdx(AppSealtype.class, seal.getSealtypeId());
        sealXML.add("id:"+seal.getId());
        sealXML.add("sealName:"+sealType.getSealName());
        sealXML.add("sealType:"+sealType.getId());
        sealXML.add("image:"+seal.getImage());
      }
      for(String s:sealXML){
       System.out.println(s);
      }
      return Document4jUtils.getHandOverScanXML(sealXML,banchno);
     }

    }

    上面注意一個就行targetNamespace="com.tchzt.seals.service"一要寫上,接口和實現(xiàn)類不在同一個包中,接口和實現(xiàn)類一定要一致。但網(wǎng)上好多例子接口和實現(xiàn)類在一包中targetNamespace這個東西默認是一致的,所以不需要指定,如果接口和實現(xiàn)類不在同一個包中,你查看WSDL的時候也可以看到,也不報錯,但就是發(fā)布WSDL少信息。
     第二客戶端問題:網(wǎng)上好多例子就是一個工程,調(diào)自己工程發(fā)布的WebService的方法,以下是第二個JAVA工程調(diào)用第一個發(fā)布成功的webService 方法如下 :

    package com.tchzt.test;

    import org.apache.cxf.endpoint.Client;
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

    import com.tchzt.service.SealHandOverService;

    public class WebServiceClientTest {
     
      /*
         * CXF 變通客戶端測試;
         */
        public static void testCxfClient()throws Exception{
         //這里不用Spring 得到bean實例;
      JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
      //設(shè)置服務(wù)類的名字;
      factory.setServiceClass(SealHandOverService.class);
      //設(shè)置服務(wù)的地址;
      factory.setAddress("http://127.0.0.1:8080/seal/ws/SealHandOverService");
      
      //得到服務(wù)類的實例;
      SealHandOverService sealHandOverService=(SealHandOverService) factory.create();
      
      
      System.out.println("======="+sealHandOverService.getDocumentByBantchNo("67801100060039"));
        }
        /**
      * @Title: callService
      * @Description: 調(diào)用遠程的webservice并返回數(shù)據(jù)
      * @param wsUrl
      *            webservice地址
      * @param method
      *            調(diào)用的webservice方法名
      * @param arg
      *            參數(shù)
      * @return
      * @return:String
      * @throws
      */
        public static String callService(String wsUrl, String method, Object... arg)throws Exception {
          JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
         Client client = dcf.createClient(wsUrl);
          Object[]  res = client.invoke(method, arg); 
          return (String) res[0];
        }

     
     public static void main(String[] args)throws Exception {
      //URL 組成:http://110.168.1.121:8080/seal  ;第二部分:ws/這個是在web.xml配置的一個攔截地址; 第三部分: SealHandOverService?wsdl 是接口中發(fā)部的
      String s=WebServiceClientTest.callService("http://110.168.1.121:8080/seal/ws/SealHandOverService?wsdl", "getDocumentByBantchNo", new Object[]{"67801100060039"});
     System.out.println(s);
      WebServiceClientTest.testCxfClient();
     }

    }

    這個測試類里有兩個方法,應(yīng)該差不多從注釋可以看明白什么意思。

    以上方法都在項目中正確調(diào)用通過。
     

    以下是網(wǎng)上的一此方法:

    由于我們通常不知道提供Web Service的服務(wù)器接口及其相關(guān)類的代碼,我們也不可能從他人那里獲得。

    對此,CXF提供了一些命令行工具,在CXF_HOME/bin下(這里是你下載的CXF包下有目錄)。

    使用wsdl2java,可以根據(jù)從服務(wù)器返回的wsdl文件生成我們所需要的java接口和相關(guān)類。

    在上面的工程中,我們可以用以下命令生成JAVA代碼,而不是從第一個工程中復(fù)制過來。

    wsdl2java -p client http://110.168.1.121:8080/seal/ws/SealHandOverService?wsdl (需要在cmd窗口中將路徑切換至CXF_HOME/bin下)
     例如:F:\apache-cxf-2.2.7\bin>wsdl2java -d E:\programFiles -client  http://127.0.0.1/services/AlarmInformationServices?wsdl

    (解釋:wsdljava    –p    包路徑    –d    目標(biāo)文件夾   wsdl 的url地址)

     -p  是指生成客戶端代碼存放位置;


    需要注意的是,對于接口類和相關(guān)類的包路徑,一定要和服務(wù)器的一樣, 即:如果服務(wù)接口包路徑和實現(xiàn)類路徑,要和客戶端一致。

    否則,會出現(xiàn)org.apache.cxf.interceptor.Fault: Unexpected wrapper element {****}addResponse found.……錯誤。




     


    評論

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-05-26 15:50 by wls
    運行client文件的時候報
    log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.
    2011-5-26 15:46:49 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
    信息: Creating Service {http://dao/}IUserServiceService from class dao.IUserService
    2011-5-26 15:46:50 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
    信息: Creating Service {http://dao/}IUserServiceService from class dao.IUserService
    this is the message:adfasdf
    獲得數(shù)據(jù)庫連接oracle.jdbc.driver.T4CConnection@1719f30
    數(shù)據(jù)庫連接測試:adfasdf
    2011-5-26 15:46:51 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
    信息: Creating Service {http://dao/}IUserServiceService from class dao.IUserService
    javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing.
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
    at $Proxy31.getSomething(Unknown Source)
    at test.Client.getText(Client.java:24)
    at test.Client.testCxfClient(Client.java:52)
    at test.Client.main(Client.java:70)
    Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing.
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:759)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2337)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2195)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2039)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:697)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:520)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:317)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:269)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
    ... 4 more
    找了很久沒有找到原因,您能給回復(fù)一下么

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-05-26 16:26 by wls
    使用的cxf2.3.4

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-08-05 09:50 by 淘寶女裝
    寫的太長了,

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-08-05 14:51 by 淘寶女裝
    郁悶,,,spring配置出錯了

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-08-08 16:55 by vinsonnubo
    我也是用spring自動掃描實現(xiàn)service注入,但是當(dāng)我調(diào)用ws方法時無法注入成功,請問是什么原因呢?

    # re: CXF2.3.0 +myEclipse 8.5 +tomcat 6.0 +sping 3.0.5 集成方案  回復(fù)  更多評論   

    2011-08-16 17:41 by 張釗釗
    @vinsonnubo
    什么異常?service 層,是不是寫上了@Service這個標(biāo)志了

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日本国产精华液| 中文字幕久久亚洲一区| 精品亚洲成在人线AV无码| 国产自国产自愉自愉免费24区| 亚洲性日韩精品国产一区二区| 老司机精品视频免费| 免费一级e一片在线播放| 色爽黄1000部免费软件下载| 亚洲国产成人精品女人久久久 | 一级中文字幕乱码免费| 亚洲福利精品电影在线观看| 成在人线av无码免费高潮水| 亚洲av午夜成人片精品网站| 91福利免费体验区观看区| 亚洲国产精品日韩在线观看| 女人被男人躁的女爽免费视频| jizzjizz亚洲日本少妇| 亚洲国产人成精品| 精品国产福利尤物免费| 亚洲AV午夜成人影院老师机影院| 69xx免费观看视频| 亚洲爆乳无码精品AAA片蜜桃| 亚洲电影日韩精品| 外国成人网在线观看免费视频| 亚洲一卡二卡三卡四卡无卡麻豆 | 亚洲一区视频在线播放| 国产精品免费观看调教网| 亚洲天堂一区二区三区| 日韩人妻无码免费视频一区二区三区 | 亚洲精品无码mv在线观看网站| 色欲国产麻豆一精品一AV一免费 | 亚洲精品伊人久久久久| 午夜无遮挡羞羞漫画免费| 一级毛片在线播放免费| 亚洲色成人网一二三区| 日本一区二区三区日本免费| 在线视频网址免费播放| 亚洲精品456人成在线| 精品亚洲一区二区三区在线观看| 亚洲成人免费电影| 免费精品国产自产拍在线观看|