1

私はCXF Webサービスを次のように構築しました-

インターフェース:

package de.arvato.icssa.services;

import javax.jws.WebService;

@WebService
public interface TestService {
    String sayHi(String text);
    boolean startProcess(String mail, String processName, String locale);
}

実装:

package de.arvato.icssa.endpoints;

import javax.jws.WebService;
import java.util.*;

import de.arvato.icssa.util.*;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;

import de.arvato.icssa.db.HibernateUtil;
import de.arvato.icssa.db.worker.TaskWorker;
import de.arvato.icssa.services.TestService;

@WebService(endpointInterface="de.arvato.icssa.services.TestService")
public class TestServiceImpl implements TestService{

private Log log = LogFactory.getLog(this.getClass());
@Override
public String sayHi(String text)
{
    System.out.println("sayHi called");
    return "Hello " + text;
}

public boolean startProcess(String mail, String processName, String locale)
{ 
         <<<<<CODE>>>>>>
}
}

cxf.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-servlet.xml" />

<jaxws:endpoint id="testService"
    implementor="de.arvato.icssa.endpoints.TestServiceImpl" address="/TestService" />

</beans>

web.xml の重要な部分:

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/cxf.xml</param-value>
</context-param>

<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>/TestService</url-pattern>
</servlet-mapping>

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

これは一般的にうまくいきました。私のメソッド「startProcess」には2つのパラメーターがありました(「ロケール」を省略)-最近追加し、「サーバー」Eclipseプラグインに統合したTomcat 6.0 Webサーバーを再起動しましたが、そのメソッドはまだ2つのパラメーターしか受け入れません3番目のパラメーターを追加する前に、そのメソッド内で持っていた古いコードを実行します。

編集

別のメソッドを実装した場合、サーバーの再起動後にも更新されず、何も変わらないように見えます。私の Web サービスはまだ元の形式で更新されています。

そのWebサービスの「ハード」再デプロイを行う方法についてのアイデアはありますか?

ありがとう!

4

1 に答える 1

0

サーバータブでサーバーを右クリックし、再公開をクリックします。それでも問題が解決しない場合は、右クリックして [プロジェクトの追加と削除] を選択してプロジェクトを削除し、もう一度右クリックして [プロジェクトの追加と削除] を選択して再度追加します。

それでも問題が解決しない場合は、プロジェクトを右クリックして、[エクスポート] -> [War ファイル] を選択します。任意の場所にエクスポートします。

TOMCAT_HOME/webapps に移動し、プロジェクトが存在する場合は削除し、その下に新しい war ファイルをコピーします。

それが役に立ったかどうか教えてください。

于 2012-07-11T11:23:53.113 に答える