gpt4 book ai didi

java - 如何更改TomEE上@WebService生成的 'webservices'路径

转载 作者:行者123 更新时间:2023-11-30 08:27:58 31 4
gpt4 key购买 nike

我正在学习使用@WebService 注释我的类的技巧,我注意到当我部署到 TomEE-plus (v1.6) 时,我在 url 中得到了一个额外的“webservices”字样。

如果可能,我想删除它或重命名它。

给定名为 WebAPI-DEV 的 Eclipse 项目的代码:

import java.util.List;
import javax.ejb.Stateless;
import javax.jws.WebService;

@Stateless
@WebService
public class WEBAPIImplementation {
public List<Client> getClientsByTerm(String term) {
return null;
}
}

我在 catalina 日志中发现以下内容:

Dec 10, 2013 3:49:05 PM org.apache.openejb.server.webservices.WsService deployApp
INFO: Webservice(wsdl=http://mylocalhost.com:8080/WebAPI-DEV/webservices/WEBAPIImplementation, qname={http://mylocalhost.com:8080/webapi}WEBAPIImplementationService) --> Ejb(id=WEBAPIImplementation)

url http://mylocalhost.com:8080/WebAPI-DEV/webservices/WEBAPIImplementation 包含“webservices”。

我宁愿对定义我的 web 服务 url 的确切名称有更多的控制。

这可能吗?

更新(2013 年 12 月 16 日):我遵循了

中的简单教程

http://blog.sortedset.com/step-by-step-web-services-with-tomcat-tomee-apache-cxf-eclipse/

基本上@Webservice 注解中的参数会导致这样的错误:

org.apache.openejb.config.ValidationFailedException: Module failed validation. AppModule(name=TEST-WS)

和...

org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[mylocalhost.com].StandardContext[/TEST-WS]] in state [STARTING_PREP]

和...

SEVERE: Error deploying web application archive C:\apache-tomee-plus-1.6.0\webapps\TEST-WS.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[mylocalhost.com].StandardContext[/TEST-WS]]

最初我为@Webservice 设置了这些参数(将 sortedset.com 替换为 localhost):

@WebService(
portName = "HelloTomEEPort",
serviceName = "HelloTomEEService",
targetNamespace = "http://localhost/wsdl",
endpointInterface = "HelloTomEEWs")

这是我的两个源文件(我从头开始了一个新项目):

TESTWS.java

import javax.jws.WebService;
@WebService
public interface TESTWS {
public int sum(int add1, int add2);
public int multiply(int mul1, int mul2);
}

TESTWSImpl.java

import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService
public class TESTWSImpl implements TESTWS {
public int sum(int add1, int add2) {
return add1 + add2;
}
public int multiply(int mul1, int mul2) {
return mul1 * mul2;
}
}

此代码允许 TomEE 启动,但是当我请求 url 时(在 catalina.log 中找到):

http://mylocalhost.com:8080/TEST-WS/webservices/TESTWSImpl

我收到这个错误:

Dec 16, 2013 5:21:57 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {http://mylocalhost.com/wsdl}TESTWSImplService has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: No such operation: TEST-WS (HTTP GET PATH_INFO: /TEST-WS/webservices/TESTWSImplnull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:93)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:237)
at org.apache.openejb.server.cxf.CxfWsContainer.onMessage(CxfWsContainer.java:85)
at org.apache.openejb.server.webservices.WsServlet.service(WsServlet.java:98)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

是什么导致“没有这样的操作”?

在哪里可以找到有关@Webservice 参数的良好文档?

注意:将 mylocalhost.com 替换为 localhost

更新(2013 年 12 月 17 日):我错误地调用了网络服务,正确的 url 应该是:

http://mylocalhost.com:8080/TEST-WS/webservices/TESTWSImpl?wsdl

引用于

Simple webservice example tomEE not working

我想我会学会接受这个生成的 url 路径('webservices'),直到我了解更多如何配置它。

更新(2014 年 1 月 20 日):我使用 Enpoint.publish 完成了一种方法并将其添加为答案。

最佳答案

这个帖子很老了,但我还是想分享一些链接。可以从 中部署的网络服务路径中删除“网络服务” .我们需要指定一个属性作为
tomee.jaxws.subcontext =/

tomee.jaxws.subcontext =

conf/system.properties
这里是信息链接
Support Forum for TomEE+ - CXF Configuration
Apache Tomee site Change JAXWS URL

关于java - 如何更改TomEE上@WebService生成的 'webservices'路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20508101/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com