Weblogic 11 gがWebServiceを引き下げた一連の問題
5491 ワード
Weblogic 11 gがWebServiceを引き下げた一連の問題
リソースダウンロード(apache-cxf-2.5.9)
今日はリモートテスターで一昨日書いたWebServiceインタフェースの呼び出し方法をテストしましたが、多くの問題がありましたね.
まず、weblogicがjarパッケージをロードする順序について説明します.
ロード順:
Weblogic 11 gは、以前に導入されたものとは異なり、まず、自分のjarパッケージをロードし、次にあなたがどのプログラムに導入したwarパッケージですか.
ロード順序を変更するには、次の手順に従います.
ネットで探す方法は、あなたが開発したJavaプロジェクトの下のweb-infの下で、まずweblogicを書くことです.xmlの構成です.ここの内容は次のとおりです.
「true 」ここではjarパッケージを優先的にロードすることを説明します.このxmlは、weblogic自体jarを先にロードすることによる多くの問題を解決することができる.
では2つ目の質問です!
QNameエラー:
私のこのプロジェクトは同じようにweblogicの下のwebserviceにリンクするので、私のjavaプログラムはこのwebserviceをリンクする方法があります.
以下はjspに書いてテストしやすいです.
準備が整いましたら、weblogicに配備しても大丈夫です.
ただし、プログラムを起動したときにwebserviceインタフェースを呼び出すまで実行すると、問題が発生します.具体的なエラーは次のとおりです.
これは,webserviceインタフェースを呼び出す際にQNameメソッドを参照したためであり,weblogicではQNameを含むjarパケットが多数存在するため,QNameメソッドの呼び出しに失敗した.
ネット上でいろいろな方法を探していますが、一つはwebserviceインタフェースの配置を変更する方法があります.この方法はいいでしょう.インタフェースを変更するという欠点は、自分が開発したwebserviceインタフェースを配置しなければ、コミュニケーションの問題があるということです.
第2の方法:この方法は比較的に強くて、暴力の方法に属して、しかし確かに有効で、ネット上から探す構想で、しかし、具体的な問題は具体的に分析して、ちょうど私はこの間違いにうんざりして、やっと失敗して、数日遅れて、解決して、この方法は、直接あなたのプロジェクトの下でjarバッグの中でQNameを含む方法を削除して、方法は、rarでjarバッグを開けて、直接rarでjarバッグの中でQNameを含むファイルを削除して、QNameのjarが存在します.
私のここのQNameのパスはjavax/xml/namespace/QNameなので、同じパスのQNameを削除すればOKです!!
OKですか?問題の由来!
エラー:aultString:org.xml.sax.SAXException: Bad envelope tag: definitions
提案ソリューション:eclipse/myeclipseを使用したwebserviceが提供するツール:wsdl 2 javaはクライアントコードを生成し、プロジェクトに入れてコンパイルし、テスト環境に更新してテストします.
リソースダウンロード(apache-cxf-2.5.9)
今日はリモートテスターで一昨日書いたWebServiceインタフェースの呼び出し方法をテストしましたが、多くの問題がありましたね.
まず、weblogicがjarパッケージをロードする順序について説明します.
ロード順:
Weblogic 11 gは、以前に導入されたものとは異なり、まず、自分のjarパッケージをロードし、次にあなたがどのプログラムに導入したwarパッケージですか.
ロード順序を変更するには、次の手順に従います.
ネットで探す方法は、あなたが開発したJavaプロジェクトの下のweb-infの下で、まずweblogicを書くことです.xmlの構成です.ここの内容は次のとおりです.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app
http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
<context-root>/myApp</context-root>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
「
では2つ目の質問です!
QNameエラー:
私のこのプロジェクトは同じようにweblogicの下のwebserviceにリンクするので、私のjavaプログラムはこのwebserviceをリンクする方法があります.
以下はjspに書いてテストしやすいです.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="org.apache.axis.client.Service" %>
<%@page import="org.apache.axis.client.Call" %>
<%
String endpoint = "http://XXXXXXXXX:8080/localappservice/unicode?wsdl";// X IP
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("ucExchange"); //
String xml = "XXXXXXXXXXXX";
String rtn = (String)call.invoke(new Object[]{xml});
%>
:<%=xml %>
:<%=rtn %>
準備が整いましたら、weblogicに配備しても大丈夫です.
ただし、プログラムを起動したときにwebserviceインタフェースを呼び出すまで実行すると、問題が発生します.具体的なエラーは次のとおりです.
Error processing remote invocation: java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/Change
AwareClassLoader) previously initiated loading for a different type with name "javax/xml/namespace/QName"
これは,webserviceインタフェースを呼び出す際にQNameメソッドを参照したためであり,weblogicではQNameを含むjarパケットが多数存在するため,QNameメソッドの呼び出しに失敗した.
ネット上でいろいろな方法を探していますが、一つはwebserviceインタフェースの配置を変更する方法があります.この方法はいいでしょう.インタフェースを変更するという欠点は、自分が開発したwebserviceインタフェースを配置しなければ、コミュニケーションの問題があるということです.
第2の方法:この方法は比較的に強くて、暴力の方法に属して、しかし確かに有効で、ネット上から探す構想で、しかし、具体的な問題は具体的に分析して、ちょうど私はこの間違いにうんざりして、やっと失敗して、数日遅れて、解決して、この方法は、直接あなたのプロジェクトの下でjarバッグの中でQNameを含む方法を削除して、方法は、rarでjarバッグを開けて、直接rarでjarバッグの中でQNameを含むファイルを削除して、QNameのjarが存在します.
私のここのQNameのパスはjavax/xml/namespace/QNameなので、同じパスのQNameを削除すればOKです!!
OKですか?問題の由来!
エラー:aultString:org.xml.sax.SAXException: Bad envelope tag: definitions
Caused by: org.xml.sax.SAXException: Bad envelope tag: definitions
at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3084)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:912)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
... 9 more
提案ソリューション:eclipse/myeclipseを使用したwebserviceが提供するツール:wsdl 2 javaはクライアントコードを生成し、プロジェクトに入れてコンパイルし、テスト環境に更新してテストします.