1

更新ClassNotFoundExceptionは、アプリケーションの起動直後にWebサービスを使用しようとすると発生します。私が待っていれば(何らかの不明なイベント/期間の間)、アプリケーションは動作します。私はそれが何であるかを知りたいと思います。起動後にWebServiceを呼び出すときにWebSphere ClassNotFoundExceptionが発生する


問題:存在しないクラスがクラスローダによって発見されていないので、私のアプリケーションに障害が発生しました。

詳細情報

見つけることができないクラスがcom.sun.xml.stream.ZephyrParserFactoryです。

私のEARにはsjsxr.jarがあります。このjarにはクラスが含まれていますcom.sun.xml.stream.ZephyrParserFactory

EARには、アプリケーションのEJBエントリポイントを含むMyApp.jarも含まれています。 sjsxr.jar

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.1 
Created-By: 1.5.0_18 (Sun Microsystems Inc.) 
Built-By: GMM Development Team 
Class-Path: aopalliance-1.0.jar commons-codec-1.4.jar commons-collecti 
ons-3.1.jar commons-lang-2.1.jar commons-logging-1.1.1.jar ehcache-co 
re-2.1.0.jar ehcache-spring-annotations-1.1.2.jar joda-time-1.6.1.jar 
    log4j-1.2.16.jar org.springframework.context.support-3.0.4.RELEASE.j 
ar sjsxr.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar spring-aop 
-3.0.4.RELEASE.jar spring-asm-3.0.4.RELEASE.jar spring-beans-3.0.4.RE 
LEASE.jar spring-context-3.0.4.RELEASE.jar spring-core-3.0.4.RELEASE. 
jar spring-expression-3.0.4.RELEASE.jar spring-jdbc-3.0.4.RELEASE.jar 
    spring-tx-3.0.4.RELEASE.jar swiftVal.jar velocity-1.5.jar vm-startup 
.jar xbean.jar 

アプリケーションを含む、すべての必要なjarファイルMyApp.jarマニフェストの参照は、WebSphereのwsimportツールによって生成されたWebサービスクライアントコードが含まれています。アプリケーションは、このコードを呼び出すようにしようとすると、次の例外がスローされます。

EJB threw an unexpected (non-declared) exception during invocation of method 
    "messageIn" on bean "BeanId(MyApp#ejb.jar#NodeEJB, null)". 
Exception data: javax.xml.stream.FactoryConfigurationError: Provider 
    com.sun.xml.stream.ZephyrParserFactory not found 
    at javax.xml.stream.XMLInputFactory.newInstance(Unknown Source) 
    at org.apache.axiom.om.util.StAXUtils$7.run(StAXUtils.java:327) 
    at java.security.AccessController.doPrivileged(AccessController.java:202) 
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory_perClassLoader(StAXUtils.java:323) 
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory(StAXUtils.java:78) 
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:133) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:596) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581) 
    at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) 
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:90) 
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:641) 
    at com.ibm.ws.websvcs.deployment.WASAxis2ConfigurationBuilder.loadAxisCfg(WASAxis2ConfigurationBuilder.java:492) 
    at com.ibm.ws.websvcs.deployment.WASAxis2ConfigurationBuilder.loadAxisClientConfiguration(WASAxis2ConfigurationBuilder.java:191) 
    at com.ibm.ws.websvcs.client.WSClientConfigurationFactory.getConfigContext(WSClientConfigurationFactory.java:271) 
    at com.ibm.ws.websvcs.client.WSClientConfigurationFactory.getClientConfigurationContext(WSClientConfigurationFactory.java:236) 
    at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:92) 
    at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:79) 
    at org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:76) 
    at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:212) 
    at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:59) 
    at javax.xml.ws.Service.<init>(Service.java:67) 
    at my.generated.Web_Service.<init>(Web_Service.java:44) 
... 
Caused by: java.lang.ClassNotFoundException: com.sun.xml.stream.ZephyrParserFactory 
    at java.lang.Class.forNameImpl(Native Method) 
    at java.lang.Class.forName(Class.java:136) 
    at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) 
    at javax.xml.stream.FactoryFinder.find(Unknown Source) 
    at javax.xml.stream.FactoryFinder.find(Unknown Source) 
    ... 101 more 

私は、クラス、jarファイルとマニフェストは、展開前と後に正しいことを半ダース回を確認しています。

潜在的な日食を避けるためにsjsxr.jarの名前を変更しようとしましたが、問題は解決しません。

私はWebSphere 7.0.0.11 ND

を使用していますか?

+0

sjsxr.jarのMyApp.jarのマニフェストエントリを投稿できますか? – crnlx

+0

マニフェストを追加して質問を編集しました。 – Synesso

答えて

2

私はjavaを使用してからWebSphereを手短に触れていましたが、thisが役に立ちますか?マニフェストを使用してjarファイルを検索できない場合は、jarのWEB-INF/libフォルダにパッケージングしてみてください。リンクされたページの情報を正しく読み込んでいると仮定すると、マニフェストでそれを参照せずに暗黙的に見つかるはずです。

this WebSphere linkを参照してください。「EARファイル内のクラスの参照」という見出しの下のページの途中に表示されます。

+0

ありがとうございます。 WEB-INF/libのアプローチは、WARファイルによってのみ利用されます。しかし、このリンクにより、クラスパス情報を内部JARのマニフェストからEAR自体に移動させようとしています。注:このアプリは、4年または5年間働いているビルドシステムを使用して構築されているので、EARがすでに有効であると思います。しかし、我々は見るでしょう... – Synesso

+0

幸運。私が言ったように、私はかなりのJava開発(EJB 1.0タイムフレームのような)を行って以来、長い時を経てきたので、これに関する私の知識は限られています。上記の方法で解決できない場合は、Googleが他の多くのリンクを立てました。 – Will

+0

ありがとうございます。はい、問題は解決しません。 – Synesso

関連する問題