2016-04-14 1 views
1

私はRESTfulアプリケーションを作成していますが、新しい接続の変換に問題があります。 私のアプリケーションサーバはWildfly 10.0です。スタンドアロン・full.xmlでClassCastException等しいクラス間での処理Wildfly 10

データソースおよびドライバ:

<datasource jndi-name="java:jboss/datasources/PostgreDS" pool-name="PostgreDS" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:postgresql://192.168.0.112:5432/bdns</connection-url> 
    <driver>postgresql</driver> 
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
    <pool> 
     <min-pool-size>10</min-pool-size> 
     <max-pool-size>40</max-pool-size> 
     <prefill>true</prefill> 
    </pool> 
    <security> 
     <user-name>sa</user-name> 
     <password>000000</password> 
    </security> 
    <statement> 
     <prepared-statement-cache-size>32</prepared-statement-cache-size> 
     <share-prepared-statements>true</share-prepared-statements> 
    </statement> 
</datasource> 
<drivers> 
    <driver name="postgresql" module="org.postgresql"> 
     <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> 
    </driver> 
</drivers> 

のJavaコードConnectionMng.java:

package dao; 

import java.sql.Connection; 
import java.sql.SQLException; 

import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.sql.DataSource; 

import org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7; 
import org.postgresql.jdbc.PgConnection; 

public class ConnectionMng { 
    private DataSource ds; 

    private ConnectionMng() throws NamingException { 
     this.ds = (DataSource)new InitialContext().lookup("java:jboss/datasources/PostgreDS"); 
    } 

    public PgConnection getPgConnection() throws SQLException { 
     WrappedConnectionJDK7 wrappedConn = (WrappedConnectionJDK7)ds.getConnection(); 
     Connection underlyingConn = wrappedConn.getUnderlyingConnection(); 
     return (PgConnection)underlyingConn; 
    } 
} 

例外が発生しました:

ClassCastException: org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 cannot be cast to org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 

のpom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>Core</groupId> 
<artifactId>Core</artifactId> 
<version>1.0.0-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>Core</name> 
<description>Core</description> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
    <javac.target>1.8</javac.target> 
    <postgresql.enforce.jdk.version>[1.7,1.8)</postgresql.enforce.jdk.version> 
</properties> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.3.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-connector</artifactId> 
     <version>10.0.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-dbcp2</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.13</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.12</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.thoughtworks.xstream</groupId> 
     <artifactId>xstream</artifactId> 
     <version>1.4.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.github.junrar</groupId> 
     <artifactId>junrar</artifactId> 
     <version>0.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.zeroturnaround</groupId> 
     <artifactId>zt-zip</artifactId> 
     <version>1.9</version> 
     <type>jar</type> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <warSourceDirectory>WebContent</warSourceDirectory> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

申し訳ありませんが、私の英語のために!

よろしくお願いいたします。 DorcílioNeto。

+0

を提供するとして、それを宣言することができますpomファイルを共有できますか?あなたのWARファイルには何がありますか? –

+0

したがって、 'ds.getConnection()'からどのタイプのObjectが返されていますか? –

+0

@JohnAment pom.xmlが追加されました。 –

答えて

1

aribeiroからの答えは正しい答えです:ビルドツール(Maven)でパッケージ化されたjarファイルは、warディレクトリのlibディレクトリにあり、wildfly-Classloaderと衝突します。あなたはあなたがEARをデプロイ

  • EclipseのJBossのツールと連携
  • のJBoss AS 7 ASまたはWildflyを持って

    • 追加、ここでは次の問題のための一般的なソリューションですまたはWAR、lib-FolderはMavenのようなビルドツールでパックされています

    • このようなエラーが発生します:examplepackage。ExcampleClassは、Java EEスペックを残すなどのJBoss/Wildfly固有のモジュール、ironjacamar、JSF-のimplとを使用するときにもっとも多く、それは、たまたまexamplepackage.ExcampleClass

    にキャストすることはできません。 Mavenは必要なjarファイルをlibディレクトリに置きます。しかし、JarsはすでにASのモジュールディレクトリにあります。私の経験によれば、はキャストできませんこの理由でエラーが発生しました。

    次に、提供されている依存関係を宣言して、mavenのlibディレクトリからjarを削除する必要があります。

    クラスを見つける場所、JBoss/Wildfly-Classloaderに伝えてください。これは、次のようにして行うことができます。

    プロジェクトのMANIFEST.MFへの依存性を通知します。 Eclipse-JBoss-Toolsはサーバー環境からクラスをロードするため、pomから依存関係を削除できます。 currect場合

    Dependencies: org.jboss.ironjacamar.jdbcadapters 
    

    それとも、JBossの-展開するstructure.xmlを使用し、その後、あなたはMavenを持つクラスをロードしますが、

    <dependencies> 
         <module name="org.jboss.ironjacamar.jdbcadapters" /> 
    

    も参照してくださいhttps://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly

  • +0

    それは働いて、ありがとう! –

    1

    明らかに、既に述べたように、依存関係のためにクラスローダーの問題が発生しています。

    これを解決するには、ワイルドフライコネクタの依存関係をと指定してとする必要があります。

    <dependency> 
        <groupId>org.wildfly</groupId> 
        <artifactId>wildfly-connector</artifactId> 
        <version>10.0.0.Final</version> 
        <scope>provided</scope> 
    </dependency> 
    

    WildFlyには既にJARが含まれています。次のフォルダに移動すると、それを見つけることができます:

    <wildfly-10.0.0.Final-dir>\modules\system\layers\base\org\jboss\as\connector\main 
    

    あなたのアプリケーションでそれを梱包する必要はありません。

    WildFly 10's Implicit module dependencies for deploymentsに記載されているように、JCAサブシステムを明示的にトリガする必要があります。 、そして、

    <?xml version="1.0" encoding="UTF-8"?> 
    <jboss-deployment-structure> 
        <deployment> 
         <dependencies> 
          <module name="org.jboss.ironjacamar.jdbcadapters" slot="main"/>    
         </dependencies> 
        </deployment> 
    </jboss-deployment-structure> 
    

    をごのjboss-展開するstructure.xmlからWEB-INFフォルダを追加します。そのため、1次の内容ののjboss-展開するstructure.xmlを利用することができますあなたのWARの

    関連する問題