2012-07-11 97 views
1

我已经构建了CXF web服务,像这样 -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”有两个参数(省略了“locale”) - 我最近添加了它,重新启动了我已经集成到“Servers”Eclipse插件中的Tomcat 6.0 Webserver - 但该方法仍然只接受2个参数并在添加第三个参数之前运行我在该方法中使用的旧代码。

编辑

如果我实现了另一种方法,它也不会重新启动服务器更新后,它看起来好像没有什么变化。我的Web服务仍以原始形式更新。

任何想法,我可以做一个“硬”重新部署该web服务?

谢谢!

+0

您是否删除了旧的WAR并部署了新的WAR?你有没有尝试通过tomcat管理器GUI和通过eclipse? – Tomer 2012-07-11 11:14:03

+0

我并不熟悉java中的web编程的整体概念 - 我只是简单地通过eclipse Servers插件重新启动服务器,因为这似乎是以前的技巧。不知道如何找到其他的选择。 – 2012-07-11 11:16:39

回答

0

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

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

转到TOMCAT_HOME/webapps,删除您的项目,如果它在那里,并复制它下面的新战争文件。

让我知道是否有帮助。

+0

感谢您的回答,我已经重新发布了我的项目,并将其导出到WAR并尝试运行它,但它仍显示我的web服务的旧版本。即使我删除方法并重新启动/发布任何更改。 – 2012-07-11 11:34:58

+0

当我检查我部署的Web应用程序并打开我服务的.class文件时,我仍然看到几分钟前刚刚删除的“sayHi”方法...也许这有助于。 – 2012-07-11 11:39:48

+0

这意味着你的项目没有被编译(编译),在上面的菜单中转到Project并确保Build自动被选中 – Tomer 2012-07-11 11:43:01