标签: java-metro-framework

JAX-WS实现包含在Java中?

我有一个JAX-WS Web服务应用程序,它作为Tomcat 7的WAR文件进行部署.它使用最新版本的Metro库,我将其包含在WAR文件中,并且工作正常.

我正在尝试简化部署包.据我所知,太阳JDK包括地铁的复印件(请参阅这个问题这个为例),但出于某种原因,这显然是强制性的,同时一个从GlassFish网站下载,以取代地铁的这个副本.我试图了解是否有可能只使用Tomcat和JDK附带的城域网实现,或者如果不是为什么不这样做.

WAR内容如下(删除了类文件):

META-INF/MANIFEST.MF
WEB-INF/classes/
WEB-INF/classes/com/[et cetera]
WEB-INF/ibm-web-ext.xml
WEB-INF/lib/
WEB-INF/lib/stax-api.jar
WEB-INF/lib/webservices-api.jar
WEB-INF/lib/webservices-extra-api.jar
WEB-INF/lib/webservices-extra.jar
WEB-INF/lib/webservices-rt.jar
WEB-INF/lib/webservices-tools.jar
WEB-INF/sun-jaxws.xml
WEB-INF/web.xml
wsdl/
wsdl/MyService.wsdl
Run Code Online (Sandbox Code Playgroud)

web.xml 包含,部分:

<servlet>
    <servlet-name>MyService</servlet-name>
    <servlet-class>
        com.sun.xml.ws.transport.http.servlet.WSServlet
    </servlet-class>              
</servlet>
Run Code Online (Sandbox Code Playgroud)

当我从WAR中删除webservices-*jars(Metro jar)时,Web服务失败并显示错误"Wrapper找不到servlet类com.sun.xml.ws.transport.http.servlet.WSServlet或类这取决于".这并不奇怪,因为我无法在Java 7 SE附带的罐子里找到该类.

那么,如果你必须下载另一份Metro来制作像这样的工作,那么说Java 7附带Metro是什么意思呢?是否可以仅使用Java附带的jar在Tomcat中运行JAX-WS Web服务?

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

16
推荐指数
2
解决办法
3万
查看次数

Webservice - 客户端服务实例化

您知道创建Web服务客户端服务实例的成本是多少?

 JavaWebService service = new JavaWebService();
 SomePort port = service.getJavaWebServicePort(); 
Run Code Online (Sandbox Code Playgroud)

创建服务一次,然后在多线程环境(webapp)中重用相同的端口并不危险?

请注意,端口getPort和端口本身不是线程安全的,但是如果服务成本高昂,每次创建服务时都可能会产生问题.

任何的想法 ?

谢谢

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

14
推荐指数
1
解决办法
7447
查看次数

JAXBContext.newInstance内存泄漏

在系统测试中最近部署之后,我们的一个servlet比平时受到更大的打击,我们注意到内存开始攀升,weblogic最终会死亡.我的实习生,我非常自豪,发现了内存泄漏的来源.

每当请求进入时,都会调用此行:

JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,对象永远不会被垃圾收集.一旦我们将它静态化并移动到我们初始化它的位置,我们的内存泄漏便消失了.

我们的另一个开发人员在独立的Java应用程序中将该行放在while循环中,并且还看到了内存蠕变.

有没有人有任何想法为什么该对象不会被垃圾收集?

谢谢

java memory-leaks java-metro-framework jaxb

13
推荐指数
1
解决办法
9166
查看次数

JAXB以不同的方式将XML封送到OutputStream与StringWriter

我很抱歉,如果这已经得到解答,但我一直在使用的搜索术语(即JAXB @XmlAttribute压缩JAXB XML编组到String不同的结果)没有提出任何建议.

我正在使用JAXB来取消/编组带注释@XmlElement@XmlAttribute注释的对象.我有一个格式化程序类,它提供了两个方法 - 一个包装marshal方法并接受对象编组和一个OutputStream,另一个只接受对象并将XML输出作为String返回.不幸的是,这些方法不能为相同的对象提供相同的输出.封送到文件时,内部标记的简单对象字段@XmlAttribute将打印为:

<element value="VALUE"></element>
Run Code Online (Sandbox Code Playgroud)

当编组到一个字符串时,它们是:

<element value="VALUE"/>
Run Code Online (Sandbox Code Playgroud)

我更喜欢这两种情况的第二种格式,但我很好奇如何控制差异,并且无论如何都会满足于它们.我甚至创建了一个静态编组器,两种方法都使用它来消除不同的实例值.格式代码如下:

/** Marker interface for classes which are listed in jaxb.index */
public interface Marshalable {}
Run Code Online (Sandbox Code Playgroud)
/** Local exception class */
public class XMLMarshalException extends BaseException {}
Run Code Online (Sandbox Code Playgroud)
/** Class which un/marshals objects to XML */
public class XmlFormatter {
    private static Marshaller marshaller = null;
    private static Unmarshaller unmarshaller = null;

    static {
        try {
            JAXBContext context …
Run Code Online (Sandbox Code Playgroud)

java xml java-metro-framework jaxb

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

如何将JAVAX-WS Endpoint绑定更改为SOAP 1.2?

我正在使用Endpoint.publish()Visual Studio中的消费发布测试WS实现.根据文档,默认的SOAP绑定是1.1,并且可以更改绑定,但我无法具体弄清楚如何更改绑定1.2.

任何帮助表示赞赏!

java eclipse soap web-services java-metro-framework

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

JAX-WS使用WS-Security和WS-Addressing来使用Web服务

我正在尝试使用JAX-WS(Metro)开发独立的Java Web服务客户端,该客户端使用带有用户名令牌身份验证的WS-Security(密码摘要,随机数和时间戳)和时间戳验证以及SSL上的WS-Addressing.

我必须使用的WSDL没有定义任何安全策略信息.当WSDL不包含此信息时,我无法确切地知道如何添加此标头信息(正确的方法).我发现使用Metro的大多数示例都围绕着使用Netbeans从WSDL自动生成这个,这对我没有任何帮助.我没有太多的清晰度或方向,已经研究过WSIT,XWSS等.JBoss WS Metro看起来很有希望也没有太多运气.

任何人都有这方面的经验或有关如何完成此任务的建议?即使把我指向正确的方向也会有所帮助.除了必须基于Java之外,我不限于特定技术.

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

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

WSContext.getUserPrincipal()为密码摘要认证返回null

在我的WebService中,我需要记录调用者的id,但是即使使用带有密码身份验证的WS-Security对用户进行了身份验证,wsContext.getUserPrincipal()也会返回null.根据JavaDocs for JAX-WS 2.1,WSContext.getUserPrincipal()只应在用户未经过身份验证时返回null.

我是否必须在安全处理程序中执行某些操作才能将用户主体设置为WSContext?文档似乎表明它是自动完成的.

我在Tomcat上使用了带有jax-ws 2.1.3堆栈的metro 1.1堆栈(我认为是1.1.5).

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

10
推荐指数
1
解决办法
1524
查看次数

为什么JAXB 2 RI的XJC简单模式会改变集合名称?

JAXB简单绑定模式将集合名称修改为其复数"版本",例如"additionalData"变为"additionalDatas".有没有改变这种行为的解决方案?我需要一个Java字段名称和方法名称等于XSD字段名称.我的绑定文件:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
            xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
            xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
            xsi:schemaLocation="
http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
version="2.1">
  <globalBindings>
    <serializable uid="1" />
    <xjc:simple/>
  </globalBindings>
</bindings>
Run Code Online (Sandbox Code Playgroud)

java java-metro-framework jaxb jaxb2

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

使用Glassfish/Metro模拟WCF安全Web服务器的问题

我正在尝试构建一个Glassfish托管的Web服务,该服务模仿(用于开发测试)WCF托管的Web服务.我有来自WCF托管服务的WSDL,我可以从WCF托管的WSDL构建Java服务和Java客户端,没有任何问题.WSDL使用相互证书安全性进行数据交换.

WSDL具有与WCF服务器的主机证书匹配的嵌入式X509证书.

当我尝试将我的Java客户端连接到Glassfish托管的Java服务时,我得到 - 当然 - 证书错误.

那么我采取了哪些步骤来实现这一目标?我假设:

A)我需要将WSDL中的X509证书字符串替换为我安装Glassfish时创建的自签名Glassfish证书's1as'的内容.

B)为服务器网络配置设置Glassfish服务器SSL参数,以使用随Glassfish安装提供的默认cacerts.jks和keystore.jks证书库.即使我没有在这里使用SSL,我假设服务器需要知道其信任库和密钥库在HTTP上执行相互证书安全性的位置.

C)将's1as'服务器证书添加到Java客户端的信任库中.

D)将我以前用于原始WCF连接客户端的任何证书添加到Glassfish服务器的密钥库.(我不确定这个?)

这里有什么我想念的吗?任何援助将不胜感激.

java ssl java-metro-framework glassfish-3

10
推荐指数
1
解决办法
414
查看次数

Sun Metro和Apache CXF之间的Web服务开发比较?

Sun Metro和Apache CXF在Java中进行Web服务开发的相对优势和劣势是什么?还有另一个我应该关注的框架吗?

java web-services cxf java-metro-framework

9
推荐指数
2
解决办法
8490
查看次数