【问题标题】:cxf Web Service doesn't updatecxf Web 服务不更新
【发布时间】:2012-07-11 09:43:23
【问题描述】:

我已经像这样构建了一个 CXF Webservice -

界面:

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 个参数并在添加第三个参数之前运行我在该方法中的旧代码。

编辑

如果我实现了另一个方法,它在重新启动服务器后也没有更新,看起来好像没有任何变化。我的网络服务仍以其原始形式更新。

关于如何“硬”重新部署该网络服务有什么想法吗?

谢谢!

【问题讨论】:

  • 您是否删除了旧的 WAR 并部署了新的?您是否通过 tomcat manager GUI 和 eclipse 尝试过?
  • 我对 java 中的 web 编程的整个概念并不熟悉 - 我只是通过 eclipse Servers 插件重新启动了服务器,因为这似乎以前可以解决问题。不知道如何找到其他替代品。

标签: java web-services spring deployment cxf


【解决方案1】:

在服务器选项卡中右键单击服务器,然后单击重新发布。如果这没有帮助,请右键单击并选择添加/删除项目并删除项目,然后再次右键单击选择添加/删除项目并再次添加。

如果这也没有帮助,您可以右键单击项目并选择导出->战争文件。将其导出到您想要的任何位置。

转到 TOMCAT_HOME/webapps,如果有项目,请删除它并复制新的 war 文件。

如果有帮助,请告诉我。

【讨论】:

  • 感谢您的回答,我已经重新发布了我的项目并将其导出到 WAR 并尝试运行它,可惜它仍然显示我的 Web 服务的旧版本。即使我删除方法并重新启动/发布也没有任何变化。
  • 当我检查我部署的 Webapp 并打开我的服务的 .class 文件时,我仍然看到几分钟前我刚刚删除的“sayHi”方法......也许这有帮助。
  • 这意味着你的项目没有被构建(编译),在上面的菜单中转到项目并确保选择自动构建
  • 不过既然你提到了,我更新哪个类都无所谓,老版本总是部署。
  • 在顶部菜单上单击 Project->clean,如果这无济于事,请尝试重新启动 eclipse
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
相关资源
最近更新 更多