我正在使用JAXB开发一个项目,但是我遇到了一个JAXB和char数据类型的小问题.
char gender = 'M';
Run Code Online (Sandbox Code Playgroud)
编组后转换为:
<gender>77</gender>
Run Code Online (Sandbox Code Playgroud)
所以我认为char被映射到整数,但我只想将它映射到String.我怎样才能做到这一点?它甚至可能吗?
有没有人成功更新过Weblogic 10.3.3使用的JAX-WS版本?
我一直试图做什么在接受的答案所述,从这里为没有运气小时.
我正在使用Maven来解决我的依赖关系,并且我已尝试在WAR模块(Web服务项目)中使用以下库的组合:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.8</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.jws</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>wsit-api</artifactId>
<version>2.2.1-1</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>wsit-impl</artifactId>
<version>2.2.1-1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这基本上是用我的应用程序发布更新版本的JAX-WS.
在我的EAR模块中,我使用了weblogic-application.xml覆盖不同包的文件:
<package-name>javax.jws.*</package-name>
<package-name>javax.xml.ws.*</package-name>
<package-name>javax.xml.bind.*</package-name>
<package-name>javax.xml.soap.*</package-name>
<package-name>com.sun.xml.*</package-name>
Run Code Online (Sandbox Code Playgroud)
这表示Weblogic使用我的类而不是它本身的类.
目前我的Weblogic 10.3.3使用JAX-WS 2.1.5当我部署动态生成WSDL文件的Web服务,生成WSDL是进口的XSD(模式),我想告诉Weblogic的产生与内嵌的WSDL模式,这就是为什么我试图覆盖使用的JAX-WS版本,希望更新的版本使用内联模式.
另一种选择是在开发过程中使用内联模式生成wsdl并以某种方式告诉Weblogic使用该模式而不是生成动态版本,有人知道如何做到这一点吗?是把它放在WAR的特定路径上吗?那个@WebService注释的wsdlLocation属性呢?
提前致谢!
我们有一个消息处理服务器,它
现在,客户端希望在服务器上拥有Web服务服务器,他们将能够使用Web服务客户端查询消息处理服务器.例如,给我今天的所有消息,或删除带有id的消息....
问题是:
我已经使用 wsimport 和其他 Metro 工具很多年了,但自从 Java 11 中删除了 Java EE 模块后,我找不到这些工具了。
我在哪里可以找到wsimport可执行文件?
我正在研究Tomcat(7.0.90 7.0.92)偶尔返回没有HTTP头的响应的问题.
根据Wireshark捕获的数据包,在Tomcat收到请求后,它只返回一个响应体.它既不返回状态行也不返回HTTP响应头.
它使下游Nginx实例产生错误"上游在从上游读取响应头时没有发送有效HTTP/1.0头",向客户端返回502错误并关闭Nginx和Tomcat之间的相应http连接.
这种行为可能是什么原因?是否有任何可能使Tomcat以这种方式行事?或者在某些情况下可能会出现剥离HTTP标头的内容?或Wireshark无法捕获包含HTTP标头的帧?任何建议缩小问题的范围也非常感谢.
这是Wireshark的"关注HTTP流"的屏幕截图,显示了有问题的响应:
编辑:
这是相关部分(仅响应)的"TCP流"的屏幕截图.似乎从上一次的第二个响应中的块看起来很好:
EDIT2:
我将此问题转发给Tomcat用户邮件列表,并从开发人员那里获得了一些进一步调查的建议:
但我还没有找到任何适当的解决方案.我仍然在寻找解决这个问题的见解..
我想在使用CDDL + GPLv2许可证的专有软件中使用Glassfish的某些部分.我被允许这样做吗?我没有修改这些库的代码中的任何内容,所以这是好的,还是我的软件,因为它使用这些库,仍然被认为是衍生作品,因此是一个很大的禁忌?
我的意思是,根据http://jaxb.java.net/,JAXB也在CDDL + GPLv2下,但我知道我可以在专有软件中自由使用它.这是因为CDDL + GPLv2实际上是允许的,还是在与JRE捆绑在一起时以不同的许可证分发?
我正在尝试使用Metro 2.1在Windows Server 2008 R2上使用Tomcat 7.0.11创建一个简单的Web服务.我来自C#/ WCF背景,试图更好地了解Web服务的互操作性.我实际上是在跟随Martin Kalin的书"Java Web Services Up and Running"中的一个例子.我有以下内容:
CATALINA_HOME=c:\tomcat-7.0.11
Run Code Online (Sandbox Code Playgroud)
在catalina.properties文件中我有:
server.loader=c:/metro-2.1/bin/*.jar
Run Code Online (Sandbox Code Playgroud)
(注意,我也尝试过将此路径添加到common.loader).
我已将以下METRO jar文件复制到CALALINA_HOME\lib:
webservices-api.jar,webservices-extra.jar,webservices-extra-api.jar,webservices-rt.jar,webservices-tools.jar
和CALALINA_HOME \背书:
web服务-api.jar文件
(注意,我最初尝试使用metro-on-tomcat.xml ant文件,但它似乎没有为tomcat 7更新.*)
我还将webservices-api.jar复制到JAVA_HOME\jre\lib\endorsed
我已经尝试将其他METRO罐子放在上述位置,但也没有帮助.
现在,Tomcat启动正常并初始化METRO ok,这是catalina日志文件中的相关部分:
信息:部署Web应用程序目录ROOT 18-May-2011 08:00:55 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized INFO:WSSERVLET12:JAX-WS上下文监听器初始化18-May-2011 08: 01:07 com.sun.xml.ws.server.MonitorBase createRoot INFO:Metro监控rootname成功设置为:com.sun.metro:pp = /,type = WSEndpoint,name = -TempConvertImplService-TempConvertImplPort 18-May-2011 08 :01:08 com.sun.xml.ws.transport.http.servlet.WSServletDelegate INFO:WSSERVLET14:JAX-WS servlet初始化
因此,您认为Tomcat已经加载了所有METRO类.根据我收集的内容,WSServlet是JAX-WS 2.1的一部分,它作为METRO的一部分提供,因此应该已经加载.但是,当我实际尝试浏览到我的服务的WSDL时,我在localhost日志中获得以下内容:
SEVERE:在org.apache的org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)中为servlet TempConvertWS java.lang.ClassNotFoundException:com.sun.xml.ws.transport.http.WSServlet分配异常. catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)atg.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)....(堆栈跟踪的其余部分)
我的sun-jaxws.xml看起来像这样:
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="TempConvertWS"
implementation="TimeServer.TempConvertImpl"
url-pattern="/tc"
/>
</endpoints>
Run Code Online (Sandbox Code Playgroud)
我的web.xml文件中的相关部分是:
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>TempConvertWS</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TempConvertWS</servlet-name>
<url-pattern>/tc</url-pattern> …Run Code Online (Sandbox Code Playgroud) 我有很多端点注释@WebService(targetNamespace = "mynamespace").每一个@WebResult与@WebParam具有相同的定义targetNamespace = "mynamespace".
有没有办法将JAX-WS(Metro实现)配置"mynamespace"为默认用作targetNamespace?
我想使用没有任何属性的注释,并删除重复的声明,就像约定优于配置.
我在Glassfish下运行我的企业应用程序时遇到以下问题(由其他人报告).在Jetty下它工作正常.
javax/xml/ws/spi/Provider提到创建META-INF/services/javax.xml.ws.spi.Provider资源,但这已经提供给CXF并且创建一个额外的资源文件并不能解决Glassfish下的这个问题.
有谁知道如何确保在GlassFish下使用CXF?
(我正在使用具有CXF依赖性2.2.5的Maven多模块项目)
谢谢!
蒂姆
编辑#1
暂时解决问题,只是使用Metro,但我真的很想知道如何使用CXF,如果有人有任何指示..如果没有任何作用我可能必须切换Web应用程序容器(或看看Metro填补我的要求)
编辑#2
一些解决方案通过添加<class-loader delegate="false"/>到sun-web.xml文件来详细说明war的修复.但是,这对非战争ee应用程序不起作用.
我有一个JAX-WS端点,其中包含许多方法,这些方法都返回转换为String的XML文档.
这已经在Sun Java System Application Server 9.1 Update 2上运行了一段时间,但需要部署到新服务器.
它被部署到Glassfish 3.0.1没有任何问题,除了一个小问题.原始响应示例摘录:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
<return xmlns=""><?xml version="1.0" encoding="UTF-8"?>
<my_xml version="1.2" query_date="">
<add_transaction_type description="Contributions" name="Contribution" type="C"/>
<add_transaction_type description="Transfer In" name="Xfr or R/O In" type="X"/>
</my_xml>
</return>
</ns2:getTransactionTypesResponse>
</S:Body>
</S:Envelope>
Run Code Online (Sandbox Code Playgroud)
在新服务器上,它返回:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getTransactionTypesResponse xmlns:ns2="http://myns.com.au/">
<return><?xml version="1.0" encoding="UTF-8"?>
<myxml version="1.2" query_date="">
<add_transaction_type description="Contributions" name="Contribution" type="C"/>
<add_transaction_type description="Administration Fee" name="Fee:AUM" type="U"/>
</my_xml>
</return>
</ns2:getTransactionTypesResponse>
</S:Body>
</S:Envelope>
Run Code Online (Sandbox Code Playgroud)
几乎完全相同但只有开口尖括号被转义,而不是关闭括号.
我已使用直接HTTP POST请求对此进行了测试,因此我知道它没有受到任何客户端代码的破坏.
我再次将服务器升级到Glassfish 3.1,认为包含的webservice库存在问题,但没有运气.我的应用程序完全依赖于glassfish中的webservice支持 - 它不包含任何自己的WS或XML库.
端点基本上定义如下: …