- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一些必须使用 JAXWS 实现的 Web 服务,并且必须在 WebLogic 10.3、WebSphere 7 和 Tomcat 5.5 上运行。此外,服务的安装必须完全独立,以避免与容器中的任何其他应用程序发生冲突。 WebLogic和WebSphere都解决了,但是tomcat给我带来了麻烦。
使用 JAXWS-RI 为 jaxws 启用 tomcat 是有效的,但要避免在 tomcat 或 jre 中安装额外的 jar(jaxws.jar、jaxb.jar)。
在 war 中嵌入 axis2 来运送我的应用程序更好,但服务会得到有趣的 URI。以这个服务为例:
使用 wsimport 生成的端口类型:
@WebService(name = "AuthenticationServicePortType", targetNamespace = "http://impl.auth.webservice.my.company")
@XmlSeeAlso({
company.my.exposed.xsd.ObjectFactory.class,
company.my.webservice.auth.impl.ObjectFactory.class
})
public interface AuthenticationServicePortType {
实现:
@WebService(
portName = "AuthenticationServicePort", serviceName = "AuthenticationService",
targetNamespace = "http://impl.auth.webservice.my.company", wsdlLocation = "WEB-INF/wsdl/AuthenticationService.wsdl",
endpointInterface = "company.my.webservice.auth.impl.AuthenticationServicePortType"
)
public class AuthenticationServiceImpl implements AuthenticationServicePortType {
在 WebSphere、WebLogic 和 tomcat+JAXWS-RI 中,此服务在 uri 上可用
http://localhost/MyProduct/services/AuthenticationService
但是,随着 axis2 嵌入到 war 中,该服务在 uri 上变得可用
http://localhost/MyProduct/services/AuthenticationService.AuthenticationServicePort
因为这是对具有广泛安装基础的现有服务的升级,所以此更改是 Not Acceptable 。
通过 services.xml 配置服务已从 axis2 的 jaxws 支持中删除,因此这是死胡同。
使用 Apache CXF 而不是 Axis2 不是一个好的解决方案,因为它可能会造成支持方面的噩梦。
web.xml 的 tomcat 版本如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<description>My web service</description>
<display-name>MyProduct</display-name>
<servlet>
<description>JAX-WS endpoint for MyProduct</description>
<display-name>MyProduct</display-name>
<servlet-name>MyProduct</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyProduct</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
我还修改了 axis2.xml 以使其在常规类中查找带注释的类:
<deployer extension=".class" directory="classes" class="org.apache.axis2.jaxws.framework.JAXWSDeployer"/>
两种解决方案会有所帮助:
最佳答案
我没有找到真正解决这个问题的方法,但我找到了解决方法。
我使用 url 重写 (http://www.tuckey.org/urlrewrite/) 在 URL 中添加额外的部分。
在 web.xml 中过滤:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>INFO</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/services/*</url-pattern>
</filter-mapping>
urlrewrite.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
<rule>
<note>
Add .SomeServicePort to all urls
</note>
<from>/services/(.*)</from>
<to>/services/$1.$1Port</to>
</rule>
</urlrewrite>
不够漂亮,但足够好。
关于tomcat - JAXWS、Axis2 和 Tomcat 服务 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124788/
我收到此错误消息: [WARNING] Ignoring: binding file "file:/home/jeusdi/projects/salut/hes/hes-visor-api-servi
查看来自 java.net 的 JAX-WS Maven 存储库 - http://download.java.net/maven/2/com/sun/xml/ws/ 有两个类似的文件夹 - jaxw
我正在使用 JAXWS 生成 Web 服务并使用 EndPoint.publish() 提供服务以及部署 war 文件,但是一旦它处理了 100 个请求,它就不会返回第 101 个请求回复。如何配置
我一直使用 wsimport 工具从 WSDL 文件生成客户端类。然后我将它们包含到项目的源代码树中,并将它们 checkin 版本控制系统。但最近我了解到有一个名为 jaxws-maven-plug
我尝试使用以下代码生成 java 类,但由于某些 gradle 插件问题而失败。 我搜索了一下,发现有很多插件可用于生成xsd类的java,但只有很少的插件用于生成代码形式wsdl.jaxb 是我想使
是否可能,如果可能,如何? 最佳答案 实际上,WebLogic 10.3 中捆绑的 JAX-WS 实现基于 JAX-WS RI 2.1.4,如 What's New in WebLogic Serve
由于 JAX-WS 依赖于 JAXB,并且由于我观察到在 JAX-B 引用实现中解压 XML bean 的代码,我猜没有区别并且 JAXWS 客户端总是返回一个空集合,即使 web 服务结果是空元素:
我有一个使用 Axis1 制作的可用 Web 服务,我正在将其迁移到 Jaxws 我正在使用 wsimport 和 maven 从我的工作 WSDL 文件创建客户端类。 我遇到的问题是,我可以在记录器
有人可以帮我吗? 我正在尝试连接 Web 服务;这是我的代码: public class test { static Logger logger = Logger.getLogger(test
这个问题在这里已经有了答案: How to change webservice url endpoint? (4 个回答) 关闭7年前。 如何动态更改我的 JAXWS 客户端正在使用的地址?此客户端由
我需要通过 SOAP Web 服务调用长时间运行的任务,在两端使用 JAXWS,特别是在两端使用 Apache CXF 2.6。 我看到我可以在 CXF 代码生成器中启用异步方法,它为每个操作创建两个
我在 maven 3 中使用 netbeans。当我尝试使用 jaxws-maven-plugin 进行编译时,出现以下错误。 这是我的 pom
我每次尝试使用 wsdl2java 工具时都会出现同样的错误。任何想法非常感谢-fe jaxbs 没有帮助。看起来找不到tools-plugin.xml。 15:18:37.618 [main] DE
我正在用Spring构建一个Web服务。我可以构建项目并将其部署到tomcat,但是当服务器启动时,出现以下错误: Invalid NamespaceHandler class [org.apache
我正在使用带有 JaxWS maven 插件的 NetBeans。我的应用程序有大约 5 个不同的 wsdls 我需要加载。我的问题是我想阻止 maven 或 wsimport 每次重新编译我的 ws
我有一个使用 JAX-WS 创建的 WebService,我编写了一个 JUnit 以通过以下方式连接到它: public class LicenseSvcClient { private s
我已经设置了一个 JAXWS 客户端并将一个 SoapHandler 实现添加到它的 Binding handlerChain。所有这一切都是为了在服务未正常运行时查看原始服务响应。 当一切正常时,我
我对编写网络服务相当陌生。我正在使用 JAXWS 开发 SOAP 服务。我希望能够让用户登录并在我的服务中知道哪个用户正在发出命令。换句话说,进行一些 session 处理。 我见过的一种方法是使用
您好,我已经编写了一个 WSDL 文件并生成了我的 Web 服务。我现在想像这样调用该服务: res = new UpdateCatalogWebService().getUpdateCatalogP
我使用 wsimport 从 wsdl 生成类。现在我正在解决缺少的依赖项,其中一些属于 javax.xml.ws:jaxws-api: 导入 javax.xml.ws.Service; 导入 jav
我是一名优秀的程序员,十分优秀!