标签: java-metro-framework

Java:JAXB并使用char

我正在使用JAXB开发一个项目,但是我遇到了一个JAXB和char数据类型的小问题.

char gender = 'M';
Run Code Online (Sandbox Code Playgroud)

编组后转换为:

<gender>77</gender>
Run Code Online (Sandbox Code Playgroud)

所以我认为char被映射到整数,但我只想将它映射到String.我怎样才能做到这一点?它甚至可能吗?

java primitive java-metro-framework jaxb char

8
推荐指数
1
解决办法
5511
查看次数

覆盖Weblogic 10使用的JAX-WS版本 - 带有内联架构的动态WSDL

有没有人成功更新过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属性呢?

提前致谢!

java-metro-framework jax-ws weblogic-10.x

8
推荐指数
1
解决办法
2万
查看次数

没有Web应用程序服务器的Java Web服务

我们有一个消息处理服务器,它

  • 开始几个线程
  • 处理邮件
  • 与数据库等交互......

现在,客户端希望在服务器上拥有Web服务服务器,他们将能够使用Web服务客户端查询消息处理服务器.例如,给我今天的所有消息,或删除带有id的消息....

问题是:

  • 服务器只是标准的j2se应用程序,不在应用程序服务器内运行,如tomcat或glassfish.
  • 要处理Http请求,我是否需要实现http服务器?
  • 我想使用漂亮的j2ee注释,如@webservice,@ webmothod等...是否有任何我可以使用的库或框架

tomcat web-services java-metro-framework jax-ws java-ee

8
推荐指数
1
解决办法
9753
查看次数

Java 11之后wsimport在哪里

我已经使用 wsimport 和其他 Metro 工具很多年了,但自从 Java 11 中删除了 Java EE 模块后,我找不到这些工具了。

我在哪里可以找到wsimport可执行文件?

java java-metro-framework jax-ws wsimport

8
推荐指数
1
解决办法
1万
查看次数

Tomcat偶尔会返回没有HTTP头的响应

我正在研究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用户邮件列表,并从开发人员那里获得了一些进一步调查的建议:

http://tomcat.10.x6.nabble.com/Tomcat-occasionally-returns-a-response-without-HTTP-headers-td5080623.html

但我还没有找到任何适当的解决方案.我仍然在寻找解决这个问题的见解..

tomcat http java-metro-framework nginx chunked

8
推荐指数
1
解决办法
733
查看次数

在专有软件中使用Glassfish库

我想在使用CDDL + GPLv2许可证的专有软件中使用Glassfish的某些部分.我被允许这样做吗?我没有修改这些库的代码中的任何内容,所以这是好的,还是我的软件,因为它使用这些库,仍然被认为是衍生作品,因此是一个很大的禁忌?

我的意思是,根据http://jaxb.java.net/,JAXB也在CDDL + GPLv2下,但我知道我可以在专有软件中自由使用它.这是因为CDDL + GPLv2实际上是允许的,还是在与JRE捆绑在一起时以不同的许可证分发?

java licensing glassfish java-metro-framework

7
推荐指数
1
解决办法
2247
查看次数

使用Metro 2.1在Tomcat 7.0.11上发生WSServlet ClassNotFoundException错误

我正在尝试使用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)

java web-services java-metro-framework jax-ws tomcat7

7
推荐指数
1
解决办法
2万
查看次数

如何在JAX-WS Web服务中全局配置目标命名空间?

我有很多端点注释@WebService(targetNamespace = "mynamespace").每一个@WebResult@WebParam具有相同的定义targetNamespace = "mynamespace".

有没有办法将JAX-WS(Metro实现)配置"mynamespace"为默认用作targetNamespace?

我想使用没有任何属性的注释,并删除重复的声明,就像约定优于配置.

java-metro-framework jax-ws convention-over-configur

7
推荐指数
1
解决办法
1万
查看次数

如何在Glassfish上的Metro上选择CXF

我在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应用程序不起作用.

cxf glassfish java-metro-framework jax-ws classpath

6
推荐指数
2
解决办法
6542
查看次数

JAX-WS端点仅部分转义XML String

我有一个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="">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;my_xml version="1.2" query_date=""&gt;
  &lt;add_transaction_type description="Contributions" name="Contribution" type="C"/&gt;
  &lt;add_transaction_type description="Transfer In" name="Xfr or R/O In" type="X"/&gt;
&lt;/my_xml&gt;
      </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>&lt;?xml version="1.0" encoding="UTF-8"?>

&lt;myxml version="1.2" query_date="">
  &lt;add_transaction_type description="Contributions" name="Contribution" type="C"/>
  &lt;add_transaction_type description="Administration Fee" name="Fee:AUM" type="U"/>
&lt;/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库.

端点基本上定义如下: …

java xml web-services escaping java-metro-framework

6
推荐指数
1
解决办法
3760
查看次数