有没有人成功更新了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>
这基本上是出货JAX-WS的新版本与我的应用程序。
在我耳边模块,我使用了与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>
这是表明Weblogic的使用,而不是它本身的类我的班。
目前我的Weblogic 10.3.3使用JAX-WS 2.1.5当我部署动态生成WSDL文件的Web服务,生成WSDL是进口的XSD(模式),我想告诉Weblogic的产生与内嵌的WSDL模式,这就是为什么我试图覆盖使用的JAX-WS版本,希望更近的版本使用内联架构。
另一种选择是开发过程中生成具有内联模式的WSDL或者不知道怎么的Weblogic就用它,而不是生成动态的版本,也有人知道如何做到这一点? 是它把它在战争中的具体路径? 什么关于@WebService注释的wsdlLocation属性?
提前致谢!
我能得到JAXWS 2.2.6运行中的Weblogic 10.3.5我知道你是在10.3.3工作,但这种解决方案还应该工作。
我跟着从这个METRO讨论的步骤: http://www.java.net/node/695058#comment-772902
不从那里所有的步骤都真正需要。 所以这是我做了说明。
步骤war文件
1)包装你的web服务作为战争文件
2)在战争中的文件,你需要WEB-INF目录下的太阳jaxws.xml文件(详细信息请看这里: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxws/jaxws-war.html
)
3)放置在WEB-INF / WSDL中的WSDL和XSD文件
4)注册WSServlet
和WSServletContextListener
在你web.xml
(一些帮助这里看看http://java.dzone.com/articles/jax-ws-deployment-five-minute )
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>MyWebService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyWebService</servlet-name>
<url-pattern>/MyWebService</url-pattern>
</servlet-mapping>
5)将至少一个下服务文件WEB-INF/classes/META-INF/services
我用javax.xml.ws.spi.Provider
并在文件(实现类供应商的)内容: com.sun.xml.ws.spi.ProviderImpl
你可以从JAXWS-rt.jar中的这个文件
地方还有其他的服务文件在这里(例如针对不同XeceresParserFactory)
原因 :产生的Weblogic在运行时调用的文件: _wl_cls_gen.jar
。 在这里,它会在第一服务到位的文件。 当WebLogic创立一个服务文件有其他所有文件都从jar文件加载espected。 至少它像这样
6)创建weblogic.xml
组<prefer-web-inf-classes>false</prefer-web-inf-classes>
到假
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">
<context-root>/LogisticsWebservice</context-root>
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
战争文件的结构:
WEB-INF
|-> classes
|-> META-INF
|-> services
|-> javax.xml.ws.spi.Provider
|-> lib
|-> alle projektspezifischen jars außer die Abhängigkeiten für JaxWS
|-> wsdl
|-> MyWebService.wsdl
|-> MyObjects.xsd
|-> sun-jaxws.xml
|-> web.xml
|-> weblogic.xml
步骤ear文件
1)收拾好你的WAR文件EAR文件
2)将下JAXWS服务查找类APP-INF/classes
,你可以从JAXWS-rt.jar中使用现有的类文件
3)将JAXWS-RT,在所有依赖关系和Xerces-2.9.1和Xalan-2.7.1 APP-INF/lib
4)创建application.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>MyWebService</display-name>
<module id="MyWebService">
<web>
<web-uri>MyWebService.war</web-uri>
<context-root>/MyWebService</context-root>
</web>
</module>
</application>
5)创建weblogic-application.xml
的文件
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.2/weblogic-application.xsd">
<application-param>
<param-name>webapp.encoding.default</param-name>
<param-value>UTF-8</param-value>
</application-param>
<prefer-application-packages>
<package-name>com.ctc.*</package-name>
<package-name>com.sun.xml.*</package-name>
<package-name>com.sun.istack.*</package-name>
<package-name>com.sun.msv.datatype.*</package-name>
<package-name>com.sun.msv.driver.*</package-name>
<package-name>com.sun.msv.grammar.*</package-name>
<package-name>com.sun.msv.reader.*</package-name>
<package-name>com.sun.msv.relaxns.*</package-name>
<package-name>com.sun.msv.scanner.*</package-name>
<package-name>com.sun.msv.util.*</package-name>
<package-name>com.sun.msv.verifier.*</package-name>
<package-name>com.sun.msv.writer.*</package-name>
<package-name>com.sun.org.apache.xml.internal.*</package-name>
<package-name>com.sun.wsit.*</package-name>
<package-name>javax.jws.*</package-name>
<package-name>javax.xml.bind.*</package-name>
<package-name>javax.xml.soap.*</package-name>
<package-name>javax.xml.stream.*</package-name>
<package-name>javax.xml.ws.*</package-name>
<package-name>javax.xml.activation.*</package-name>
<package-name>javax.xml.annotation.*</package-name>
<package-name>javax.xml.mail.*</package-name>
<package-name>javax.xml.security.*</package-name>
<package-name>javax.xml.registry.*</package-name>
<package-name>javax.xml.rpc.*</package-name>
<package-name>javax.xml.crypto.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>javanet.staxutils.*</package-name>
<package-name>jp.gr.xml.*</package-name>
<package-name>org.codehaus.stax2.*</package-name>
<package-name>org.glassfish.gmbal.*</package-name>
<package-name>org.iso_relax.*</package-name>
<package-name>org.jcp.xml.dsig.*</package-name>
<package-name>org.jvnet.*</package-name>
<package-name>org.relaxng.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>META-INF/services/*</resource-name>
</prefer-application-resources>
</weblogic-application>
注意 :罐子这是在耳下文件APP-INF/lib
不应该在战争下的文件WEB-INF/lib
EAR文件的结构:
|-> APP-INF
|-> classes
|-> com
|-> sun
|-> xml
|-> ws
|-> util
|-> ServiceFinder.class
|-> ServiceFinder$1.class
|-> ServiceFinder$ComponentExWrapper.class
|-> ServiceFinder$CompositeIterator.class
|-> ServiceFinder$LazyIterator.class
|-> lib
|-> activation-1.1.jar
|-> gmbal-api-only-3.1.0-b001.jar
|-> ha-api-3.1.8.jar
|-> istack-commons-runtime-2.4.jar
|-> javax.annotation-3.1.1.jar
|-> jaxb-api-2.2.4.jar
|-> jaxb-impl-2.2.5.jar
|-> jaxws-api-2.2.8.jar
|-> jaxws-rt-2.2.6.jar
|-> jsr181-api-1.0-MR1.jar
|-> management-api-3.0.0-b012.jar
|-> mimepull-1.8.jar
|-> policy-2.3.1.jar
|-> relaxngDatatype-20020414.jar
|-> resolver-20050927.jar
|-> saaj-api-1.3.4.jar
|-> saaj-impl-1.3.18.jar
|-> serializer-2.7.1.jar
|-> stax-api-1.0-2.jar
|-> stax-ex-1.7.jar
|-> stax2-api-3.1.1.jar
|-> streambuffer-1.4.jar
|-> txw2-20110809.jar
|-> woodstox-core-asl-4.1.2.jar
|-> xalan-2.7.1.jar
|-> xercesImpl-2.9.1.jar
|-> xml-apis-1.3.04.jar
|-> META-INF
|-> application.xml
|-> weblogic-application.xml
|-> MyWebService.war
现在部署EAR文件到WebLogic。
当您打开您的WSDL文件http://localhost:7001/MyWebService/MyWebService?wsdl
你应该看到此评论:
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.6b21 svn-revision#12959. -->
希望这如何做的/在某种程度上有用。
对于一些调试信息添加此我ServiceImpl类:
private static String getImplementationInfo(String componentName, @SuppressWarnings("rawtypes") Class componentClass)
{
CodeSource source = componentClass.getProtectionDomain().getCodeSource();
return MessageFormat.format(
"{0} implementation: {1} loaded from: {2}",
componentName,
componentClass.getName(),
source == null ? "Java Runtime" : source.getLocation());
}
public MyWebServiceResponse sayHello(MyWebServiceRequest request) throws MyWebServiceFault
if (LOG.isDebugEnabled())
{
com.sun.xml.ws.util.Version jaxwsVersion = com.sun.xml.ws.util.Version.RUNTIME_VERSION;
LOG.debug("JaxWS major=" + jaxwsVersion.MAJOR_VERSION + "; buildVersion=" + jaxwsVersion.BUILD_VERSION + "; buildId="
+ jaxwsVersion.BUILD_ID + "; svnRev" + jaxwsVersion.SVN_REVISION);
LOG.debug(getImplementationInfo("JaxWS", com.sun.xml.ws.util.Version.class));
LOG.debug(getImplementationInfo("JaxB", com.sun.xml.bind.Util.class));
LOG.debug(getImplementationInfo("DocumentBuilderFactory", DocumentBuilderFactory.newInstance().getClass()));
LOG.debug(getImplementationInfo("XPathFactory", XPathFactory.newInstance().getClass()));
LOG.debug(getImplementationInfo("TransformerFactory", TransformerFactory.newInstance().getClass()));
LOG.debug(getImplementationInfo("SAXParserFactory", SAXParserFactory.newInstance().getClass()));
}
// do something
return myWebServiceResponse;
}
对于亚历克斯
PS:作为一个新的用户i#m的只允许张贴2页的超链接,请原谅这...
我用这个解决方案,并能得到这个工作......但问题是,我需要发送,所以我创造了我分配到绑定的自定义SSLSocketFactory的适当的客户端证书:bp.getRequestContext()把(JAXWSProperties.SSL_SOCKET_FACTORY ,fact.getSSLSocketFactory());
问题是,weblogic的不使用它。 它使用自己的HTTPsConnection拥有标准厂房。 我试图执行一个weblogic的SSLSocketFactory的,但投入结合理所当然抱怨说,它是不是太阳类。
经过大量的浪费时间,我创建调用的模板(运行我的代码作为独立的),然后我用XML来替换/更新节点(+在HTTP头中的动作)。 它可以很好地和我摆脱了所有这些变化是在需要。 我知道这是一个有点激进,但说实话,以实现它工作得很好的调用。
文章来源: Override JAX-WS version used by Weblogic 10 - Dynamic WSDL with inline schemas